summaryrefslogtreecommitdiff
path: root/utils/tuning/libtuning/modules/module.py
blob: de62438430063ce0d053c9f4427d89607cb9d146 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright (C) 2022, Paul Elder <paul.elder@ideasonboard.com>
#
# Base class for algorithm-specific tuning modules


# @var type Type of the module. Defined in the base module.
# @var out_name The key that will be used for the algorithm in the algorithms
#               dictionary in the tuning output file
# @var hr_name Human-readable module name, mostly for debugging
class Module(object):
    type = 'base'
    hr_name = 'Base Module'
    out_name = 'GenericAlgorithm'

    def __init__(self):
        pass

    def validate_config(self, config: dict) -> bool:
        raise NotImplementedError

    # @brief Do the module's processing
    # @param config Full configuration from the input configuration file
    # @param images List of images to process
    # @param outputs The outputs of all modules that were executed before this
    #                module. Note that this is an input parameter, and the
    #                output of this module should be returned directly
    # @return Result of the module's processing. It may be empty. None
    #         indicates failure and that the result should not be used.
    def process(self, config: dict, images: list, outputs: dict) -> dict:
        raise NotImplementedError
enumerator_ = DeviceEnumerator::create(); if (!enumerator_) { cerr << "Failed to create device enumerator" << endl; return TestFail; } if (enumerator_->enumerate()) { cerr << "Failed to enumerate media devices" << endl; return TestFail; } DeviceMatch dm(driver_); dm.add(entity_); media_ = enumerator_->search(dm); if (!media_) return TestSkip; MediaEntity *entity = media_->getEntityByName(entity_); if (!entity) return TestSkip; capture_ = new V4L2VideoDevice(entity); if (!capture_) return TestFail; if (!media_->acquire()) return TestFail; int ret = media_->disableLinks(); media_->release(); if (ret) return TestFail; if (capture_->open()) return TestFail; V4L2DeviceFormat format = {}; if (capture_->getFormat(&format)) return TestFail; if (driver_ == "vimc") { sensor_ = new CameraSensor(media_->getEntityByName("Sensor A")); if (sensor_->init()) return TestFail; debayer_ = new V4L2Subdevice(media_->getEntityByName("Debayer A")); if (debayer_->open()) return TestFail; format.fourcc = V4L2_PIX_FMT_SBGGR8; V4L2SubdeviceFormat subformat = {}; subformat.mbus_code = MEDIA_BUS_FMT_SBGGR8_1X8; subformat.size = format.size; if (sensor_->setFormat(&subformat)) return TestFail; if (debayer_->setFormat(0, &subformat)) return TestFail; } format.size.width = 640; format.size.height = 480; if (capture_->setFormat(&format)) return TestFail; return TestPass; } void V4L2VideoDeviceTest::cleanup() { capture_->streamOff(); capture_->releaseBuffers(); capture_->close(); delete debayer_; delete sensor_; delete capture_; };