You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 149 Next »

  • Device Details
  • Prerequisite
  • Playing Test streams with Rialto
  • Running YouTube with Rialto
  • Pipeline Diagram
  • Known Issues / limitations


Device Details

ParamsValue
ChipRpi4/Rpi3B+
Cobalt RDK Common Port - Cobalt 22.lts
CPUARMv7 Processor rev 0
Gstreamer1.16.0
Kernel5.10.52
Memory16 GB flash and 2 GB RAM
RDK Buildrdk-next
RDKServicesMain
UIRDK Resident UI
WidevineNot Available
Yocto3.1 - Dunfell


Prerequisite

Playing Test streams with Rialto

  • Stop wpeframework 

    systemctl stop wpeframework
  • For Rpi4 platform - Run the below command in all terminals where you need to run the rialto commands.

    export WESTEROS_DRM_CARD=/dev/dri/card0

    Note:  In case of Rpi3 platform, no need to run the above command. Since, Rpi3 uses only one master card.


  • For below steps, Refer Running YouTube with Rialto - Preferred Program - RDK Central Wiki page.
    - Run westeros
    - Start server manager simulator
    - Run Rialto Server for YouTube

  • Command used to run test streams:

    GST_REGISTRY=/tmp/rialto-registry.bin RIALTO_DEBUG=5 RIALTO_CONSOLE_LOG=1 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" gst-launch-1.0 playbin uri=file:///tmp/sample-video-file-for-testing.mp4

           Note: 

Playing HLS with Rialto

  • Stop wpeframework 

    systemctl stop wpeframework
  • For Rpi4 platform - Run the below command in all terminals where you need to run the rialto commands.

    export WESTEROS_DRM_CARD=/dev/dri/card0

    Note:  In case of Rpi3 platform, no need to run the above command. Since, Rpi3 uses only one master card.


  • 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 RIALTO_SESSION_SERVER_STARTUP_TIMEOUT_MS=15000 SESSION_SERVER_ENV_VARS='XDG_RUNTIME_DIR=/tmp;RIALTO_SINKS_RANK=0;GST_REGISTRY=/tmp/rialto-server-gstreamer-cache.bin;WAYLAND_DISPLAY=westeros-cobalt;FORCE_SAP=TRUE;FORCE_SVP=TRUE' /usr/bin/RialtoServerManagerSim

    Note:

     If you are not able to play HLS using rialto-mse sinks, then try to increase value of RIALTO_SESSION_SERVER_STARTUP_TIMEOUT_MS (>2000) or remove the TIMEOUT. So, there will be no startup limit.
  • Run Rialto Server for YouTube:

    curl -X POST -d "" localhost:9008/SetState/YouTube/Active


  • Command used to run test streams:

    GST_REGISTRY=/tmp/rialto-registry.bin RIALTO_DEBUG=5 RIALTO_CONSOLE_LOG=1 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" gst-launch-1.0 playbin uri=https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd

           Note: 

    • Make sure rialto-registry.bin is cleared
      rm /tmp/rialto-registry.bin

Running YouTube with Rialto

  • Stop wpeframework 

    systemctl stop wpeframework
  • For Rpi4 platform - Run the below command in all terminals where you need to run the rialto commands.

    export WESTEROS_DRM_CARD=/dev/dri/card0

    Note:  In case of Rpi3 platform, no need to run the above command. Since, Rpi3 uses only one master card.


  • For below steps, Refer Running YouTube with Rialto - Preferred Program - RDK Central Wiki page.
    - Run westeros
    - Start server manager simulator
    - Run Rialto Server for YouTube

  • Command used to launch YouTube Homepage.

    GST_REGISTRY=/tmp/rialto-registry.bin 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="/usr/share/content/data" RIALTO_CLIENT_BACKEND_LIB="/usr/lib/libRialtoClient.so" /usr/bin/cobalt_bin

           Note: 

    • There is a small correction in the below "Run YouTube" Command mentioned in rdk wiki page

    • remove "$PWD" in COBALT_CONTENT_DIR

    • Make sure rialto-registry.bin is cleared
      rm /tmp/rialto-registry.bin

Pipeline Diagram



Application Session Management - Overview

RDK Shell + Rialto Architecture (Proposed)



App'n Launch Life cycle

test

  • initiateApplication - creates a new RialtoSessionServer/RialtoServer instance.
  • changeSessionServerState - requests Rialtosessionserver/RailtoServer to change its state
  • socketpair is used to create the point-to-point IPC channel used for all Rialto Server Manager to Rialto Application Session Server communications
  • Application Session Server sends first message so Server Manager knows that it is now up and running
  • Session server creates the socket that the app will use for sending AV data and control respectively.

App'n Suspend Life cycle

suspend

App'n Destroy Life cycle

destroy


Design Approach

  • Initial approach was to run RialtoServerManager using systemd during the boot up sequence. 

After further review it was decided RialtoServerManager shouldn't be started by service file directly.

libRialtoServerManager.so should be responsible for creating an instance of RialtoServerManager which should spawn the socket for running rialto.

  • Later it was decided to link RialtoServerManager.so with RDKShell, no need to run the system service. 

As mentioned above the latest approach was to integrate libRialtoServerManager.so to RDKShell which would give RDKShell the access to invoke API's.

API's to be invoked via RDKShell.

https://github.com/rdkcentral/rialto/blob/master/serverManager/public/include/IServerManagerService.h

initiateApplication - causes for a new RialtoSessionServer instance to be spawned.

https://github.com/vijith-tv/rdkservices/blob/sprint/23Q2/RDKShell/RDKShell.cpp#L3517 places for invoking the API suggetsed by Michael

changeSessionServerState - requests an session server to change its state

https://github.com/vijith-tv/rdkservices/blob/sprint/23Q2/RDKShell/RDKShell.cpp#L4011 - suspend

https://github.com/vijith-tv/rdkservices/blob/sprint/23Q2/RDKShell/RDKShell.cpp#L4086 - destroy

Linking libRialtoServerManager.so to RDKShell

https://code.rdkcentral.com/r/c/components/generic/rdk-oe/meta-cmf-video/+/83909 pushed the code review to feature brach cretaed for upstareming the changes


  • Rialto Distro feature was enabled in rdk_next to build Rialto components in RDK builds. 

https://code.rdkcentral.com/r/plugins/gitiles/rdk/components/generic/rdk-oe/meta-cmf/+/refs/heads/rdk-next/recipes-core/packagegroups/packagegroup-rdk-media-common.bbappend#20

https://code.rdkcentral.com/r/plugins/gitiles/components/generic/rdk-oe/meta-cmf-video/+/refs/heads/rdk-next/recipes-extended/rialto/

  • RDK shell session management will handle following Rialto state changes 
    • Launch
    • Suspend
    • Destroy


Known issues / Limitations

Encrypted playback is not verified as a part of POC.











  • No labels