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