summaryrefslogtreecommitdiff
path: root/utils/tuning/libtuning/modules/module.py
diff options
context:
space:
mode:
authorPaul Elder <paul.elder@ideasonboard.com>2022-11-11 02:07:27 +0900
committerPaul Elder <paul.elder@ideasonboard.com>2022-11-25 15:37:30 +0900
commitb8af2500fa900a1b18a554abf98e3f0fcb7bb350 (patch)
treebb4c4c1e1ff1054bd6081bcfe7f16d0c038b8e66 /utils/tuning/libtuning/modules/module.py
parentdb99d966633c5d7a5b33d03d653f1839d9feaaea (diff)
utils: tuning: libtuning: Implement extensible components of libtuning
Implement the extensible components of libtuning. This includes: - Parsers, for supporting different types of input config file formats - Generators, for supporting different types of output tuning file formats - Modules, for supporting different tuning modules for different algorithms and platforms No parsers, generators, or modules are actually implemented. Only the base classes are implemented. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'utils/tuning/libtuning/modules/module.py')
-rw-r--r--utils/tuning/libtuning/modules/module.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/utils/tuning/libtuning/modules/module.py b/utils/tuning/libtuning/modules/module.py
new file mode 100644
index 00000000..12e2fc7c
--- /dev/null
+++ b/utils/tuning/libtuning/modules/module.py
@@ -0,0 +1,32 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+# Copyright (C) 2022, Paul Elder <paul.elder@ideasonboard.com>
+#
+# module.py - 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