| 140 | == __mjpeg__ == |
| 141 | |
| 142 | This multi-threaded application makes the decompression of a MJPEG bit-stream contained in a file, an display the stream of images on the Frame Buffer. |
| 143 | It illustrates the "multi pipe-line" parallelism. It uses the message passing programming model, on top of the POSIX threads API, and the MWMR communication middleware. |
| 144 | The application is described as a TCG (Task and Communication Graph), and all communications between threads uses MWMR channels. |
| 145 | Each pipeline decompress one complete image, and there is one pipe-line per cluster. |
| 146 | It uses the chained buffer DMA component to display the stream of decompressed images.ç!!l:=m |
| 147 | It contains 6 types of threads (plus the "main" thread, that makes initialisation), and 7 types of MWMR communication channels: |
| 148 | * the TG thread dispatch the bit-stream to the pipeline. It is only mapped in cluster[0,0]. |
| 149 | * the 5 threads implementing the pipeline (DEMUX, VLD, IQZZ, IDCT, LIBU) are replicated in all clusters. |
| 150 | * the 7 MWMR channels are replicated in all clusters. |
| 151 | The image throughput is actually bounded by the TG task that cannot be parallelized. |
| 152 | |
| 153 | The hardware constraints are the following |
| 154 | * The number of clusters cannot be larger than 16*16. |
| 155 | * The number of processors per cluster cannot be larger than 4. |
| 156 | * The frame buffer size must fit the decompressed images size. |
| 157 | * It uses one TTY terminal shared by all tasks. |
| 158 | |
| 159 | All parameters (number of images, depths of communication channels, debug variables) are defined in the [source:soft/giet_vm/applications/mjpeg/mjpeg.h mjpeg.h] file. |
| 160 | |
| 161 | The source code can be found [source:soft/giet_vm/applications/mjpeg/mjpeg.c here], and the mapping is defined [source:soft/giet_vm/applications/mjpeg/mjpeg.py here]. |
| 162 | |
174 | | |
175 | | == __mjpeg__ == |
176 | | |
177 | | This multi-threaded application makes the decompression of a MJPEG bit-stream contained in a file, an display the stream of images on the Frame Buffer. |
178 | | It illustrates the "multi pipe-line" parallelism. It uses the message passing programming model, on top of the POSIX threads API, and the MWMR communication middleware. |
179 | | The application is described as a TCG (Task and Communication Graph), and all communications between threads uses MWMR channels. |
180 | | Each pipeline decompress one complete image, and there is one pipe-line per cluster. |
181 | | It uses the chained buffer DMA component to display the stream of decompressed images.ç!!l:=m |
182 | | It contains 6 types of threads (plus the "main" thread, that makes initialisation), and 7 types of MWMR communication channels: |
183 | | * the TG thread dispatch the bit-stream to the pipeline. It is only mapped in cluster[0,0]. |
184 | | * the 5 threads implementing the pipeline (DEMUX, VLD, IQZZ, IDCT, LIBU) are replicated in all clusters. |
185 | | * the 7 MWMR channels are replicated in all clusters. |
186 | | The image throughput is actually bounded by the TG task that cannot be parallelized. |
187 | | |
188 | | The hardware constraints are the following |
189 | | * The number of clusters cannot be larger than 16*16. |
190 | | * The number of processors per cluster is not constrained. |
191 | | * The frame buffer size must fit the decompressed images size. |
192 | | * It uses one TTY terminal shared by all tasks. |
193 | | |
194 | | All parameters (number of images, depths of communication channels, debug variables) are defined in the [source:soft/giet_vm/applications/mjpeg/mjpeg.h mjpeg.h] file. |
195 | | |
196 | | The source code can be found [source:soft/giet_vm/applications/mjpeg/mjpeg.c here], and the mapping is defined [source:soft/giet_vm/applications/mjpeg/mjpeg.py here]. |