Conversation
RDKEMW-9809 : Latest AAMP sync
To resolve MacOS compilation failure
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
RDKEMW-11934 : Fix build failure in MAC
main merge
RDKEMW-13297:Player-interface component separation phase1
|
I have read the CLA Document and I hereby sign the CLA 2 out of 3 committers have signed the CLA. |
There was a problem hiding this comment.
Pull request overview
This PR consolidates several middleware/platform interface behaviors (notably AC4 track selection), expands unit test coverage, and reworks parts of the build/test infrastructure (coverage tooling, fake/mock plumbing, and pkg-config packaging).
Changes:
- Move AC4 track selection to a default
SocInterfaceimplementation and remove per-vendor duplicates. - Add/extend unit tests and fakes/mocks (DRM, InterfacePlayer, PlayerUtils, Externals RDK), and update several utest CMake targets to use
CodeCoverage. - Introduce/adjust build & packaging artifacts (pkg-config
.pc.intemplates, install scripts, TagLib compat header) and extend media/DRM data plumbing (DemuxDataTypes.h, new caps, buffer helper).
Reviewed changes
Copilot reviewed 128 out of 141 changed files in this pull request and generated 10 comments.
Show a summary per file
| File | Description |
|---|---|
| vendor/realtek/RealtekSocInterface.h | Remove AC4 override declaration |
| vendor/realtek/RealtekSocInterface.cpp | Remove AC4 override implementation |
| vendor/default/DefaultSocInterface.h | Remove AC4 override declaration |
| vendor/default/DefaultSocInterface.cpp | Remove AC4 override implementation; tweak comment |
| vendor/brcm/BrcmSocInterface.h | Remove stub AC4 override |
| vendor/brcm/BrcmSocInterface.cpp | Trailing whitespace/newline change |
| vendor/amlogic/AmlogicSocInterface.h | Remove AC4 override declaration |
| vendor/amlogic/AmlogicSocInterface.cpp | Remove AC4 override implementation; whitespace |
| vendor/SocInterface.h | Make SetAC4Tracks non-pure |
| vendor/SocInterface.cpp | Add default SetAC4Tracks implementation |
| test/utests/tests/base16Tests/CMakeLists.txt | Switch coverage handling |
| test/utests/tests/TextStyleAttributes/CMakeLists.txt | Adjust includes/coverage/linking |
| test/utests/tests/PluginsTests/CMakeLists.txt | Simplify deps/linking; add fake source |
| test/utests/tests/PlayerUtilsTests/PlayerUtilsTests.cpp | New gtest main |
| test/utests/tests/PlayerUtilsTests/CMakeLists.txt | New PlayerUtils tests target |
| test/utests/tests/PlayerExternalsRdkTests/PlayerExternalsRdkInterfaceTests.cpp | New gtest main |
| test/utests/tests/PlayerExternalsRdkTests/CMakeLists.txt | New/rewired externals RDK tests target |
| test/utests/tests/OcdmBasicSessionAdapterTests/FunctionalTests.cpp | Fix test setup ordering/expectations |
| test/utests/tests/OcdmBasicSessionAdapterTests/CMakeLists.txt | Coverage + include cleanup |
| test/utests/tests/OCDMSessionAdapter/KeyUpdateTests.cpp | Add keyUpdate usable-keys tests |
| test/utests/tests/OCDMSessionAdapter/CMakeLists.txt | Add new test source; coverage changes |
| test/utests/tests/InterfacePlayerTests/InterfacePlayerTests.cpp | New gtest main |
| test/utests/tests/InterfacePlayerTests/CMakeLists.txt | New/rewired InterfacePlayer tests target |
| test/utests/tests/GstUtilsTests/GstUtilsTests.cpp | Add AAC RAW caps test coverage |
| test/utests/tests/GstUtilsTests/CMakeLists.txt | Coverage handling change |
| test/utests/tests/GstPlayer/PauseOnPlaybackTests.cpp | Update test setup for video sink/context |
| test/utests/tests/GstPlayer/FunctionalTests.cpp | Remove dead/commented code; adjust params table comment |
| test/utests/tests/GstPlayer/CMakeLists.txt | Simplify deps; adjust fake sources |
| test/utests/tests/GstHandlerControlTests/CMakeLists.txt | Coverage handling change |
| test/utests/tests/DrmUrlTests/CMakeLists.txt | Include path refactor; add simulator define; coverage |
| test/utests/tests/DrmSessionManagerTests/DrmSessionManagerTests.cpp | Update copyright year |
| test/utests/tests/DrmSessionManagerTests/CMakeLists.txt | New DrmSessionManager tests target |
| test/utests/tests/DrmSecureClient/CMakeLists.txt | Simplify linking; coverage handling |
| test/utests/tests/DrmOcdm/DrmSessionFactoryTests.cpp | Remove tests file |
| test/utests/tests/DrmOcdm/DrmMemorySystemTests.cpp | Remove tests file |
| test/utests/tests/DrmOcdm/DrmHelperTests.cpp | Remove verbose/skip tests block |
| test/utests/tests/DrmOcdm/CMakeLists.txt | Reduce test set; add coverage/lcov setup; add defines |
| test/utests/tests/DrmAes/CMakeLists.txt | Remove DrmAes test target |
| test/utests/tests/CMakeLists.txt | Add new test subdirectories; remove others |
| test/utests/tests/Base64PLAYER/CMakeLists.txt | Coverage handling change |
| test/utests/tests/Base64PLAYER/Base64Tests.cpp | Update base64 decode API usage |
| test/utests/run.sh | Rename vars; add pkg-config paths; add DS define; formatting |
| test/utests/mocks/MockSocInterface.h | New mock |
| test/utests/mocks/MockPlayerConfig.h | Rename include guards |
| test/utests/mocks/MockPacketSender.h | Remove mock header |
| test/utests/mocks/MockOpenCdmSessionAdapter.h | Add missing includes + new mock methods |
| test/utests/mocks/MockHlsDrmSession.h | Remove mock header |
| test/utests/mocks/MockGstUtils.h | Extend interface + mock for buffer creation |
| test/utests/mocks/MockGStreamer.h | Add missing mocks (structure free, caps/buffer helpers) |
| test/utests/mocks/MockGLib.h | Add more g_object_set/get + signal helpers |
| test/utests/mocks/MockDrmSessionManager.h | Replace invalid “main” with proper mock |
| test/utests/mocks/MockDrmSessionFactory.h | Add DrmSessionFactory mock wrapper |
| test/utests/mocks/MockDrmSession.h | Rework mock + include guards/comments |
| test/utests/mocks/MockDrmHelper.h | Guard rename; signature fixes |
| test/utests/fakes/Fakeopencdmsessionadapter.cpp | Delegate more calls to session-adapter mock |
| test/utests/fakes/FakeSocInterface.cpp | Move AC4 to SocInterface fake; stubs/formatting |
| test/utests/fakes/FakePlayerExternalsRdkInterface.cpp | New fake externals RDK implementation |
| test/utests/fakes/FakePacketSender.cpp | Remove fake packet sender |
| test/utests/fakes/FakeGstUtils.cpp | Delegate GstUtils helpers to mock |
| test/utests/fakes/FakeGStreamer.cpp | Delegate more APIs to mock (caps/structure/buffer) |
| test/utests/fakes/FakeGLib.cpp | Extend vararg routing for g_object_set/get and signals |
| test/utests/fakes/FakeDrmSessionFactory.cpp | New fake delegating to mock factory |
| test/utests/fakes/FakeDRMSessionManager.cpp | New fake delegating setVideoWindowSize |
| test/utests/fakes/FakeCrypto.cpp | Remove OpenSSL crypto stubs |
| test/utests/fakes/FakeContentSecurityManagerSession.cpp | New CSM session fake |
| test/utests/fakes/FakeContentSecurityManager.cpp | New CSM fake + uuid stubs |
| test/utests/fakes/FakeBase64.cpp | Replace with stubbed base64_Encode |
| test/utests/fakes/CMakeLists.txt | Add externals/rdk include; formatting |
| test/utests/drm/mocks/MockOpenCdm.h | Rename include guards |
| test/utests/cmake_exclude_file.list | New coverage excludes helper |
| test/utests/ReadMe.md | Rewrite/refresh microtests documentation |
| test/utests/CMakeLists.txt | Rework coverage + dependency discovery |
| subtec/subtecparser/TextStyleAttributes.h | Doc comment edits (param tag typo introduced) |
| scripts/taglib_compat.h | New TagLib v2 compatibility shim |
| scripts/install_subtec.sh | Rework gdbus-codegen selection/patching; robustness |
| scripts/install_options.sh | Update default branch option |
| scripts/install_gstreamer.sh | Add TagLib compat include for gst-plugins-good build |
| playerLogManager/CMakeLists.txt | Add version, default prefix, pkg-config install |
| playerJsonObject/PlayerJsonObject.cpp | Update base64 decode call (explicit length) |
| playerJsonObject/CMakeLists.txt | Add version, default prefix, pkg-config install |
| pkgconfig/libsubtec_connector.pc.in | New pkg-config template |
| pkgconfig/libsubtec.pc.in | New pkg-config template |
| pkgconfig/libplayerlogmanager.pc.in | New pkg-config template |
| pkgconfig/libplayerjsonobject.pc.in | New pkg-config template |
| pkgconfig/libplayergstinterface.pc.in | New pkg-config template |
| pkgconfig/libplayerfbinterface.pc.in | New pkg-config template |
| pkgconfig/libbaseconversion.pc.in | New pkg-config template |
| install-middleware.sh | Add glib install step; cleanup |
| gst-plugins/gstinit.cpp | Remove version strings from init logging |
| gst-plugins/gst_subtec/CMakeLists.txt | Switch C++ standard; link/include adjustments |
| gst-plugins/CMakeLists.txt | Tidy flags + Darwin video linking; remove amlogic block |
| externals/rdk/PlayerExternalsRdkInterface.h | Add DS event interfaces + power/fake-tune callbacks |
| externals/rdk/PlayerExternalsRdkInterface.cpp | Implement DS event registration + power/fake-tune |
| externals/rdk/IIarm/DeviceIARMInterface.h | Formatting + minor cleanup |
| externals/rdk/IIarm/DeviceIARMInterface.cpp | Add preinit decoding power handling + base64 decode update |
| externals/contentsecuritymanager/SecManagerThunder.cpp | Fix license header; base64 decode API update |
| externals/contentsecuritymanager/IFirebolt/ContentProtectionFirebolt.cpp | Fix license header; base64 decode API update |
| externals/contentsecuritymanager/ContentSecurityManagerSession.cpp | Fix license header typo |
| externals/contentsecuritymanager/ContentSecurityManager.cpp | Fix license header typo |
| externals/PlayerExternalsInterfaceBase.h | Add power event + fake tune callback API |
| externals/PlayerExternalsInterface.h | Add new externals APIs + IsDevicePropertiesPresent |
| externals/PlayerExternalsInterface.cpp | Wire new externals APIs + device-properties helper |
| drm/processProtectionHls.cpp | base64 decode API update |
| drm/ocdm/opencdmsessionadapter.h | Mark getUsableKeys() override |
| drm/ocdm/opencdmsessionadapter.cpp | Add key validation + usable key caching; new error state |
| drm/helper/WidevineDrmHelper.cpp | Log key IDs more safely/debuggable |
| drm/DrmUtils.h | Add new DRM error code |
| drm/DrmUtils.cpp | Fix destructor spelling |
| drm/DrmSessionManager.h | Expose cache mutex; remove test helper; minor whitespace |
| drm/DrmSessionManager.cpp | Delete config param; better logging; key normalization changes |
| drm/DrmSession.h | Add new KeyState for session creation failure |
| drm/DrmSession.cpp | Fix double semicolon |
| drm/ClearKeyDrmSession.cpp | Whitespace cleanup |
| closedcaptions/rialto/PlayerRialtoCCManager.cpp | Preserve format + prefix track IDs for Rialto |
| closedcaptions/PlayerCCManager.h | Track format stored; RestoreCC signature updated |
| closedcaptions/PlayerCCManager.cpp | RestoreCC uses stored format; reset state updates |
| baseConversion/_base64.h | Remove old decode overload declaration |
| baseConversion/_base64.cpp | Remove old decode overload definition |
| baseConversion/CMakeLists.txt | Add version/default prefix + pkg-config install |
| aamp_sync_cid.txt | New sync marker |
| PlayerUtils.cpp | base64 decode API update |
| OSX/OSxSetup.md | Update clone URL/branch |
| InterfacePlayerRDK.h | Replace raw buffer send helper with MediaSample; add caps setter |
| InterfacePlayerPriv.h | Add mp4demux playback semantics flag |
| GstUtils.h | Add AAC RAW format + buffer helper API |
| GstUtils.cpp | Implement AAC RAW caps + buffer creation helper; newline fixes |
| DemuxDataTypes.h | New media sample/codec/DRM datatypes header |
| CMakeLists.txt | Add version/default prefix; install headers; pkg-config generation |
Comments suppressed due to low confidence (3)
gst-plugins/gst_subtec/CMakeLists.txt:27
pkg_check_modules(GSTREAMERBASE ...)is pointing atgstreamer-app-1.0, but this target links${GSTREAMERBASE_LIBRARIES}as if it were gstbase. On Linux this can lead to missinglibgstbase-1.0symbols. Please switch GSTREAMERBASE togstreamer-base-1.0and add a separate GSTREAMERAPP module if needed.
test/utests/tests/PlayerExternalsRdkTests/CMakeLists.txt:23EXEC_NAMEdoes not match the directory name (PlayerExternalsRdkTests). The utests README notes the executable name must match the directory for combined JSON report generation; please alignEXEC_NAMEaccordingly to avoid missing results in aggregated reports.
test/utests/tests/InterfacePlayerTests/CMakeLists.txt:23EXEC_NAMEdoes not match the directory name (InterfacePlayerTests). The utests README indicates these must match for JSON report generation; please renameEXEC_NAMEto match the folder so results are picked up consistently.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| pkg_check_modules(GSTREAMER REQUIRED gstreamer-1.0) | ||
| pkg_check_modules(GSTREAMERBASE REQUIRED gstreamer-base-1.0) | ||
| pkg_check_modules(GSTREAMERAPP REQUIRED gstreamer-app-1.0) | ||
| pkg_check_modules(GSTREAMERBASE REQUIRED gstreamer-app-1.0) | ||
| pkg_check_modules(GLIB REQUIRED glib-2.0) |
There was a problem hiding this comment.
GSTREAMERBASE is being resolved from gstreamer-app-1.0, which will not provide the gstbase headers/libs (e.g., GstBaseTransform) that callers expect. Use gstreamer-base-1.0 for GSTREAMERBASE and add a separate pkg_check_modules(GSTREAMERAPP REQUIRED gstreamer-app-1.0) if app is needed, then update the include/link variables accordingly.
| message("using gstreamer-1.0") | ||
| pkg_check_modules(GSTREAMER REQUIRED gstreamer-1.0) | ||
| pkg_check_modules(GSTREAMERBASE REQUIRED gstreamer-app-1.0) | ||
| pkg_check_modules(GSTREAMERVIDEO REQUIRED gstreamer-video-1.0) | ||
|
|
There was a problem hiding this comment.
GSTREAMERBASE is resolved from gstreamer-app-1.0 here, but ${GSTREAMERBASE_INCLUDE_DIRS} / ${GSTREAMERBASE_LIBRARIES} are used as gstbase dependencies. This will drop linking to libgstbase-1.0 on Linux. Use gstreamer-base-1.0 for GSTREAMERBASE and add GSTREAMERAPP separately if required.
| add_executable(${EXEC_NAME} | ||
| ${TEST_SOURCES} | ||
| ${MOCK_SOURCES} | ||
| ${FAKE_SOURCES} | ||
| ${PLAYER_SOURCES}) |
There was a problem hiding this comment.
${FAKE_SOURCES} is referenced in add_executable(...), but the file defines FAKE_SOURCE (singular). This will drop the fake source file from the target (or error if unset). Rename consistently (prefer plural) and ensure it points at an existing path.
| set(FAKE_SOURCES ${UTESTS_ROOT}/fakes/FakeGStreamer.cpp | ||
| ${UTESTS_ROOT}fakes/FakeGLib.cpp | ||
| ${UTESTS_ROOT}/fakes/FakeGstUtils.cpp | ||
| ${UTESTS_ROOT}/fakes/FakeSocInterface.cpp) | ||
| ${UTESTS_ROOT}fakes/FakeGLib.cpp) | ||
|
|
There was a problem hiding this comment.
The FAKE_SOURCES path ${UTESTS_ROOT}fakes/FakeGLib.cpp is missing a '/' after ${UTESTS_ROOT}. This will cause the fake source not to be found on disk during configure/build.
| include_directories(${PLAYER_ROOT} ${PLAYER_ROOT}/test/aampcli ${PLAYER_ROOT}/drm ${PLAYER_ROOT}/drm/helper ${PLAYER_ROOT}/subtitle ${PLAYER_ROOT}/middleware/subtitle ${PLAYER_ROOT}/downloader ${PLAYER_ROOT}/isobmff ${PLAYER_ROOT}/subtec/subtecparser ${PLAYER_ROOT}/playerjsonobject ${PLAYER_ROOT}/subtec/libsubtec ${PLAYER_ROOT}/externals/contentsecuritymanager) | ||
| include_directories(${PLAYER_ROOT}/tsb/api) |
There was a problem hiding this comment.
include_directories(... ${PLAYER_ROOT}/playerjsonobject ...) uses a path that does not exist in this repo (playerJsonObject is capitalized). On case-sensitive filesystems (Linux) this will break the build; update the include path to match the actual directory name.
| #include "DrmSessionFactory.h" | ||
| #include "MockDrmSessionFactory.h" | ||
|
|
||
| // Global pointer to the mock DrmSessionFactory instance | ||
| MockDrmSessionFactory* g_MockDrmSessionFactory = nullptr; | ||
|
|
||
| /** |
There was a problem hiding this comment.
The mock global is declared as g_mockDrmSessionFactory in the header, but this file defines g_MockDrmSessionFactory (different name/casing) and DrmSessionFactory::GetDrmSession() checks the latter. This makes it impossible for tests to set the mock via the declared symbol. Use a single consistent global name across header and implementation.
| set(FAKE_SOURCE ${UTEST_ROOT}/fakes/FakeDRMSessionManager.cpp) | ||
|
|
There was a problem hiding this comment.
UTEST_ROOT is not defined (this file defines UTESTS_ROOT), and the variable name is FAKE_SOURCE here but later referenced as FAKE_SOURCES. This will fail CMake configure/generate. Align the variable names and use the correct root variable.
| if (CMAKE_XCODE_BUILD_SYSTEM) | ||
| include(CodeCoverage) | ||
| APPEND_COVERAGE_COMPILER_FLAGS() | ||
| endif() |
There was a problem hiding this comment.
Coverage flags are being added only when CMAKE_XCODE_BUILD_SYSTEM is set, but this is inside the test target and appears intended to be controlled by COVERAGE_ENABLED (as in other test CMakeLists). As written, COVERAGE_ENABLED builds on non-Xcode generators won't get coverage instrumentation for this target.
| MOCK_METHOD(void, generateDRMSession, (const uint8_t *f_pbInitData, uint32_t f_cbInitData, std::string &customData), (override)); | ||
| MOCK_METHOD(DrmData*, generateKeyRequest, (std::string& destinationURL, uint32_t timeout), (override)); | ||
| MOCK_METHOD(DrmData*, generateKeyRequest, (string& destinationURL, uint32_t timeout), (override)); | ||
| MOCK_METHOD(int, processDRMKey, (DrmData* key, uint32_t timeout), (override)); | ||
| MOCK_METHOD(int, decrypt, (GstBuffer* keyIDBuffer, GstBuffer* ivBuffer, GstBuffer* buffer, unsigned subSampleCount, GstBuffer* subSamplesBuffer, GstCaps* caps), (override)); | ||
| MOCK_METHOD(int, decrypt, (const uint8_t *f_pbIV, uint32_t f_cbIV, const uint8_t *payloadData, uint32_t payloadDataSize, uint8_t **ppOpaqueData), (override)); | ||
| MOCK_METHOD(KeyState, getState, (), (override)); |
There was a problem hiding this comment.
MOCK_METHOD(... generateKeyRequest, (string& destinationURL, ...)) uses string without a std:: qualifier (and no using directive is present). This will not compile; use std::string& to match the base class signature.
| * @patam[out] colorOut - color option for the input value | ||
| * @return int - 0 for success, -1 for failure | ||
| */ | ||
| int getColor(std::string input, SupportedColors *colorOut); | ||
|
|
||
| /** | ||
| * @fn getEdgeType | ||
| * @param[in] input - input edge type value | ||
| * @param[out] edgeTypeOut - edge type option for the input value | ||
| * @patam[out] edgeTypeOut - edge type option for the input value | ||
| * @return int - 0 for success, -1 for failure | ||
| */ | ||
| int getEdgeType(std::string input, EdgeType *edgeTypeOut); | ||
|
|
||
| /** | ||
| * @fn getOpacity | ||
| * @param[in] input - input opacity value | ||
| * @param[out] edgeTypeOut - opacity option for the input value | ||
| * @patam[out] edgeTypeOut - opacity option for the input value |
There was a problem hiding this comment.
Doc comments use @patam instead of @param, which breaks Doxygen parameter documentation generation. Replace @patam with @param for these entries.
No description provided.