Audio and Video decoder capabilities read from YAML configuration file#467
Audio and Video decoder capabilities read from YAML configuration file#467skywojciechowskim wants to merge 16 commits intomasterfrom
Conversation
|
Pull request must be merged with a description containing the required fields, Summary: If there is no jira releated to this change, please put 'Jira: NO-JIRA'. Description can be changed by editing the top comment on your pull request and making a new commit. |
There was a problem hiding this comment.
Pull request overview
Feature adds YAML-backed audio/video decoder capabilities and exposes them through server/client capabilities APIs and the IPC layer.
Changes:
- Introduces
YamlCppWrapperto parse decoder capabilities from YAML config files and wires it into the wrappers factory/accessor system. - Adds public capability data types (
AudioDecoderCapabilities,VideoDecoderCapabilities) and new IPC/proto RPCs for retrieving them. - Updates server/client implementations plus unit/component tests and CI dependencies to cover the new APIs.
Reviewed changes
Copilot reviewed 60 out of 60 changed files in this pull request and generated 15 comments.
Show a summary per file
| File | Description |
|---|---|
| wrappers/source/YamlCppWrapperAccessor.cpp | Factory accessor glue for the new YAML wrapper factory. |
| wrappers/source/YamlCppWrapper.cpp | YAML parsing + construction of audio/video capability structures. |
| wrappers/source/FactoryAccessor.cpp | Adds yamlCppWrapperFactory() creation to the wrapper factory accessor. |
| wrappers/interface/IYamlCppWrapper.h | New wrapper interface for reading decoder capabilities from YAML. |
| wrappers/interface/IFactoryAccessor.h | Extends factory accessor interface to provide IYamlCppWrapperFactory. |
| wrappers/include/YamlCppWrapper.h | Concrete wrapper/factory declarations. |
| wrappers/include/FactoryAccessor.h | Adds m_yamlCppWrapperFactory + accessor override. |
| wrappers/CMakeLists.txt | Adds yaml-cpp dependency and builds new wrapper sources. |
| tests/unittests/media/server/service/mediaPipelineService/MediaPipelineServiceTestsFixture.h | Adds test helpers for new capabilities calls. |
| tests/unittests/media/server/service/mediaPipelineService/MediaPipelineServiceTestsFixture.cpp | Implements expectations + assertions for new capabilities calls. |
| tests/unittests/media/server/service/mediaPipelineService/MediaPipelineServiceTests.cpp | Adds unit tests for audio/video capabilities retrieval. |
| tests/unittests/media/server/service/CMakeLists.txt | Adds matchers include dir for new matcher usage. |
| tests/unittests/media/server/mocks/service/MediaPipelineServiceMock.h | Extends service mock with new capabilities methods. |
| tests/unittests/media/server/mocks/main/MediaPipelineCapabilitiesMock.h | Extends main capabilities mock with new methods. |
| tests/unittests/media/server/mocks/gstplayer/GstCapabilitiesMock.h | Extends gst capabilities mock with new methods. |
| tests/unittests/media/server/main/mediaPipelineCapabilities/MediaPipelineCapabilitiesTest.cpp | Adds tests for new server-side capabilities API. |
| tests/unittests/media/server/main/CMakeLists.txt | Adds matchers include dir for new matcher usage. |
| tests/unittests/media/server/ipc/mediaPipelineCapabilitiesModule/MediaPipelineCapabilitiesModuleServiceTestsFixture.h | Adds IPC service fixture helpers for new RPCs. |
| tests/unittests/media/server/ipc/mediaPipelineCapabilitiesModule/MediaPipelineCapabilitiesModuleServiceTestsFixture.cpp | Implements new RPC request/response helpers and expectations. |
| tests/unittests/media/server/ipc/mediaPipelineCapabilitiesModule/MediaPipelineCapabilitiesModuleServiceTests.cpp | Adds IPC module service tests for new RPCs. |
| tests/unittests/media/server/gstplayer/genericPlayer/GstCapabilitiesTest.cpp | Updates GstCapabilities tests for YAML wrapper dependency + new getters. |
| tests/unittests/media/client/mocks/ipc/MediaPipelineCapabilitiesIpcMock.h | Extends client IPC mock with new methods. |
| tests/unittests/media/client/main/mediaPipelineCapabilities/MediaPipelineCapabilitiesTest.cpp | Adds client-side capabilities tests for new getters. |
| tests/unittests/media/client/ipc/mediaPipelineCapabilitiesIpc/MediaPipelineCapabilitiesIpcTest.cpp | Adds IPC client tests for new capabilities RPCs. |
| tests/componenttests/server/tests/mediaPipelineCapabilities/MediaPipelineCapabilitiesTest.cpp | Adds component tests for new capabilities RPCs. |
| tests/componenttests/server/fixtures/RialtoServerComponentTest.h | Adds YAML wrapper mocks to server component-test fixture. |
| tests/componenttests/server/fixtures/RialtoServerComponentTest.cpp | Wires YAML wrapper mocks and expected config responses. |
| tests/componenttests/server/common/MessageBuilders.h | Adds request builders for new capabilities RPCs. |
| tests/componenttests/server/common/MessageBuilders.cpp | Implements request builders for new capabilities RPCs. |
| tests/componenttests/server/common/Constants.h | Adds constants for expected audio/video capabilities in CTs. |
| tests/componenttests/server/common/ActionTraits.h | Adds CT action traits for new RPC methods. |
| tests/componenttests/client/tests/mse/MediaPipelineCapabilitiesTest.cpp | Extends client CT flow to call new capabilities APIs. |
| tests/componenttests/client/tests/base/MediaPipelineTestMethods.h | Adds CT helper declarations for new capabilities calls. |
| tests/componenttests/client/tests/base/MediaPipelineTestMethods.cpp | Implements CT helper expectations + assertions for new capabilities calls. |
| tests/componenttests/client/mocks/MediaPipelineCapabilitiesModuleMock.h | Extends CT protobuf stub mock with new RPCs + response builders. |
| tests/common/matchers/MediaPipelineStructureMatchers.h | Adds matcher for comparing decoder capabilities structures. |
| tests/common/externalLibraryMocks/YamlCppWrapperMock.h | Adds mocks for IYamlCppWrapper and its factory. |
| proto/mediapipelinecapabilitiesmodule.proto | Adds new RPCs + messages/enums for audio/video capabilities transport. |
| media/server/service/source/MediaPipelineService.h | Exposes new capabilities getters on server service. |
| media/server/service/source/MediaPipelineService.cpp | Implements service getters delegating to capabilities component. |
| media/server/service/include/IMediaPipelineService.h | Extends service interface with new capabilities getters. |
| media/server/main/source/MediaPipelineCapabilities.cpp | Exposes new getters delegating to IGstCapabilities. |
| media/server/main/include/MediaPipelineCapabilities.h | Extends server capabilities class interface. |
| media/server/ipc/source/MediaPipelineCapabilitiesModuleService.cpp | Adds RPC implementations + conversions to/from proto for capabilities. |
| media/server/ipc/include/MediaPipelineCapabilitiesModuleService.h | Declares new RPC handler methods. |
| media/server/gstplayer/source/GstCapabilities.cpp | Injects YAML wrapper, loads capabilities at construction, adds getters. |
| media/server/gstplayer/interface/IGstCapabilities.h | Adds new capabilities getters to gst capabilities interface. |
| media/server/gstplayer/include/GstCapabilities.h | Adds YAML wrapper dependency + stores capabilities in members. |
| media/public/include/VideoDecoderCapabilities.h | New public types for video decoder capabilities. |
| media/public/include/MediaCommon.h | Adds DecoderCapabilitiesStatus enum for config read result. |
| media/public/include/IMediaPipelineCapabilities.h | Extends public capabilities interface with new getters. |
| media/public/include/AudioDecoderCapabilities.h | New public types for audio decoder capabilities. |
| media/public/CMakeLists.txt | Installs the new public headers. |
| media/client/main/source/MediaPipelineCapabilities.cpp | Adds client-facing getters delegating to IPC implementation. |
| media/client/main/include/MediaPipelineCapabilities.h | Declares client-facing getters. |
| media/client/ipc/source/MediaPipelineCapabilitiesIpc.cpp | Implements new IPC calls + proto-to-struct conversions. |
| media/client/ipc/include/MediaPipelineCapabilitiesIpc.h | Declares new IPC getters. |
| .github/workflows/valgrind_ut.yml | Adds yaml-cpp dev package to CI dependencies. |
| .github/workflows/native_rialto_build.yml | Adds yaml-cpp dev package to native build workflow dependencies. |
| .github/workflows/actions/init_ut/action.yml | Adds yaml-cpp dev package to UT init action dependencies. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
b'## WARNING: A Blackduck scan failure has been waived A prior failure has been upvoted
|
|
Coverage statistics of your commit: |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 60 out of 60 changed files in this pull request and generated 7 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
Coverage statistics of your commit: |
|
Coverage statistics of your commit: |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 59 out of 59 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| PRIVATE | ||
| ${WRAPPER_LIBS} | ||
| ${GStreamerApp_LIBRARIES} | ||
| yaml-cpp | ||
| ) |
There was a problem hiding this comment.
yaml-cpp is linked unconditionally, but the yaml wrapper sources and find_package(yaml-cpp REQUIRED) are only enabled when WRAPPERS_ENABLED is set. This can introduce an unnecessary hard dependency (or link failure) for UnitTests/ComponentTests builds where wrappers are disabled. Consider only linking yaml-cpp when WRAPPERS_ENABLED (same condition as WRAPPER_SOURCES) or guard the target_link_libraries entry similarly.
| */ | ||
|
|
||
| #include <cstdint> | ||
| #include <map> |
There was a problem hiding this comment.
<map> is included but not used in this header, which adds unnecessary compile-time dependencies. Consider removing unused standard library includes here (and similarly in related capability headers) to keep public headers minimal.
| #include <map> |
| */ | ||
|
|
||
| #include <cstdint> | ||
| #include <map> |
There was a problem hiding this comment.
<map> is included but not used in this header. Since this is a public header, consider removing unused includes to reduce compile time and avoid forcing downstream code to pull in extra headers.
| #include <map> |
| { | ||
| return ((expectedDecoderCapabilities.interfaceVersion == arg.interfaceVersion) && | ||
| (expectedDecoderCapabilities.schemaVersion == arg.schemaVersion) && | ||
| (expectedDecoderCapabilities.capabilities.size() == arg.capabilities.size())); |
There was a problem hiding this comment.
decoderCapabilitiesMatcher only checks interface/schema versions and the number of capability entries, so tests using it won’t catch regressions in the actual capability content (profiles/limits/dynamic ranges). Consider extending the matcher (or the specific tests) to validate at least one populated capability field end-to-end (e.g., a profile enum and a numeric limit) so serialization/deserialization bugs are detected.
| (expectedDecoderCapabilities.capabilities.size() == arg.capabilities.size())); | |
| ::testing::ExplainMatchResult(::testing::ElementsAreArray(expectedDecoderCapabilities.capabilities), | |
| arg.capabilities, result_listener)); |
|
Coverage statistics of your commit: |
Summary: Audio and Video decoder capabilities read from YAML configuration file
Type: Feature
Test Plan: UT/CT, Fullstack
Jira: RDKEMW-15078