summaryrefslogtreecommitdiffstats
path: root/waltham-transmitter/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'waltham-transmitter/README.md')
-rw-r--r--waltham-transmitter/README.md148
1 files changed, 148 insertions, 0 deletions
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
+````