Add first-video-frame-callback signal implementation#497
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
This PR introduces end-to-end support for a “first video frame received” notification: detecting a first-video-frame-callback GLib signal in the GStreamer pipeline, scheduling a worker task, and propagating the notification over IPC to the public client API.
Changes:
- Connect to a
first-video-frame-callbacksignal during element setup and schedule a newFirstFrameReceivedtask when it fires. - Add a new
FirstFrameReceivedEventto the IPC/proto layer and propagate it through server/client pipeline components. - Update unit/component test scaffolding (mocks, factories, and setup-element tests) to cover the new signal/task creation.
Reviewed changes
Copilot reviewed 38 out of 38 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/unittests/media/server/mocks/gstplayer/GstGenericPlayerPrivateMock.h | Adds mock for scheduling the first-frame task. |
| tests/unittests/media/server/mocks/gstplayer/GstGenericPlayerClientMock.h | Adds mock client notification for first frame received. |
| tests/unittests/media/server/mocks/gstplayer/GenericPlayerTaskFactoryMock.h | Adds mock factory method for creating the new task. |
| tests/unittests/media/server/gstplayer/genericPlayer/tasksTests/SetupElementTest.cpp | Adds a unit test exercising first-video-frame callback wiring. |
| tests/unittests/media/server/gstplayer/genericPlayer/tasksTests/GenericPlayerTaskFactoryTest.cpp | Adds a unit test asserting the new task type is created. |
| tests/unittests/media/server/gstplayer/genericPlayer/common/GenericTasksTestsContext.h | Stores the first-video-frame callback in test context. |
| tests/unittests/media/server/gstplayer/genericPlayer/common/GenericTasksTestsBase.h | Adds helpers to set/trigger first-video-frame callback in tests. |
| tests/unittests/media/server/gstplayer/genericPlayer/common/GenericTasksTestsBase.cpp | Extends expectations to include first-video-frame signal discovery/connection. |
| tests/unittests/media/client/mocks/ipc/MediaPipelineIpcClientMock.h | Adds IPC client mock method for first frame received. |
| tests/unittests/media/client/ipc/mediaPipelineIpc/base/MediaPipelineIpcTestBase.h | Adds event tag + callback slot for FirstFrameReceivedEvent. |
| tests/unittests/media/client/ipc/mediaPipelineIpc/base/MediaPipelineIpcTestBase.cpp | Subscribes/unsubscribes to FirstFrameReceivedEvent in test base. |
| tests/componenttests/server/tests/mediaPipeline/UnderflowTest.cpp | Updates expectations due to additional GLib signal enumeration calls. |
| tests/componenttests/server/stubs/ClientStub.cpp | Subscribes component-test client stub to FirstFrameReceivedEvent. |
| tests/common/publicClientMocks/MediaPipelineClientMock.h | Adds public client mock method for first frame received. |
| proto/mediapipelinemodule.proto | Adds new FirstFrameReceivedEvent IPC message. |
| media/server/main/source/MediaPipelineServerInternal.cpp | Implements server-side notifyFirstFrameReceived -> public client call. |
| media/server/main/include/MediaPipelineServerInternal.h | Declares notifyFirstFrameReceived override. |
| media/server/ipc/source/MediaPipelineClient.cpp | Sends FirstFrameReceivedEvent over IPC. |
| media/server/ipc/include/MediaPipelineClient.h | Declares new IMediaPipelineClient notification implementation. |
| media/server/gstplayer/source/Utils.cpp | Adds signal-name discovery helper for first-video-frame-callback. |
| media/server/gstplayer/source/tasks/generic/SetupElement.cpp | Connects first-video-frame callback when signal exists on a video element. |
| media/server/gstplayer/source/tasks/generic/GenericPlayerTaskFactory.cpp | Adds factory creation for FirstFrameReceived task. |
| media/server/gstplayer/source/tasks/generic/FirstFrameReceived.cpp | New worker task that notifies the GstGenericPlayer client. |
| media/server/gstplayer/source/GstGenericPlayer.cpp | Schedules FirstFrameReceived task from signal callback path. |
| media/server/gstplayer/interface/IGstGenericPlayerClient.h | Adds notifyFirstFrameReceived(MediaSourceType) API. |
| media/server/gstplayer/include/Utils.h | Declares getFirstVideoFrameSignalName helper. |
| media/server/gstplayer/include/tasks/IGenericPlayerTaskFactory.h | Adds createFirstFrameReceived factory API. |
| media/server/gstplayer/include/tasks/generic/GenericPlayerTaskFactory.h | Declares createFirstFrameReceived in concrete factory. |
| media/server/gstplayer/include/tasks/generic/FirstFrameReceived.h | Declares new FirstFrameReceived task type. |
| media/server/gstplayer/include/IGstGenericPlayerPrivate.h | Adds scheduleFirstVideoFrameReceived() hook. |
| media/server/gstplayer/include/GstGenericPlayer.h | Implements the new scheduling method in GstGenericPlayer. |
| media/server/gstplayer/CMakeLists.txt | Adds FirstFrameReceived.cpp to build. |
| media/public/include/IMediaPipelineClient.h | Extends public client API with notifyFirstFrameReceived(sourceId). |
| media/client/main/source/MediaPipeline.cpp | Forwards first-frame notification to the public client. |
| media/client/main/include/MediaPipeline.h | Declares notifyFirstFrameReceived override. |
| media/client/ipc/source/MediaPipelineIpc.cpp | Subscribes/handles FirstFrameReceivedEvent and forwards to IPC client. |
| media/client/ipc/interface/IMediaPipelineIpcClient.h | Adds IPC client interface method notifyFirstFrameReceived. |
| media/client/ipc/include/MediaPipelineIpc.h | Declares onFirstFrameReceived event handler. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
balasaraswathy-n
left a comment
There was a problem hiding this comment.
IGstGenericPlayerPrivate &player is not required under FirstFrameReceived.cpp,
|
Coverage statistics of your commit: |
|
Coverage statistics of your commit: |
Summary: Add first-video-frame-callback signal implementation
Type: Fix
Test Plan: UT/CT, Fullstack
Jira: RDKEMW-13397