Enable ocdm rialto in libcobalt recipt in meta-rdk-video/recipes-extended/cobalt/libcobalt_22.lts.stable.bb:
-RDEPENDS_${PN} += "gstreamer1.0-plugins-base-app gstreamer1.0-plugins-base-playback"
+RDEPENDS_${PN} += "gstreamer1.0-plugins-base-app gstreamer1.0-plugins-base-playback rialto"
do_configure() {
export COBALT_HAS_OCDM="${@bb.utils.contains('PACKAGECONFIG', 'opencdm', '1', '0', d)}"
+ export COBALT_OCDM_LIBRARY_NAME="ocdmRialto"
export COBALT_ARM_CALLCONVENTION="${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'hardfp', 'softfp', d)}"
${S}/src/cobalt/build/gyp_cobalt -C qa -C gold -C devel ${COBALT_PLATFORM}
} |
Build libcobalt:
bitbake libcobalt |
Patch libcobalt to enable ocdmRialto:
diff --git a/src/third_party/starboard/rdk/arm/gyp_configuration.py b/src/third_party/starboard/rdk/arm/gyp_configuration.py
index 15df0c8e93..2ecefee113 100644
--- a/src/third_party/starboard/rdk/arm/gyp_configuration.py
+++ b/src/third_party/starboard/rdk/arm/gyp_configuration.py
@@ -47,6 +47,7 @@ class RDKPlatformConfig(platform_configuration.PlatformConfiguration):
super(RDKPlatformConfig, self).__init__(platform)
self.has_ocdm = os.environ.get('COBALT_HAS_OCDM', '0')
+ self.ocdm_library_name = os.environ.get('COBALT_OCDM_LIBRARY_NAME', 'ocdm')
self.sabi_json_path = 'starboard/sabi/arm/%s/sabi-v12.json' % (os.environ.get('COBALT_ARM_CALLCONVENTION', 'hardfp'))
self.sysroot = os.path.realpath(os.environ.get('PKG_CONFIG_SYSROOT_DIR', '/'))
self.AppendApplicationConfigurationPath(os.path.dirname(__file__))
@@ -65,6 +66,7 @@ class RDKPlatformConfig(platform_configuration.PlatformConfiguration):
'clang': 0,
'sysroot': self.sysroot,
'has_ocdm': self.has_ocdm,
+ 'ocdm_library_name': self.ocdm_library_name,
})
variables.update({
'cobalt_font_package': 'limited',
diff --git a/src/third_party/starboard/rdk/brcm/arm/gyp_configuration.py b/src/third_party/starboard/rdk/brcm/arm/gyp_configuration.py
index 5e2fca93b9..5c6b890475 100644
--- a/src/third_party/starboard/rdk/brcm/arm/gyp_configuration.py
+++ b/src/third_party/starboard/rdk/brcm/arm/gyp_configuration.py
@@ -47,6 +47,7 @@ class RDKPlatformConfig(platform_configuration.PlatformConfiguration):
super(RDKPlatformConfig, self).__init__(platform)
self.has_ocdm = os.environ.get('COBALT_HAS_OCDM', '0')
+ self.ocdm_library_name = os.environ.get('COBALT_OCDM_LIBRARY_NAME', 'ocdm')
self.sabi_json_path = 'starboard/sabi/arm/%s/sabi-v12.json' % (os.environ.get('COBALT_ARM_CALLCONVENTION', 'hardfp'))
self.sysroot = os.path.realpath(os.environ.get('PKG_CONFIG_SYSROOT_DIR', '/'))
self.AppendApplicationConfigurationPath(os.path.dirname(__file__))
@@ -65,6 +66,7 @@ class RDKPlatformConfig(platform_configuration.PlatformConfiguration):
'clang': 0,
'sysroot': self.sysroot,
'has_ocdm': self.has_ocdm,
+ 'ocdm_library_name': self.ocdm_library_name,
})
variables.update({
'cobalt_font_package': 'limited',
diff --git a/src/third_party/starboard/rdk/rpi/gyp_configuration.py b/src/third_party/starboard/rdk/rpi/gyp_configuration.py
index d21c7469d2..3abda1be15 100644
--- a/src/third_party/starboard/rdk/rpi/gyp_configuration.py
+++ b/src/third_party/starboard/rdk/rpi/gyp_configuration.py
@@ -47,6 +47,7 @@ class RDKPlatformConfig(platform_configuration.PlatformConfiguration):
super(RDKPlatformConfig, self).__init__(platform)
self.has_ocdm = os.environ.get('COBALT_HAS_OCDM', '0')
+ self.ocdm_library_name = os.environ.get('COBALT_OCDM_LIBRARY_NAME', 'ocdm')
self.sabi_json_path = 'starboard/sabi/arm/%s/sabi-v12.json' % (os.environ.get('COBALT_ARM_CALLCONVENTION', 'hardfp'))
self.sysroot = os.path.realpath(os.environ.get('PKG_CONFIG_SYSROOT_DIR', '/'))
self.AppendApplicationConfigurationPath(os.path.dirname(__file__))
@@ -65,6 +66,7 @@ class RDKPlatformConfig(platform_configuration.PlatformConfiguration):
'clang': 0,
'sysroot': self.sysroot,
'has_ocdm': self.has_ocdm,
+ 'ocdm_library_name': self.ocdm_library_name,
})
variables.update({
'cobalt_font_package': 'limited',
diff --git a/src/third_party/starboard/rdk/shared/system.gyp b/src/third_party/starboard/rdk/shared/system.gyp
index 0e8eb7495e..f48aec8050 100644
--- a/src/third_party/starboard/rdk/shared/system.gyp
+++ b/src/third_party/starboard/rdk/shared/system.gyp
@@ -115,15 +115,15 @@
'type': 'none',
'direct_dependent_settings': {
'cflags': [
- '<!@(<(pkg-config) --cflags ocdm)',
+ '<!@(<(pkg-config) --cflags <(ocdm_library_name))',
],
},
'link_settings': {
'ldflags': [
- '<!@(<(pkg-config) --libs-only-L --libs-only-other ocdm)',
+ '<!@(<(pkg-config) --libs-only-L --libs-only-other <(ocdm_library_name))',
],
'libraries': [
- '<!@(<(pkg-config) --libs-only-l ocdm)',
+ '<!@(<(pkg-config) --libs-only-l <(ocdm_library_name))',
'-ldl',
],
}, |
Rebuild libcobalt:
bitbake libcobalt -C configure |
Copy Rialto libraries and libcobalt to STB:
scp -P [BOX_PORT] tmp/work/armv7vet2hf-neon-rdk-linux-gnueabi/rialto-gstreamer/git-r0/package/usr/lib/gstreamer-1.0/libgstrialtosinks.so root@[BOX_IP]:/tmp scp -P [BOX_PORT] tmp/work/armv7vet2hf-neon-rdk-linux-gnueabi/rialto/git-r0/package/usr/lib/libRialtoClient.so root@[BOX_IP]:/tmp scp -P [BOX_PORT] tmp/work/armv7vet2hf-neon-rdk-linux-gnueabi/rialto/git-r0/package/usr/bin/RialtoServer* root@[BOX_IP]:/tmp scp -P [BOX_PORT] tmp/work/armv7vet2hf-neon-rdk-linux-gnueabi/rialto/git-r0/package/usr/lib/libRialtoServerManager.so root@[BOX_IP]:/tmp scp -P [BOX_PORT] tmp/work/armv7vet2hf-neon-rdk-linux-gnueabi/rialto-ocdm/git-r0/package/usr/lib/libocdmRialto.so root@[BOX_IP]:/tmp scp -P [BOX_PORT] tmp/work/armv7vet2hf-neon-rdk-linux-gnueabi/libcobalt/21.lts.stable-7/deploy-ipks/armv7vet2hf-neon/libcobalt_21.lts.stable-7_armv7vet2hf-neon.ipk root@[BOX_IP]:/tmp |
Login to STB and:
Mount libs:
mount -o bind libRialtoServerManager.so /usr/lib/libRialtoServerManager.so mount -o bind RialtoServer /usr/bin/RialtoServer mount -o bind /tmp/libRialtoClient.so /usr/lib/libRialtoClient.so mount -o bind /tmp/libgstrialtosinks.so /usr/lib/gstreamer-1.0/libgstrialtosinks.so mount -o bind /tmp/libocdmRialto.so /usr/lib/libocdmRialto.so mount -o bind RialtoServerManagerSim /usr/bin/RialtoServerManagerSim |
Unpack libcobalt:
ar -x libcobalt_22.lts.stable-5_armv7vet2hf-neon.ipk tar -xf data.tar.xz |
Run westeros:
XDG_RUNTIME_DIR=/tmp LD_PRELOAD=/usr/lib/libwesteros_gl.so.0 westeros --renderer /usr/lib/libwesteros_render_embedded.so.0.0.0 --embedded --display "westeros-cobalt" --window-size 1920x1080 |
Start server manager simulator:
RIALTO_DEBUG=5 SESSION_SERVER_ENV_VARS='XDG_RUNTIME_DIR=/tmp;RIALTO_SINKS_RANK=0;GST_REGISTRY=/tmp/rialto-server-gstreamer-cache.bin;WAYLAND_DISPLAY=westeros-cobalt;GST_DEBUG_DUMP_DOT_DIR=/tmp;GST_DEBUG=4' /usr/bin/RialtoServerManagerSim |
Request ServerManager Simulator to spawn Rialto Server for YouTube app:
curl -X POST -d "" localhost:9008/SetState/YouTube/Active |
At this step You can either:
Run YouTube Conformance Tests :
RIALTO_DEBUG=5 RIALTO_SOCKET_PATH=/tmp/rialto-0 XDG_RUNTIME_DIR=/tmp WAYLAND_DISPLAY=westeros-cobalt LD_LIBRARY_PATH="$PWD/usr/lib" COBALT_CONTENT_DIR="$PWD/usr/share/content/data" RIALTO_CLIENT_BACKEND_LIB="/usr/lib/libRialtoClient.so" usr/bin/cobalt_bin --url="https://ytlr-cert.appspot.com/2021/main.html" |
or Run YouTube app:
RIALTO_DEBUG=5 RIALTO_SOCKET_PATH=/tmp/rialto-0 XDG_RUNTIME_DIR=/tmp WAYLAND_DISPLAY=westeros-cobalt LD_LIBRARY_PATH="$PWD/usr/lib" COBALT_CONTENT_DIR="$PWD/usr/share/content/data" RIALTO_CLIENT_BACKEND_LIB="/usr/lib/libRialtoClient.so" usr/bin/cobalt_bin |