Skip to content
Open
Show file tree
Hide file tree
Changes from 35 commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
befc47b
RDKEMW-1017: MiracastService COMRPC Support
yuvaramachandran-gurusamy Jun 11, 2025
4ba4e51
RDKEMW-1017: MiracastService CMake change
yuvaramachandran-gurusamy Jun 11, 2025
52042fa
RDKEMW-1018: MiracastPlayer COMRPC Support
yuvaramachandran-gurusamy Jun 12, 2025
567cc4c
RDKEMW-1017 RDKEMW-1018: Changes as per Miracast interface files
yuvaramachandran-gurusamy Jun 15, 2025
b3732c6
RDKEMW-1017 RDKEMW-1018: Fix build issue
yuvaramachandran-gurusamy Jun 16, 2025
2b9c5e5
Merge branch 'develop' of github.com:rdkcentral/entservices-casting i…
yuvaramachandran-gurusamy Jun 16, 2025
61215a4
RDKEMW-1018: Fix the random crash issue and logging update
yuvaramachandran-gurusamy Jun 19, 2025
70d5f08
RDKEMW-1017 RDKEMW-1018: Updated Miracast API prototype
yuvaramachandran-gurusamy Jun 19, 2025
1cd20a0
RDKEMW-1018: Fix the SetWesterosEnvironment issue and logging update
yuvaramachandran-gurusamy Jun 20, 2025
cbd10e9
RDKEMW-1018: Update MiracastPlayer.h with indentation
yuvaramachandran-gurusamy Jun 20, 2025
4cfedf2
RDKEMW-1018: Modified MiracastRTSPMsg variables order to fix SIGBUS i…
yuvaramachandran-gurusamy Jun 23, 2025
c6415b9
RDKEMW-1017 RDKEMW-1018: Removed the SetLogging and added SetEnvArugm…
yuvaramachandran-gurusamy Jun 27, 2025
2eef64a
RDKEMW-1017 RDKEMW-1018: Updated as per review comments
yuvaramachandran-gurusamy Jun 29, 2025
67b9b8c
RDKEMW-1017 RDKEMW-1018: Disable l1 test for Miracast
yuvaramachandran-gurusamy Jun 30, 2025
163b6c5
RDKEMW-1017 RDKEMW-1018: entservices-apis should cloned from develop
yuvaramachandran-gurusamy Jun 30, 2025
a3fcd16
RDKEMW-1017 RDKEMW-1018: Miracast unittest updation
yuvaramachandran-gurusamy Jul 1, 2025
c910c89
RDKEMW-1017 RDKEMW-1018: Fix Miracast build failure
yuvaramachandran-gurusamy Jul 1, 2025
dc6f714
RDKEMW-1018: Fix MiracastPlayer build failure
yuvaramachandran-gurusamy Jul 1, 2025
c2ced64
RDKEMW-1017: Fix for MiracastService unit failure
yuvaramachandran-gurusamy Jul 1, 2025
aeae525
RDKEMW-1017: Fix for MiracastService unittest failure
yuvaramachandran-gurusamy Jul 1, 2025
2a6af1a
RDKEMW-1017 RDKEMW-1018: Fix for Miracast plugins linker issue
yuvaramachandran-gurusamy Jul 1, 2025
6e915c1
use gdb for test
yuvaramachandran-gurusamy Jul 1, 2025
310fb27
Adding trace logs
yuvaramachandran-gurusamy Jul 1, 2025
ef59779
Fix unit test failure
yuvaramachandran-gurusamy Jul 1, 2025
7d53e6e
Fix unittest failures
yuvaramachandran-gurusamy Jul 1, 2025
762398f
Update unittest
yuvaramachandran-gurusamy Jul 1, 2025
5e13f62
Addressed the coverity issue
yuvaramachandran-gurusamy Jul 1, 2025
27144be
Addressed the build failure
yuvaramachandran-gurusamy Jul 1, 2025
80af21d
Addressed the coverity issues
yuvaramachandran-gurusamy Jul 1, 2025
4f8ea03
Update MiracastPlayer unittest
yuvaramachandran-gurusamy Jul 1, 2025
194ab9b
Update Miracastplayer testcase
yuvaramachandran-gurusamy Jul 2, 2025
be30766
Update testcase
yuvaramachandran-gurusamy Jul 2, 2025
7c23c0b
Test
yuvaramachandran-gurusamy Jul 2, 2025
8a14f91
Test
yuvaramachandran-gurusamy Jul 2, 2025
b59feaf
Updated the coverage
yuvaramachandran-gurusamy Jul 2, 2025
c22717d
Testing
yuvaramachandran-gurusamy Jul 4, 2025
1f376d6
Testing
yuvaramachandran-gurusamy Jul 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/L1-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ jobs:
run: >
sudo apt update
&&
sudo apt install -y libsqlite3-dev libcurl4-openssl-dev valgrind lcov clang libsystemd-dev libboost-all-dev libwebsocketpp-dev meson libcunit1 libcunit1-dev curl protobuf-compiler-grpc libgrpc-dev libgrpc++-dev
sudo apt install -y libsqlite3-dev libcurl4-openssl-dev valgrind lcov clang libsystemd-dev libboost-all-dev libwebsocketpp-dev meson libcunit1 libcunit1-dev curl protobuf-compiler-grpc libgrpc-dev libgrpc++-dev gdb

