Skip to content

Audio and Video decoder capabilities read from YAML configuration file#467

Open
skywojciechowskim wants to merge 16 commits intomasterfrom
MediaPipelineCapabilitiesNewConfig
Open

Audio and Video decoder capabilities read from YAML configuration file#467
skywojciechowskim wants to merge 16 commits intomasterfrom
MediaPipelineCapabilitiesNewConfig

Conversation

@skywojciechowskim
Copy link
Copy Markdown
Contributor

Summary: Audio and Video decoder capabilities read from YAML configuration file
Type: Feature
Test Plan: UT/CT, Fullstack
Jira: RDKEMW-15078

Copilot AI review requested due to automatic review settings March 26, 2026 12:14
@github-actions
Copy link
Copy Markdown

Pull request must be merged with a description containing the required fields,

Summary:
Type: Feature/Fix/Cleanup
Test Plan:
Jira:

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.

@rdkcmf-jenkins
Copy link
Copy Markdown
Contributor

b'## Blackduck scan failure details

Summary: 0 violations, 0 files pending approval, 1 file pending identification.

  • Protex Server Path: /home/blackduck/github/rialto/467/rdkcentral/rialto

  • Commit: 020941f

Report detail: gist'

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 YamlCppWrapper to 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.

Comment thread wrappers/source/YamlCppWrapper.cpp Outdated
Comment thread wrappers/source/YamlCppWrapper.cpp Outdated
Comment thread wrappers/source/YamlCppWrapper.cpp Outdated
Comment thread wrappers/source/YamlCppWrapper.cpp Outdated
Comment thread wrappers/interface/IYamlCppWrapper.h Outdated
Comment thread .github/workflows/native_rialto_build.yml Outdated
Comment thread wrappers/source/YamlCppWrapper.cpp
Comment thread wrappers/source/YamlCppWrapper.cpp
Comment thread wrappers/source/YamlCppWrapper.cpp Outdated
@rdkcmf-jenkins
Copy link
Copy Markdown
Contributor

b'## Blackduck scan failure details

Summary: 0 violations, 0 files pending approval, 1 file pending identification.

  • Protex Server Path: /home/blackduck/github/rialto/467/rdkcentral/rialto

  • Commit: f0f1a58

Report detail: gist'

@rdkcmf-jenkins
Copy link
Copy Markdown
Contributor

b'## WARNING: A Blackduck scan failure has been waived

A prior failure has been upvoted

  • Upvote reason: ok

  • Commit: f0f1a58
    '

@github-actions
Copy link
Copy Markdown

Coverage statistics of your commit:
WARNING: Lines coverage decreased from: 84.4% to 80.7%
WARNING: Functions coverage decreased from: 92.5% to 90.2%

Copilot AI review requested due to automatic review settings March 27, 2026 08:22
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread wrappers/source/YamlCppWrapper.cpp
Comment thread wrappers/source/YamlCppWrapper.cpp Outdated
Comment thread wrappers/source/YamlCppWrapper.cpp
Comment thread wrappers/source/YamlCppWrapper.cpp
Comment thread wrappers/source/YamlCppWrapper.cpp Outdated
@github-actions
Copy link
Copy Markdown

Coverage statistics of your commit:
WARNING: Lines coverage decreased from: 84.4% to 80.7%
WARNING: Functions coverage decreased from: 92.5% to 90.2%

@github-actions
Copy link
Copy Markdown

Coverage statistics of your commit:
WARNING: Lines coverage decreased from: 84.4% to 80.7%
WARNING: Functions coverage decreased from: 92.5% to 90.2%

Copilot AI review requested due to automatic review settings April 8, 2026 09:38
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread wrappers/CMakeLists.txt
Comment on lines 124 to 128
PRIVATE
${WRAPPER_LIBS}
${GStreamerApp_LIBRARIES}
yaml-cpp
)
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
*/

#include <cstdint>
#include <map>
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

<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.

Suggested change
#include <map>

Copilot uses AI. Check for mistakes.
*/

#include <cstdint>
#include <map>
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

<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.

Suggested change
#include <map>

Copilot uses AI. Check for mistakes.
{
return ((expectedDecoderCapabilities.interfaceVersion == arg.interfaceVersion) &&
(expectedDecoderCapabilities.schemaVersion == arg.schemaVersion) &&
(expectedDecoderCapabilities.capabilities.size() == arg.capabilities.size()));
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
(expectedDecoderCapabilities.capabilities.size() == arg.capabilities.size()));
::testing::ExplainMatchResult(::testing::ElementsAreArray(expectedDecoderCapabilities.capabilities),
arg.capabilities, result_listener));

Copilot uses AI. Check for mistakes.
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 8, 2026

Coverage statistics of your commit:
WARNING: Lines coverage decreased from: 84.4% to 80.7%
WARNING: Functions coverage decreased from: 92.5% to 90.2%

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants