To build Netflix 5.3 with Rialto, Netflix 5.3 bitbake has to be modified:
diff --git a/recipes-extended/netflix/netflix_5.3.bb b/recipes-extended/netflix/netflix_5.3.bb
index 7a2560a..418728c 100644
--- a/recipes-extended/netflix/netflix_5.3.bb
+++ b/recipes-extended/netflix/netflix_5.3.bb
@@ -47,13 +47,13 @@ BBCLASSEXTEND = "native"
INHIBIT_PACKAGE_STRIP= "1"
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
-DEPENDS += " openjpeg lcms fdk-aac gstreamer1.0 python-native freetype icu jpeg libpng libmng libwebp harfbuzz libnl nghttp2 expat openssl c-ares curl-netflix graphite2 util-linux glib-2.0 iarmmgrs cjson tremor libogg systemd nodejs-native wayland essos elfutils wpeframework wpeframework-clientlibraries playready-cdm-rdk rdk-gstreamer-utils dwz-native libdwarf libunwind"
-RDEPENDS_${PN} += "devicesettings rdk-gstreamer-utils"
+DEPENDS += " openjpeg lcms fdk-aac gstreamer1.0 python-native freetype icu jpeg libpng libmng libwebp harfbuzz libnl nghttp2 expat openssl c-ares curl-netflix graphite2 util-linux glib-2.0 iarmmgrs cjson tremor libogg systemd nodejs-native wayland essos elfutils wpeframework wpeframework-clientlibraries playready-cdm-rdk rdk-gstreamer-utils dwz-native libdwarf libunwind rialto rialto-ocdm"
+RDEPENDS_${PN} += "devicesettings rdk-gstreamer-utils rialto rialto-ocdm"
DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'rdk_svp', 'gst-svp-ext', '', d)}"
RDEPENDS_${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'rdk_svp', 'gst-svp-ext', '', d)}"
-OCDM = "${@bb.utils.contains('DISTRO_FEATURES', 'netflix_drm_ocdm', 1, 0, d)}"
+OCDM = "1"
NETFLIX_DRM = "${@ "ocdm" if ${OCDM} else "rdkplayready" }"
DEPENDS += "${@ " wpeframework rdkservices rdkservices-comcast" if ${OCDM} else "" }"
@@ -242,7 +242,7 @@ do_install_append() {
fi
}
-EXTRA_OECMAKE += "${@bb.utils.contains('DISTRO_FEATURES', 'rdk_svp', "-DRDK_SVP=ENABLED", "", d)}"
+# EXTRA_OECMAKE += "${@bb.utils.contains('DISTRO_FEATURES', 'rdk_svp', "-DRDK_SVP=ENABLED", "", d)}"
EXTRA_OECMAKE += "${@bb.utils.contains('DISTRO_FEATURES', 'dynamic_svp_decryption', "-DDYNAMIC_SVP_DECRYPTION=ENABLED", "", d)}"
EXTRA_OECMAKE += "${@ "-DDPI_REFERENCE_DRM_OCDM=1" if ${OCDM} else "-DDPI_REFERENCE_DRM_RDK_PLAYREADY=1" }"
@@ -293,6 +293,7 @@ EXTRA_OECMAKE += " \
-DCURL_LIB="${STAGING_LIBDIR}/netflix/libcurl.a" \
${SOC_DPI_REFERENCE_TTS} \
-DDNSLIST=1 \
+ -DUSE_RIALTO=1 \
-DUSE_CURL_NETFLIX=1"
EXTRA_OECMAKE += " -DCMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES=${STAGING_INCDIR} "
@@ -317,7 +318,7 @@ CXXFLAGS += " -I${STAGING_INCDIR}/openjpeg-2.3"
CXXFLAGS += " -I${STAGING_INCDIR}/rdk-playready -I${STAGING_INCDIR}/rdk-playready/inc -I${STAGING_INCDIR}/rdk-playready/oem/ansi/inc -I${STAGING_INCDIR}/rdk-playready/oem/common/inc -I${STAGING_INCDIR}/rdk-playready/oem/comcast -I${STAGING_INCDIR}/rdk-playready/base"
CXXFLAGS += " -DNO_NICETHREAD_SETPRIORITY"
#If Netflix is a wayland client we need to use westeros sink
-CXXFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'netflix_wayland_client', " -DWESTEROS_SINK", "", d)}"
+# CXXFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'netflix_wayland_client', " -DWESTEROS_SINK", "", d)}"
# Included to overcome Netflix crash in morty builds which uses gcc 6.2 compiler. Refer DELIA-24039/COMCASTNYW-175 for further reference.
# Disable FASTMALLOC_NEW since we are moving all compilers to gcc 6.2 or greater
CXXFLAGS += " -DENABLE_GLOBAL_FASTMALLOC_NEW=0"
After bitbake modification, Netflix has to be built using bitbake netflix. When compilation is finished, some code modifications have to be applied:
diff --git a/partner/dpi/gstreamer/CMakeLists.txt b/partner/dpi/gstreamer/CMakeLists.txt
index 7081489..c9072d0 100644
--- a/partner/dpi/gstreamer/CMakeLists.txt
+++ b/partner/dpi/gstreamer/CMakeLists.txt
@@ -204,7 +204,7 @@ if(FORCE_HDR_DV_MODE)
add_definitions("-DFORCE_HDR_DV_MODE=1")
endif()
-if(FP_FAKE_INITBUFFER)
+if(FP_FAKE_INITBUFFER AND NOT USE_RIALTO)
add_definitions("-DFP_FAKE_INITBUFFER=1")
endif()
diff --git a/partner/dpi/gstreamer/PlaybackGroupNative.cpp b/partner/dpi/gstreamer/PlaybackGroupNative.cpp
index 3c7d557..652f4aa 100644
--- a/partner/dpi/gstreamer/PlaybackGroupNative.cpp
+++ b/partner/dpi/gstreamer/PlaybackGroupNative.cpp
@@ -34,7 +34,7 @@ extern void ApplicationManagerContentStopped(void);
#if defined(GST_GL)
#include "VideoSinkGStreamer.h"
#endif
-#define VIDEO_SINK_NAME "westerossink"
+#define VIDEO_SINK_NAME "rialtomsevideosink"
#define VIDEO_DECODER_NAME "westerossink"
#define TOO_FAR_AHEAD_THRESHOLD_SECONDS 20
#define UHD_WITDH 3840
@@ -304,7 +304,7 @@ PlaybackGroupNative::PlaybackGroupNative(ESManagerNative& ESManager, uint32_t pi
Log::info(TRACE_MEDIACONTROL, "Enabling audio downmixing to stereo");
g_object_set(mGstPipeline, "audio-filter", capsfilter, NULL);
}
- mVideoSink = createWesterosSink();
+ mVideoSink = nullptr;
#if defined(GST_GL)
mVideoSinkGst.reset(new VideoSinkGStreamer());
g_object_set(mGstPipeline, "video-sink", mVideoSinkGst->createVideoSink(), NULL);
@@ -456,6 +456,7 @@ PlaybackGroupNative::~PlaybackGroupNative()
if (mSource)
gst_object_unref(mSource);
GstServer::instance()->disconnect();
+
#if defined(WESTEROS_SINK) && (defined(GIBBON_GRAPHICSENGINE_WAYLAND) || defined(GIBBON_EVENTLOOP_WAYLAND))
gibbon::WaylandDisplay::instance()->disconnect();
#endif
diff --git a/partner/dpi/gstreamer/ocdm/CMakeLists.txt b/partner/dpi/gstreamer/ocdm/CMakeLists.txt
index f9f8d78..3555d12 100644
--- a/partner/dpi/gstreamer/ocdm/CMakeLists.txt
+++ b/partner/dpi/gstreamer/ocdm/CMakeLists.txt
@@ -88,11 +88,11 @@ endif ()
if (DPI_REFERENCE_DRM_OCDM)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${HAVE_DPI_DIRECTORY}/ocdm)
add_library(drmocdm ${LIBRARY_TYPE} ${PLAYREADY_SOURCES})
- target_link_libraries(drmocdm ocdm gstreamer-1.0 glib-2.0 gobject-2.0 gstaudio-1.0 gstapp-1.0 gstvideo-1.0 gstbase-1.0 WPEFrameworkProtocols WPEFrameworkDefinitions WPEFrameworkCore WPEFrameworkTracing )
+ target_link_libraries(drmocdm ocdmRialto gstreamer-1.0 glib-2.0 gobject-2.0 gstaudio-1.0 gstapp-1.0 gstvideo-1.0 gstbase-1.0 WPEFrameworkProtocols WPEFrameworkDefinitions WPEFrameworkCore WPEFrameworkTracing )
target_include_directories(drmocdm PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_compile_options(drmocdm PRIVATE -fvisibility=hidden)
set_target_properties(drmocdm PROPERTIES OUTPUT_NAME "drmsystem")
-
+ target_compile_options(drmocdm PUBLIC -DPLAYREADY -DPLAYREADY4_0 -DDRM_BUILD_PROFILE=900 -DDRM_SUPPORT_ASSEMBLY=0 -DDRM_SUPPORT_DATASTORE_PREALLOC=1 -DDRM_SUPPORT_ECCPROFILING=0 -DDRM_SUPPORT_FORCE_ALIGN=1 -DDRM_SUPPORT_INLINEDWORDCPY=0 -DDRM_SUPPORT_FILE_LOCKING=1 -DDRM_SUPPORT_MULTI_THREADING=0 -DDRM_SUPPORT_NATIVE_64BIT_TYPES=1 -DDRM_SUPPORT_PRECOMPUTE_GTABLE=1 -DDRM_SUPPORT_SECUREOEMHAL=0 -DDRM_SUPPORT_SECUREOEMHAL_PLAY_ONLY=0 -DDRM_SUPPORT_TRACING=1 -DDRM_SUPPORT_TOOLS_NET_IO=0 -DDRM_COMPILE_FOR_NORMAL_WORLD=0 -DDRM_COMPILE_FOR_SECURE_WORLD=1)
set_target_properties(drmocdm PROPERTIES ADDITIONAL_CLEAN_FILES ${HAVE_DPI_DIRECTORY}/ocdm)
if (DPI_REFERENCE_DRM_DO_PLUGIN)
When patch is applied, bitbake -C configure netflix has to be executed.
Some modifications have to be applied in rdk-gstreamer-utils code:
diff --git a/rdk_gstreamer_utils.cpp b/rdk_gstreamer_utils.cpp
index d9248871..b98cb2b4 100644
--- a/rdk_gstreamer_utils.cpp
+++ b/rdk_gstreamer_utils.cpp
@@ -78,7 +78,7 @@ namespace rdk_gstreamer_utils {
{
const char* audiodecodername = getAudioDecoderName_soc();
GstElement* audiodecoder = retrieveGstElementByName(pipeline, audiodecodername);
- GstElement* videodecoder = retrieveGstElementByName(pipeline, "westerossink"); //default on RDK platforms
+ GstElement* videodecoder = retrieveGstElementByName(pipeline, "rialtomsevideosink"); //default on RDK platforms
const char* AudioUnderflowSignal = getAudioUnderflowSignalName_soc();
const char* VideoUnderflowSignal = getVideoUnderflowSignalName_soc();
diff --git a/realtek/rdk_gstreamer_utils_soc.cpp b/realtek/rdk_gstreamer_utils_soc.cpp
index 63246645..564a364d 100644
--- a/realtek/rdk_gstreamer_utils_soc.cpp
+++ b/realtek/rdk_gstreamer_utils_soc.cpp
@@ -106,7 +106,7 @@ namespace rdk_gstreamer_utils
{
GstElement *audioSink = NULL;
LOG_RGU("configureUIAudioSink_soc: : connecting rtkaudiosink");
- audioSink = gst_element_factory_make ("rtkaudiosink","rtkaudiosink");
+ audioSink = gst_element_factory_make ("rialtomseaudiosink","rialtomseaudiosink");
g_object_set(G_OBJECT(audioSink), "media-tunnel", FALSE, NULL);
g_object_set(G_OBJECT(audioSink), "audio-service", TRUE, NULL);
diff --git a/rialto/rdk_gstreamer_utils_soc.cpp b/rialto/rdk_gstreamer_utils_soc.cpp
index 26ea04d4..e5cef981 100644
--- a/rialto/rdk_gstreamer_utils_soc.cpp
+++ b/rialto/rdk_gstreamer_utils_soc.cpp
@@ -77,8 +77,8 @@ namespace rdk_gstreamer_utils
GstElement * configureUIAudioSink_soc(bool TTSenabled)
{
GstElement *audioSink = NULL;
- LOG_RGU("configureUIAudioSink_soc: : connecting rialtouiaudiosink");
- audioSink = gst_element_factory_make ("rialtouiaudiosink","rialtouiaudiosink");
+ LOG_RGU("configureUIAudioSink_soc: : connecting rialtomseaudiosink");
+ audioSink = gst_element_factory_make ("rialtomseaudiosink","rialtomseaudiosink");
return audioSink;
}
After applying those changes, component has to be rebuilt using bitbake -C configure rdk-gstreamer-utils