- name: Install GStreamer
run: |
Expand Down Expand Up @@ -590,7 +590,7 @@ jobs:
PATH=$GITHUB_WORKSPACE/install/usr/bin:${PATH}
LD_LIBRARY_PATH=$GITHUB_WORKSPACE/install/usr/lib:$GITHUB_WORKSPACE/install/usr/lib/wpeframework/plugins:${LD_LIBRARY_PATH}
GTEST_OUTPUT="json:$(pwd)/rdkL1TestResults.json"
RdkServicesL1Test &&
gdb -ex "run" -ex "bt" --args RdkServicesL1Test &&
cp -rf $(pwd)/rdkL1TestResults.json $GITHUB_WORKSPACE/rdkL1TestResultsWithoutValgrind.json &&
rm -rf $(pwd)/rdkL1TestResults.json

Expand Down
2 changes: 1 addition & 1 deletion Miracast/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@
# limitations under the License.

add_subdirectory(MiracastService)
add_subdirectory(MiracastPlayer)
add_subdirectory(MiracastPlayer)
108 changes: 70 additions & 38 deletions Miracast/MiracastPlayer/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,71 +17,103 @@

set(PLUGIN_NAME MiracastPlayer)
set(MODULE_NAME ${NAMESPACE}${PLUGIN_NAME})
set(PLUGIN_IMPLEMENTATION ${MODULE_NAME}Implementation)

set(PLUGIN_MIRACAST_STARTUPORDER "" CACHE STRING "To configure startup order of MiracastPlayer plugin")
set(PLUGIN_MIRACASTPLAYER_STARTUPORDER "" CACHE STRING "To configure startup order of MiracastPlayer plugin")
set(PLUGIN_MIRACASTPLAYER_AUTOSTART "false" CACHE STRING "Automatically start MiracastPlayer plugin")

add_definitions(-DMIRACAST_PLAYER_API_VERSION_NUMBER_MAJOR=2)
add_definitions(-DMIRACAST_PLAYER_API_VERSION_NUMBER_MINOR=0)
add_definitions(-DMIRACAST_PLAYER_API_VERSION_NUMBER_PATCH=0)

set(MIRACAST_PLAYER_IMPLEMENTATION ${PLUGIN_NAME}Implementation)
add_definitions(-DPLUGIN_MIRACAST_PLAYER_IMPLEMENTATION_NAME="${MIRACAST_PLAYER_IMPLEMENTATION}")

find_package(${NAMESPACE}Plugins REQUIRED)
find_package(IARMBus)
find_package(GLIB REQUIRED)

find_package(WPEFrameworkSecurityUtil)
if(NOT WPEFRAMEWORK_SECURITYUTIL_FOUND)
add_definitions(-DSECURITY_TOKEN_ENABLED=0)
endif()

find_package(${NAMESPACE}Plugins REQUIRED)
find_package(${NAMESPACE}Definitions REQUIRED)
find_package(CompileSettingsDebug CONFIG REQUIRED)
find_package(PkgConfig REQUIRED)
pkg_check_modules(GSTREAMERBASE REQUIRED gstreamer-app-1.0)

