aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
blob: a7be6d65e6d2769c27e05a37a13070d5eb66c14e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# 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.

Transmitter plugin provides the API to create remote connections and push
surfaces over the network and handles remote input, with the remote output
being handled by the remoting plug-in.


### Architecture

````
				ECU 1                                                                     ECU 2
              +-----------------------------------------------------+                    +----------------------------------------------+
              |        +-----------------+                          |                    |                                              |
              |        | IVI-Application |                          |                    |               +-----------+-----------+      |
              |        +-----------------+                          |                    |               | Gstreamer |           |      |
              |                 ^                                   |    Buffer   -----------------------> (Decode)  |           |      |
              |        wayland  |                         +----------------------/       |               +-----------+           |      |
              |                 v                         |         |    (Ethernet)      |               |     Waltham-receiver  |      |
              |   +----+---------------------+            |         |        ---------------------------->                       |      |
              |   |    |  Transmitter Plugin |<-----------------------------/            |               +-----------------------+      |
              |   |    |                     |            |         |  Waltham-Protocol  |                             ^                |
              |   |    |---------------------+            |         |                    |                     wayland |                |
              |   |    |  Remoting plug-in   |------------+         |                    |                             v                |
              |   |    |                     |                      |                    |                 +---------------------+      |
              |   |    +-+-------------------+                      |                    |                 |                     |      |
              |   |                          |                      |                    |                 |       compositor    |      |
              |   |        compositor        |                      |                    |                 |                     |      |
              |   +------+-------------------+                      |                    |                 +----------------+----+      |
              |          |                                          |                    |                                  |           |
              |          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/waltham-transmitter

3. Create build folder

	$ cd waltham-transmitter
	$ meson -Dprefix=$PREFIX_PATH build/

4. Run ninja

	$ ninja -C build/ install

5. waltham-transmitter.so should be available in the
   $PREFIX_PATH/lib/x86_64-linux-gnu/libweston-$MAJOR

### How to configure the compositor and gstreamer pipeline

1. weston.ini:

The transmitter plugin will be loaded automatically is found in the plug-ins 
directory of weston.

The destination of remoting output is configured in weston.ini and it matches
the key entries from the remoting plug-in -- the output being actually created
by the remoting plug-in.  Add output name, server address, mode ini entries
under '[transmitter-output]'. You can specify multiple [transmitter-output].

You can specify which application to be started/placed on the remote output
by adding agl-shell-app-id=app_id_name.

2. gstreamer pipeline:

You can customize the gstreamer pipeline as you want by configuring the
pipeline entry.

Some pipeline gstreamer examples are in the following files:

- 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.

### 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
   [transmitter-output] matches the Waltham-Receiver IP.

### How to test

Start the compositor with modified weston.ini mention above.  You can confirm
the transmitter is loaded properly from weston log as below.

````
[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


The compositor log will indicate remoting has started:

````

````