From 2e0789fdb4141807b9367787e3bb4098c40f7e2a Mon Sep 17 00:00:00 2001 From: Veeresh Kadasani Date: Fri, 5 Jul 2019 13:36:09 +0900 Subject: README.md: Add README.md file Add updated README.md file and remove old README Change-Id: I9333f0935f12fc998c4482d4f649cb8dde0dbd4e Signed-off-by: Veeresh Kadasani --- waltham-transmitter/README.md | 148 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 waltham-transmitter/README.md (limited to 'waltham-transmitter/README.md') diff --git a/waltham-transmitter/README.md b/waltham-transmitter/README.md new file mode 100644 index 0000000..b358cfd --- /dev/null +++ b/waltham-transmitter/README.md @@ -0,0 +1,148 @@ +# Waltham Transmitter # + +Waltham transmitter is a plugin for weston which uses +waltham IPC library to connect to remote and transmit +client buffer using gstreamer framework + +Waltham Transmitter is divide in to two component: + +1. Transmitter plugin: Provides API to create remote connections and push surfaces over the network and handles remote output and remote input. +2. waltham renderer : The waltham renderer creates a buffer to be transmitted to other domain. The current implementation it uses gstreamer. + +###Architecture + +```` + ECU 1 ECU 2 + +-----------------------------------------------------+ +----------------------------------------------+ + | +-----------------+ | | | + | | IVI-Application | | | +-----------+-----------+ | + | +-----------------+ | | | Gstreamer | | | + | ^ | Buffer -----------------------> (Decode) | | | + | wayland | +----------------------/ | +-----------+ | | + | v | | (Ethernet) | | Waltham-receiver | | + | +----+---------------------+ | | ----------------------------> | | + | | | Transmitter Plugin |<-----------------------------/ | +-----------------------+ | + | | | | | | Waltham-Protocol | ^ | + | | | +-------------------+ | | | wayland | | + | | | | waltham-renderer |------------+ | | v | + | | | |(gstreamer Encode) | | | +---------------------+ | + | | +-+-------------------+ | | | | | + | | | | | | WESTON | | + | | WESTON | | | | | | + | +------+-------------------+ | | +----------------+----+ | + | | | | | | + | v | | v | + | +------------+ | | +----------+ | + | | Display | | | | Display | | + | | | | | | | | + | +------------+ | | +----------+ | + +-----------------------------------------------------+ +----------------------------------------------+ + +```` + +###How to build + +1. Prerequisite before building + + weston, wayland , gstreamer plugins and waltham should be built and available. + +2. Get the source code from the repository. + + git clone https://gerrit.automotivelinux.org/gerrit/src/weston-ivi-plugins + +3. Create build folder in weston-ivi-plugins + + $cd weston-ivi-plugins/ + $mkdir build/ + $cd build/ + +4. Run Cmake + + $cmake ../ + $cmake --build . + +5. transmitter.so and waltham-renderer.so should be available in the build directory. + +###How to configure weston.ini and gstreamer pipeline + +1. weston.ini: + + To load transmitter plugin to weston, add 'transmitter.so' to the 'modules' + key under '[core]', and make sure the 'shell' is 'ivi-shell.so'. + + The destination of remoting is configured in weston.ini. + Add output name, server address, port number, output's width and height key + under '[remote-output]'. You can speficy multiple [remote-output]. + + In details, see 'weston.ini.transmitter'. + +2. gstreamer pipeline: + + You can use gstreamer pipeline as you want by configuraing from "pipeline.cfg".This file should + be in the folder "/etc/xdg/weston/". + + As an example, please refer to the example file named "pipeline_example*.cfg". + + - pipeline_example_general.cfg : Does not use any HW encoder. + - pipeline_example_intel.cfg : Use Intel's HW encoder. + - pipeline_example_rcar.cfg : Use Rcar's HW encoder. + + Rename file as "pipeline.cfg" and put in correct place when you use them. + +###Connection Establishment + +1. Connect two board over ethernet. + +2. Assign IP to both the boards and check if the simple ping works. + + For example:if transmitter IP: 192.168.2.51 and Waltham-Receiver IP: 192.168.2.52 then + + $ping 192.168.2.52 (you can also ping vice versa) + +3. Make sure that IP address specified in the weston.ini under [remote-output] matches the Waltham-Receiver IP. + +4. Make sure that IP address in pipeline.cfg on the transmitter side match the Waltham-Receiver IP. + +###How to test + +start weston with modified weston.ini mention above. +You can confirm the transmitter is loaded properly from +weston log as below. + +```` + + [07:14:22.958] Loading module '/usr/lib/weston/transmitter.so' + [07:14:22.977] Registered plugin API 'transmitter_v1' of size 88 + [07:14:22.978] Registered plugin API 'transmitter_ivi_v1' of size 16 + [07:14:22.982] Loading module '/usr/lib/libweston-2/waltham-renderer.so' + [07:14:23.032] Transmitter initialized. + [07:14:23.032] Module '/usr/lib/libweston-2/waltham-renderer.so' already loaded + [07:14:23.032] Transmitter weston_seat 0xaaaad0079e50 + [07:14:23.032] Transmitter created pointer=0xaaaad00977c0 for seat 0xaaaad0079e50 + [07:14:23.032] Transmitter created keyboard=0xaaaad0079fe0 for seat 0xaaaad0079e50 + [07:14:23.032] Transmitter created touch=0xaaaacffe1010 for seat 0xaaaad0079e50 +```` +Start remoting : + +- Start an IVI application. +- Put surface on transmitter output using LayerManagerControl command + +Example command: + + $EGLWLMockNavigation & + $LaygeManagementControl get scene + -> Please check connector name of transmitter output + $layer-add-surfaces -d [transmitter output name] -s 1 -l 1 + +Weston log will indicate remoting has started: + +```` + [07:16:39.043] surface ID 10 + [07:16:39.055] gst-setting are :--> + [07:16:39.055] ip = 192.168.2.52 + [07:16:39.055] port = 34400 + [07:16:39.055] bitrate = 3000000 + [07:16:39.055] width = 800 + [07:16:39.055] height = 480 + [07:16:40.819] Parsing GST pipeline:appsrc name=src ! videoconvert ! video/x-raw,format=I420 ! omxh264enc bitrate=3000000 control-rate=2 ! rtph264pay ! udpsink name=sink host=192.168.2.52 port=34400 sync=false async=false +```` -- cgit 1.2.3-korg