find_package(GStreamer REQUIRED)

find_library(GLIB_LIBRARY NAMES glib-2.0)
find_library(GLIB_LIBRARY NAMES glib-2.0 )

if (USE_THUNDER_R4)
find_package(${NAMESPACE}COM REQUIRED)
else ()
find_package(${NAMESPACE}Protocols REQUIRED)
endif (USE_THUNDER_R4)

add_library(${MODULE_NAME} SHARED Module.cpp MiracastPlayer.cpp ../common/MiracastLogger.cpp ../common/MiracastCommon.cpp RTSP/MiracastRTSPMsg.cpp)
add_library(${MODULE_NAME} SHARED MiracastPlayer.cpp Module.cpp)

set_target_properties(${MODULE_NAME} PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED YES)

target_compile_definitions(${MODULE_NAME} PRIVATE MODULE_NAME=Plugin_${PLUGIN_NAME})

include_directories(../../helpers)

target_link_libraries(${MODULE_NAME} PRIVATE CompileSettingsDebug::CompileSettingsDebug ${NAMESPACE}Plugins::${NAMESPACE}Plugins ${NAMESPACE}Definitions::${NAMESPACE}Definitions)

install(TARGETS ${MODULE_NAME}
DESTINATION lib/${STORAGE_DIRECTORY}/plugins)

add_library(${PLUGIN_IMPLEMENTATION} SHARED Module.cpp MiracastPlayerImplementation.cpp ../common/MiracastLogger.cpp ../common/MiracastCommon.cpp RTSP/MiracastRTSPMsg.cpp)

target_link_libraries(${PLUGIN_IMPLEMENTATION} PRIVATE ${NAMESPACE}Plugins::${NAMESPACE}Plugins)

set_target_properties(${PLUGIN_IMPLEMENTATION} PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED YES)
set_source_files_properties(MiracastPlayer.cpp PROPERTIES COMPILE_FLAGS "-fexceptions")

if (USE_THUNDER_R4)
target_link_libraries(${PLUGIN_IMPLEMENTATION} PRIVATE ${NAMESPACE}COM::${NAMESPACE}COM)
else ()
target_link_libraries(${PLUGIN_IMPLEMENTATION} PRIVATE ${NAMESPACE}Protocols::${NAMESPACE}Protocols)
endif (USE_THUNDER_R4)

if (RDK_SERVICES_L1_TEST)
target_sources(${MODULE_NAME}
target_sources(${PLUGIN_IMPLEMENTATION}
PRIVATE
Test/MiracastGstPlayer.cpp
)
else()
target_sources(${MODULE_NAME}
target_sources(${PLUGIN_IMPLEMENTATION}
PRIVATE
Generic/MiracastGstPlayer.cpp
)
endif()

set_target_properties(${MODULE_NAME} PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED YES)
set_source_files_properties(MiracastPlayer.cpp PROPERTIES COMPILE_FLAGS "-fexceptions")

target_include_directories(${MODULE_NAME} PRIVATE ./)
target_include_directories(${MODULE_NAME} PRIVATE ../common)
target_include_directories(${MODULE_NAME} PRIVATE RTSP)
target_include_directories(${MODULE_NAME} PRIVATE ../../helpers)
target_include_directories(${MODULE_NAME} PRIVATE ${IARMBUS_INCLUDE_DIRS})
target_include_directories(${MODULE_NAME} PRIVATE ${GLIB_INCLUDE_DIRS})
target_include_directories(${MODULE_NAME} PRIVATE ${GSTREAMER_INCLUDES})
target_include_directories(${MODULE_NAME} PRIVATE ${GSTREAMERBASE_INCLUDE_DIRS})

#target_compile_options(${MODULE_NAME} PRIVATE -Wno-error -fpermissive -Os -pipe -g -feliminate-unused-debug-types -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed)
#target_compile_options(${MODULE_NAME} PRIVATE -DENABLE_MIRACAST_PLAYER_TEST_NOTIFIER)

target_link_libraries(${MODULE_NAME} PRIVATE ${NAMESPACE}Plugins::${NAMESPACE}Plugins)
target_link_libraries(${MODULE_NAME} PRIVATE ${GLIB_LIBRARIES})
target_link_libraries(${MODULE_NAME} PRIVATE ${GSTREAMER_LIBRARIES})
target_link_libraries(${MODULE_NAME} PRIVATE ${GSTREAMERBASE_LIBRARIES})
target_link_libraries(${MODULE_NAME} PRIVATE -lpthread)
target_include_directories(${PLUGIN_IMPLEMENTATION} PRIVATE ./)
target_include_directories(${PLUGIN_IMPLEMENTATION} PRIVATE ../common)
target_include_directories(${PLUGIN_IMPLEMENTATION} PRIVATE RTSP)
target_include_directories(${PLUGIN_IMPLEMENTATION} PRIVATE ../../helpers)
target_include_directories(${PLUGIN_IMPLEMENTATION} PRIVATE ${IARMBUS_INCLUDE_DIRS})
target_include_directories(${PLUGIN_IMPLEMENTATION} PRIVATE ${GLIB_INCLUDE_DIRS})
target_include_directories(${PLUGIN_IMPLEMENTATION} PRIVATE ${GSTREAMER_INCLUDES})
target_include_directories(${PLUGIN_IMPLEMENTATION} PRIVATE ${GSTREAMERBASE_INCLUDE_DIRS})

target_link_libraries(${PLUGIN_IMPLEMENTATION} PRIVATE ${NAMESPACE}Plugins::${NAMESPACE}Plugins)
target_link_libraries(${PLUGIN_IMPLEMENTATION} PRIVATE ${GLIB_LIBRARIES})
target_link_libraries(${PLUGIN_IMPLEMENTATION} PRIVATE ${GSTREAMER_LIBRARIES})
target_link_libraries(${PLUGIN_IMPLEMENTATION} PRIVATE ${GSTREAMERBASE_LIBRARIES})
target_link_libraries(${PLUGIN_IMPLEMENTATION} PRIVATE -lpthread)

if(WPEFRAMEWORK_SECURITYUTIL_FOUND)
target_link_libraries(${MODULE_NAME} PRIVATE ${NAMESPACE}SecurityUtil)
target_link_libraries(${PLUGIN_IMPLEMENTATION} PRIVATE ${NAMESPACE}SecurityUtil)
endif()

if(NOT RDK_SERVICES_L1_TEST AND NOT RDK_SERVICE_L2_TEST)
target_link_libraries(${MODULE_NAME} PRIVATE MiracastPlayerHal)
target_link_libraries(${PLUGIN_IMPLEMENTATION} PRIVATE MiracastPlayerHal)
endif()

install(TARGETS ${MODULE_NAME}
DESTINATION lib/${STORAGE_DIRECTORY}/plugins)
install(TARGETS ${PLUGIN_IMPLEMENTATION}
DESTINATION lib/${STORAGE_DIRECTORY}/plugins)

write_config(${PLUGIN_NAME})
write_config(${PLUGIN_NAME})
11 changes: 8 additions & 3 deletions Miracast/MiracastPlayer/Generic/MiracastGstPlayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -391,7 +391,7 @@ void MiracastGstPlayer::onFirstVideoFrameCallback(GstElement* object, guint arg0
MIRACASTLOG_TRACE("Exiting..!!!");
}

void MiracastGstPlayer::notifyPlaybackState(eMIRA_GSTPLAYER_STATES gst_player_state, eM_PLAYER_REASON_CODE state_reason_code )
void MiracastGstPlayer::notifyPlaybackState(eMIRA_GSTPLAYER_STATES gst_player_state, MiracastPlayerReasonCode state_reason_code )
{
MIRACASTLOG_TRACE("Entering..!!!");
if ( nullptr != m_rtsp_reference_instance )
Expand Down Expand Up @@ -490,7 +490,7 @@ gboolean MiracastGstPlayer::appendPipelineBusMessage(GstBus * bus, GstMessage *
g_free(info);
GST_DEBUG_BIN_TO_DOT_FILE((GstBin *)self->m_append_pipeline, GST_DEBUG_GRAPH_SHOW_ALL, "miracast_udpsrc2appsink_error");
gst_element_set_state(self->m_append_pipeline, GST_STATE_READY);
self->notifyPlaybackState(MIRACAST_GSTPLAYER_STATE_STOPPED,MIRACAST_PLAYER_REASON_CODE_GST_ERROR);
self->notifyPlaybackState(MIRACAST_GSTPLAYER_STATE_STOPPED,WPEFramework::Exchange::IMiracastPlayer::REASON_CODE_GST_ERROR);
}
break;
case GST_MESSAGE_STATE_CHANGED:
Expand Down Expand Up @@ -551,7 +551,7 @@ gboolean MiracastGstPlayer::playbinPipelineBusMessage (GstBus * bus, GstMessage
g_free(info);
}
GST_DEBUG_BIN_TO_DOT_FILE((GstBin *)self->m_playbin_pipeline, GST_DEBUG_GRAPH_SHOW_ALL, "miracast_playbin2appSrc_error");
self->notifyPlaybackState(MIRACAST_GSTPLAYER_STATE_STOPPED,MIRACAST_PLAYER_REASON_CODE_GST_ERROR);
self->notifyPlaybackState(MIRACAST_GSTPLAYER_STATE_STOPPED,WPEFramework::Exchange::IMiracastPlayer::REASON_CODE_GST_ERROR);
}
break;
case GST_MESSAGE_STATE_CHANGED:
Expand Down Expand Up @@ -1042,4 +1042,9 @@ bool MiracastGstPlayer::stop()
}
MIRACASTLOG_TRACE("Exiting..");
return true;
}

void MiracastGstPlayer::update_rtsp_capability_completion_status(bool state)
{
/*NOP*/
}
3 changes: 2 additions & 1 deletion Miracast/MiracastPlayer/MiracastGstPlayer.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ class MiracastGstPlayer
double getCurrentPosition(GstElement *pipeline = nullptr);
bool get_player_statistics();
void print_pipeline_state(GstElement *pipeline = nullptr);
void update_rtsp_capability_completion_status(bool state);

private:
GstElement *m_append_pipeline{nullptr};
Expand Down Expand Up @@ -108,7 +109,7 @@ class MiracastGstPlayer
bool createPipeline();
bool updateVideoSinkRectangle(void);
static void onFirstVideoFrameCallback(GstElement* object, guint arg0, gpointer arg1,gpointer userdata);
void notifyPlaybackState(eMIRA_GSTPLAYER_STATES gst_player_state, eM_PLAYER_REASON_CODE state_reason_code = MIRACAST_PLAYER_REASON_CODE_SUCCESS );
void notifyPlaybackState(eMIRA_GSTPLAYER_STATES gst_player_state, MiracastPlayerReasonCode state_reason_code = WPEFramework::Exchange::IMiracastPlayer::REASON_CODE_SUCCESS );
bool changePipelineState(GstElement* pipeline, GstState state) const;

static void *playbackThread(void *ctx);
Expand Down
10 changes: 9 additions & 1 deletion Miracast/MiracastPlayer/MiracastPlayer.conf.in
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
precondition = ["Platform"]
callsign = "org.rdk.MiracastPlayer"
autostart = "false"
autostart = "@PLUGIN_MIRACASTPLAYER_AUTOSTART@"
startuporder = "@PLUGIN_MIRACASTPLAYER_STARTUPORDER@"

configuration = JSON()
rootobject = JSON()

rootobject.add("mode", "@PLUGIN_MIRACASTPLAYER_MODE@")
rootobject.add("locator", "lib@PLUGIN_IMPLEMENTATION@.so")

configuration.add("root", rootobject)
11 changes: 10 additions & 1 deletion Miracast/MiracastPlayer/MiracastPlayer.config
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@
set (autostart false)
set (autostart ${PLUGIN_MIRACASTPLAYER_AUTOSTART})
set (preconditions Platform)
set (callsign "org.rdk.MiracastPlayer")

if(PLUGIN_MIRACASTPLAYER_STARTUPORDER)
set (startuporder ${PLUGIN_MIRACASTPLAYER_STARTUPORDER})
endif()

map()
key(root)
map()
kv(mode ${PLUGIN_MIRACASTPLAYER_MODE})
kv(locator lib${PLUGIN_IMPLEMENTATION}.so)
end()
end()
ans(configuration)
Loading
Loading