libweed  0.6.0
weed-compat.h
Go to the documentation of this file.
1 /* WEED is free software; you can redistribute it and/or
2  modify it under the terms of the GNU Lesser General Public
3  License as published by the Free Software Foundation; either
4  version 3 of the License, or (at your option) any later version.
5 
6  Weed is distributed in the hope that it will be useful,
7  but WITHOUT ANY WARRANTY; without even the implied warranty of
8  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
9  Lesser General Public License for more details.
10 
11  You should have received a copy of the GNU Lesser General Public
12  License along with this source code; if not, write to the Free Software
13  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
14 
15 
16  Weed is developed by:
17 
18  Gabriel "Salsaman" Finch - http://lives.sourceforge.net
19 
20  mainly based on LiViDO, which is developed by:
21 
22 
23  Niels Elburg - http://veejay.sf.net
24 
25  Gabriel "Salsaman" Finch - http://lives.sourceforge.net
26 
27  Denis "Jaromil" Rojo - http://freej.dyne.org
28 
29  Tom Schouten - http://zwizwa.fartit.com
30 
31  Andraz Tori - http://cvs.cinelerra.org
32 
33  reviewed with suggestions and contributions from:
34 
35  Silvano "Kysucix" Galliani - http://freej.dyne.org
36 
37  Kentaro Fukuchi - http://megaui.net/fukuchi
38 
39  Jun Iio - http://www.malib.net
40 
41  Carlo Prelz - http://www2.fluido.as:8080/
42 
43 */
44 
45 /* (C) Gabriel "Salsaman" Finch, 2005 - 2016 */
46 
47 #ifndef __WEED_COMPAT_H__
48 #define __WEED_COMPAT_H__
49 
50 #ifdef __cplusplus
51 extern "C"
52 {
53 #endif /* __cplusplus */
54 
55 
56 #ifdef NEED_FOURCC_COMPAT
57 
58 #ifndef __WEED_PALETTES_H__
59 #include <weed/weed-palettes.h>
60 #endif
61 
62 int fourccp_to_weedp(unsigned int fourcc, int bpp, int *interlaced, int *sampling,
63  int *sspace, int *clamping) {
64  // inputs are fourcc and bpp
65  // returns int weed_palette
66 
67  // optionally sets interlaced (0 = none, 1 = interlaced), sampling, subspace and clamping
68 
69 
70 
71  // TODO - this is probably wrong for some formats and needs testing/verifying with various devices
72  // fourcc colorcodes are a nasty mess, and should be avoided whenever possible
73 
74  // data from http://www.fourcc.org
75 
76  if (clamping != NULL) *clamping = WEED_YUV_CLAMPING_CLAMPED;
77  if (interlaced != NULL) *interlaced = 0;
78  if (sspace != NULL) *sspace = WEED_YUV_SUBSPACE_YCBCR;
79  if (sampling != NULL) *sampling = WEED_YUV_SAMPLING_DEFAULT;
80 
81  switch (fourcc) {
82  // RGB formats
83  case 0x32524742: // BGR3
84  case 0x33524742: // BGR3 - tested and OK
85  case 0x34524742: // BGR4
86  if (bpp == 24) return WEED_PALETTE_BGR24;
87  if (bpp == 32) return WEED_PALETTE_BGRA32;
88  break;
89 
90  case 0x00000000: // BI_RGB - RGB or BGR ???
91  case 0x32776172: // raw2 - RGB or BGR ???
92 
93  case 0x32424752: // RGB2
94  case 0x33424752: // RGB3
95  case 0x34424752: // RGB4
96  if (bpp == 24) return WEED_PALETTE_RGB24;
97  if (bpp == 32) return WEED_PALETTE_RGBA32;
98  break;
99  case 0x41424752: // RGBA
100  if (bpp == 32) return WEED_PALETTE_RGBA32;
101  break;
102 
103 
104  // YUV packed formats
105 
106  case 0x56595549: // IUYV
107  if (interlaced != NULL) *interlaced = 1;
108  return WEED_PALETTE_UYVY;
109  case 0x31555949: // IYU1
110  case 0x31313459: // Y411
111  return WEED_PALETTE_YUV411;
112  case 0x32555949: // IYU2
113  return WEED_PALETTE_YUV888;
114  case 0x43594448: // HDYC
115  if (sspace != NULL) *sspace = WEED_YUV_SUBSPACE_BT709;
116  return WEED_PALETTE_UYVY;
117  case 0x564E5955: // UYNV
118  case 0x59565955: // UYVY
119  case 0x32323459: // Y422
120  case 0x76757963: // cyuv - ???
121  return WEED_PALETTE_UYVY;
122  case 0x32595559: // YUY2
123  case 0x56595559: // YUYV - tested and OK
124  case 0x564E5559: // YUNV
125  case 0x31313259: // Y211 - ???
126  return WEED_PALETTE_YUYV;
127  case 0x59455247: // grey
128  if (clamping != NULL) *clamping = WEED_YUV_CLAMPING_UNCLAMPED;
129  case 0x30303859: // Y800
130  case 0x20203859: // Y8
131  return WEED_PALETTE_A8;
132 
133 
134  // YUV planar formats
135  case 0x41565559: // YUVA
136  return WEED_PALETTE_YUVA4444P;
137  break;
138  case 0x34343449: // I444
139  return WEED_PALETTE_YUV444P;
140  break;
141  case 0x50323234: // 422P ??
142  return WEED_PALETTE_YUV422P;
143  break;
144  case 0x32315659: // YV12
145  return WEED_PALETTE_YVU420P;
146  case 0x30323449: // I420
147  case 0x56555949: // IYUV
148  case 0x32315559: // YU12 ??
149  return WEED_PALETTE_YUV420P;
150 
151  case 0x3032344a: // J420
152  if (clamping != NULL) *clamping = WEED_YUV_CLAMPING_UNCLAMPED;
153  return WEED_PALETTE_YUV420P;
154  case 0x3232344a: // J422
155  if (clamping != NULL) *clamping = WEED_YUV_CLAMPING_UNCLAMPED;
156  return WEED_PALETTE_YUV422P;
157  case 0x3434344a: // J444
158  if (clamping != NULL) *clamping = WEED_YUV_CLAMPING_UNCLAMPED;
159  return WEED_PALETTE_YUV444P;
160 
161 
162  // known formats we cannot use
163  case 0x50424752: // RGBP - palettised RGB
164  case 0x4f424752: // RGB0 - 15 or 16 bit RGB
165  case 0x51424752: // RGBQ - 15 or 16 bit RGB
166  case 0x52424752: // RGBR - ???
167 
168  case 0x3231564e: // NV12 - planar Y, packed UV
169  case 0x30313276: // v210 - 10 bit 422, packed
170 
171  case 0x39565559: // YUV9 - 410 planar palette
172  case 0x30313449: // I410 - 410 planar palette
173 
174  case 0x31313449: // I411 - 411 planar palette
175  case 0x30343449: // I440 - 440 planar palette
176  case 0x30343450: // J440 - 440 planar palette unclamped
177 
178  // no match
179  default:
180  return WEED_PALETTE_END;
181  }
182  return WEED_PALETTE_END;
183 }
184 
185 
186 
187 
188 #endif
189 
190 
191 
192 
193 
194 
195 
196 
197 #ifdef HAVE_AVCODEC
198 #ifdef HAVE_AVUTIL
199 
200 // compatibility with libavcodec
201 
202 #include <libavcodec/avcodec.h>
203 #include <libavutil/pixfmt.h>
204 
205 typedef struct AVCodecTag {
206  int id;
207  unsigned int tag;
208 } AVCodecTag;
209 
210 #ifndef MKTAG
211 #define MKTAG(a, b, c, d) ((a) | ((b) << 8) | ((c) << 16) | ((d) << 24))
212 #endif
213 
214 
215 #if (LIBAVCODEC_VERSION_MAJOR > 54)
216 #define CodecID AVCodecID
217 
218 #define CODEC_ID_NONE AV_CODEC_ID_NONE
219 #define CODEC_ID_H264 AV_CODEC_ID_H264
220 #define CODEC_ID_H263 AV_CODEC_ID_H263
221 #define CODEC_ID_H263P AV_CODEC_ID_H263P
222 #define CODEC_ID_H263I AV_CODEC_ID_H263I
223 #define CODEC_ID_H261 AV_CODEC_ID_H261
224 #define CODEC_ID_MPEG4 AV_CODEC_ID_MPEG4
225 #define CODEC_ID_MSMPEG4V3 AV_CODEC_ID_MSMPEG4V3
226 #define CODEC_ID_MSMPEG4V2 AV_CODEC_ID_MSMPEG4V2
227 #define CODEC_ID_MSMPEG4V1 AV_CODEC_ID_MSMPEG4V1
228 #define CODEC_ID_WMV1 AV_CODEC_ID_WMV1
229 #define CODEC_ID_WMV2 AV_CODEC_ID_WMV2
230 #define CODEC_ID_DVVIDEO AV_CODEC_ID_DVVIDEO
231 #define CODEC_ID_MPEG1VIDEO AV_CODEC_ID_MPEG1VIDEO
232 #define CODEC_ID_MPEG2VIDEO AV_CODEC_ID_MPEG2VIDEO
233 #define CODEC_ID_MJPEG AV_CODEC_ID_MJPEG
234 #define CODEC_ID_LJPEG AV_CODEC_ID_LJPEG
235 #define CODEC_ID_JPEGLS AV_CODEC_ID_JPEGLS
236 #define CODEC_ID_HUFFYUV AV_CODEC_ID_HUFFYUV
237 #define CODEC_ID_FFVHUFF AV_CODEC_ID_FFVHUFF
238 #define CODEC_ID_CYUV AV_CODEC_ID_CYUV
239 #define CODEC_ID_RAWVIDEO AV_CODEC_ID_RAWVIDEO
240 #define CODEC_ID_INDEO2 AV_CODEC_ID_INDEO2
241 #define CODEC_ID_INDEO3 AV_CODEC_ID_INDEO3
242 #define CODEC_ID_INDEO4 AV_CODEC_ID_INDEO4
243 #define CODEC_ID_INDEO5 AV_CODEC_ID_INDEO5
244 #define CODEC_ID_VP3 AV_CODEC_ID_VP3
245 #define CODEC_ID_VP5 AV_CODEC_ID_VP5
246 #define CODEC_ID_VP6 AV_CODEC_ID_VP6
247 #define CODEC_ID_VP6F AV_CODEC_ID_VP6F
248 #define CODEC_ID_VP6A AV_CODEC_ID_VP6A
249 #define CODEC_ID_ASV1 AV_CODEC_ID_ASV1
250 #define CODEC_ID_ASV2 AV_CODEC_ID_ASV2
251 #define CODEC_ID_VCR1 AV_CODEC_ID_VCR1
252 #define CODEC_ID_FFV1 AV_CODEC_ID_FFV1
253 #define CODEC_ID_XAN_WC4 AV_CODEC_ID_XAN_WC4
254 #define CODEC_ID_MIMIC AV_CODEC_ID_MIMIC
255 #define CODEC_ID_MSRLE AV_CODEC_ID_MSRLE
256 #define CODEC_ID_MSVIDEO1 AV_CODEC_ID_MSVIDEO1
257 #define CODEC_ID_CINEPAK AV_CODEC_ID_CINEPAK
258 #define CODEC_ID_TRUEMOTION1 AV_CODEC_ID_TRUEMOTION1
259 #define CODEC_ID_TRUEMOTION2 AV_CODEC_ID_TRUEMOTION2
260 #define CODEC_ID_MSZH AV_CODEC_ID_MSZH
261 #define CODEC_ID_ZLIB AV_CODEC_ID_ZLIB
262 
263 #if FF_API_SNOW
264 #define CODEC_ID_SNOW AV_CODEC_ID_SNOW
265 #endif
266 
267 #define CODEC_ID_4XM AV_CODEC_ID_4XM
268 #define CODEC_ID_FLV1 AV_CODEC_ID_FLV1
269 #define CODEC_ID_FLASHSV AV_CODEC_ID_FLASHSV
270 #define CODEC_ID_SVQ1 AV_CODEC_ID_SVQ1
271 #define CODEC_ID_TSCC AV_CODEC_ID_TSCC
272 #define CODEC_ID_ULTI AV_CODEC_ID_ULTI
273 #define CODEC_ID_VIXL AV_CODEC_ID_VIXL
274 #define CODEC_ID_QPEG AV_CODEC_ID_QPEG
275 #define CODEC_ID_WMV3 AV_CODEC_ID_WMV3
276 #define CODEC_ID_VC1 AV_CODEC_ID_VC1
277 #define CODEC_ID_LOCO AV_CODEC_ID_LOCO
278 #define CODEC_ID_WNV1 AV_CODEC_ID_WNV1
279 #define CODEC_ID_AASC AV_CODEC_ID_AASC
280 #define CODEC_ID_FRAPS AV_CODEC_ID_FRAPS
281 #define CODEC_ID_THEORA AV_CODEC_ID_THEORA
282 #define CODEC_ID_CSCD AV_CODEC_ID_CSCD
283 #define CODEC_ID_ZMBV AV_CODEC_ID_ZMBV
284 #define CODEC_ID_KMVC AV_CODEC_ID_KMVC
285 #define CODEC_ID_CAVS AV_CODEC_ID_CAVS
286 #define CODEC_ID_JPEG2000 AV_CODEC_ID_JPEG2000
287 #define CODEC_ID_VMNC AV_CODEC_ID_VMNC
288 #define CODEC_ID_TARGA AV_CODEC_ID_TARGA
289 #define CODEC_ID_PNG AV_CODEC_ID_PNG
290 #define CODEC_ID_GIF AV_CODEC_ID_GIF
291 #define CODEC_ID_TIFF AV_CODEC_ID_TIFF
292 #define CODEC_ID_CLJR AV_CODEC_ID_CLJR
293 #define CODEC_ID_DIRAC AV_CODEC_ID_DIRAC
294 #define CODEC_ID_RPZA AV_CODEC_ID_RPZA
295 #define CODEC_ID_SP5X AV_CODEC_ID_SP5X
296 
297 #define CODEC_ID_FLASHSV2 AV_CODEC_ID_FLASHSV2
298 #define CODEC_ID_TEXT AV_CODEC_ID_TEXT
299 #define CODEC_ID_SSA AV_CODEC_ID_SSA
300 #define CODEC_ID_SRT AV_CODEC_ID_SRT
301 #define CODEC_ID_VP8 AV_CODEC_ID_VP8
302 #define CODEC_ID_RV10 AV_CODEC_ID_RV10
303 #define CODEC_ID_RV20 AV_CODEC_ID_RV20
304 #define CODEC_ID_RV30 AV_CODEC_ID_RV30
305 #define CODEC_ID_RV40 AV_CODEC_ID_RV40
306 #define CODEC_ID_MP3 AV_CODEC_ID_MP3
307 #define CODEC_ID_MP2 AV_CODEC_ID_MP2
308 #define CODEC_ID_AAC AV_CODEC_ID_AAC
309 #define CODEC_ID_PCM_BLURAY AV_CODEC_ID_PCM_BLURAY
310 #define CODEC_ID_AC3 AV_CODEC_ID_AC3
311 #define CODEC_ID_VORBIS AV_CODEC_ID_VORBIS
312 #define CODEC_ID_EAC3 AV_CODEC_ID_EAC3
313 #define CODEC_ID_DTS AV_CODEC_ID_DTS
314 #define CODEC_ID_TRUEHD AV_CODEC_ID_TRUEHD
315 #define CODEC_ID_S302M AV_CODEC_ID_S302M
316 #define CODEC_ID_DVB_TELETEXT AV_CODEC_ID_DVB_TELETEXT
317 #define CODEC_ID_DVB_SUBTITLE AV_CODEC_ID_DVB_SUBTITLE
318 #define CODEC_ID_DVD_SUBTITLE AV_CODEC_ID_DVD_SUBTITLE
319 
320 #define CODEC_ID_MOV_TEXT AV_CODEC_ID_MOV_TEXT
321 #define CODEC_ID_MP4ALS AV_CODEC_ID_MP4ALS
322 #define CODEC_ID_QCELP AV_CODEC_ID_QCELP
323 #define CODEC_ID_MPEG4SYSTEMS AV_CODEC_ID_MPEG4SYSTEMS
324 
325 #define CODEC_ID_MPEG2TS AV_CODEC_ID_MPEG2TS
326 #define CODEC_ID_AAC_LATM AV_CODEC_ID_AAC_LATM
327 #define CODEC_ID_HDMV_PGS_SUBTITLE AV_CODEC_ID_HDMV_PGS_SUBTITLE
328 
329 #define CODEC_ID_FLAC AV_CODEC_ID_FLAC
330 #define CODEC_ID_MLP AV_CODEC_ID_MLP
331 
332 #define CODEC_ID_PCM_F32LE AV_CODEC_ID_PCM_F32LE
333 #define CODEC_ID_PCM_F64LE AV_CODEC_ID_PCM_F64LE
334 
335 #define CODEC_ID_PCM_S16BE AV_CODEC_ID_PCM_S16BE
336 #define CODEC_ID_PCM_S24BE AV_CODEC_ID_PCM_S24BE
337 #define CODEC_ID_PCM_S32BE AV_CODEC_ID_PCM_S32BE
338 
339 #define CODEC_ID_PCM_S16LE AV_CODEC_ID_PCM_S16LE
340 #define CODEC_ID_PCM_S24LE AV_CODEC_ID_PCM_S24LE
341 #define CODEC_ID_PCM_S32LE AV_CODEC_ID_PCM_S32LE
342 
343 #define CODEC_ID_PCM_U8 AV_CODEC_ID_PCM_U8
344 
345 #define CODEC_ID_QDM2 AV_CODEC_ID_QDM2
346 #define CODEC_ID_RA_144 AV_CODEC_ID_RA_144
347 #define CODEC_ID_RA_288 AV_CODEC_ID_RA_288
348 #define CODEC_ID_ATRAC3 AV_CODEC_ID_ATRAC3
349 #define CODEC_ID_COOK AV_CODEC_ID_COOK
350 #define CODEC_ID_SIPR AV_CODEC_ID_SIPR
351 #define CODEC_ID_TTA AV_CODEC_ID_TTA
352 #define CODEC_ID_WAVPACK AV_CODEC_ID_WAVPACK
353 
354 #define CODEC_ID_TTF AV_CODEC_ID_TTF
355 
356 // from mkv_decoder.h
357 #define CODEC_ID_R10K AV_CODEC_ID_R10K
358 #define CODEC_ID_R210 AV_CODEC_ID_R210
359 #define CODEC_ID_V210 AV_CODEC_ID_V210
360 #define CODEC_ID_MJPEGB AV_CODEC_ID_MJPEGB
361 #define CODEC_ID_SVQ3 AV_CODEC_ID_SVQ3
362 #define CODEC_ID_8BPS AV_CODEC_ID_8BPS
363 #define CODEC_ID_SMC AV_CODEC_ID_SMC
364 #define CODEC_ID_QTRLE AV_CODEC_ID_QTRLE
365 #define CODEC_ID_QDRAW AV_CODEC_ID_QDRAW
366 #define CODEC_ID_DNXHD AV_CODEC_ID_DNXHD
367 #define CODEC_ID_SGI AV_CODEC_ID_SGI
368 #define CODEC_ID_DPX AV_CODEC_ID_DPX
369 #define CODEC_ID_PRORES AV_CODEC_ID_PRORES
370 
371 
372 
373 
374 #endif
375 
376 const AVCodecTag codec_bmp_tags[] = {
377  { CODEC_ID_H264, MKTAG('H', '2', '6', '4') },
378  { CODEC_ID_H264, MKTAG('h', '2', '6', '4') },
379  { CODEC_ID_H264, MKTAG('X', '2', '6', '4') },
380  { CODEC_ID_H264, MKTAG('x', '2', '6', '4') },
381  { CODEC_ID_H264, MKTAG('a', 'v', 'c', '1') },
382  { CODEC_ID_H264, MKTAG('V', 'S', 'S', 'H') },
383  { CODEC_ID_H263, MKTAG('H', '2', '6', '3') },
384  { CODEC_ID_H263, MKTAG('X', '2', '6', '3') },
385  { CODEC_ID_H263, MKTAG('T', '2', '6', '3') },
386  { CODEC_ID_H263, MKTAG('L', '2', '6', '3') },
387  { CODEC_ID_H263, MKTAG('V', 'X', '1', 'K') },
388  { CODEC_ID_H263, MKTAG('Z', 'y', 'G', 'o') },
389  { CODEC_ID_H263P, MKTAG('H', '2', '6', '3') },
390  { CODEC_ID_H263I, MKTAG('I', '2', '6', '3') }, /* intel h263 */
391  { CODEC_ID_H261, MKTAG('H', '2', '6', '1') },
392  { CODEC_ID_H263P, MKTAG('U', '2', '6', '3') },
393  { CODEC_ID_H263P, MKTAG('v', 'i', 'v', '1') },
394  { CODEC_ID_MPEG4, MKTAG('F', 'M', 'P', '4') },
395  { CODEC_ID_MPEG4, MKTAG('D', 'I', 'V', 'X') },
396  { CODEC_ID_MPEG4, MKTAG('D', 'X', '5', '0') },
397  { CODEC_ID_MPEG4, MKTAG('X', 'V', 'I', 'D') },
398  { CODEC_ID_MPEG4, MKTAG('M', 'P', '4', 'S') },
399  { CODEC_ID_MPEG4, MKTAG('M', '4', 'S', '2') },
400  { CODEC_ID_MPEG4, MKTAG(4 , 0 , 0 , 0) }, /* some broken avi use this */
401  { CODEC_ID_MPEG4, MKTAG('D', 'I', 'V', '1') },
402  { CODEC_ID_MPEG4, MKTAG('B', 'L', 'Z', '0') },
403  { CODEC_ID_MPEG4, MKTAG('m', 'p', '4', 'v') },
404  { CODEC_ID_MPEG4, MKTAG('U', 'M', 'P', '4') },
405  { CODEC_ID_MPEG4, MKTAG('W', 'V', '1', 'F') },
406  { CODEC_ID_MPEG4, MKTAG('S', 'E', 'D', 'G') },
407  { CODEC_ID_MPEG4, MKTAG('R', 'M', 'P', '4') },
408  { CODEC_ID_MPEG4, MKTAG('3', 'I', 'V', '2') },
409  { CODEC_ID_MPEG4, MKTAG('F', 'F', 'D', 'S') },
410  { CODEC_ID_MPEG4, MKTAG('F', 'V', 'F', 'W') },
411  { CODEC_ID_MPEG4, MKTAG('D', 'C', 'O', 'D') },
412  { CODEC_ID_MPEG4, MKTAG('M', 'V', 'X', 'M') },
413  { CODEC_ID_MPEG4, MKTAG('P', 'M', '4', 'V') },
414  { CODEC_ID_MPEG4, MKTAG('S', 'M', 'P', '4') },
415  { CODEC_ID_MPEG4, MKTAG('D', 'X', 'G', 'M') },
416  { CODEC_ID_MPEG4, MKTAG('V', 'I', 'D', 'M') },
417  { CODEC_ID_MPEG4, MKTAG('M', '4', 'T', '3') },
418  { CODEC_ID_MPEG4, MKTAG('G', 'E', 'O', 'X') },
419  { CODEC_ID_MPEG4, MKTAG('H', 'D', 'X', '4') }, /* flipped video */
420  { CODEC_ID_MPEG4, MKTAG('D', 'M', 'K', '2') },
421  { CODEC_ID_MPEG4, MKTAG('D', 'I', 'G', 'I') },
422  { CODEC_ID_MPEG4, MKTAG('I', 'N', 'M', 'C') },
423  { CODEC_ID_MPEG4, MKTAG('E', 'P', 'H', 'V') }, /* Ephv MPEG-4 */
424  { CODEC_ID_MPEG4, MKTAG('E', 'M', '4', 'A') },
425  { CODEC_ID_MPEG4, MKTAG('M', '4', 'C', 'C') }, /* Divio MPEG-4 */
426  { CODEC_ID_MPEG4, MKTAG('S', 'N', '4', '0') },
427  { CODEC_ID_MPEG4, MKTAG('V', 'S', 'P', 'X') },
428  { CODEC_ID_MPEG4, MKTAG('U', 'L', 'D', 'X') },
429  { CODEC_ID_MPEG4, MKTAG('G', 'E', 'O', 'V') },
430  { CODEC_ID_MPEG4, MKTAG('S', 'I', 'P', 'P') }, /* Samsung SHR-6040 */
431  { CODEC_ID_MSMPEG4V3, MKTAG('D', 'I', 'V', '3') }, /* default signature when using MSMPEG4 */
432  { CODEC_ID_MSMPEG4V3, MKTAG('M', 'P', '4', '3') },
433  { CODEC_ID_MSMPEG4V3, MKTAG('M', 'P', 'G', '3') },
434  { CODEC_ID_MSMPEG4V3, MKTAG('D', 'I', 'V', '5') },
435  { CODEC_ID_MSMPEG4V3, MKTAG('D', 'I', 'V', '6') },
436  { CODEC_ID_MSMPEG4V3, MKTAG('D', 'I', 'V', '4') },
437  { CODEC_ID_MSMPEG4V3, MKTAG('D', 'V', 'X', '3') },
438  { CODEC_ID_MSMPEG4V3, MKTAG('A', 'P', '4', '1') },
439  { CODEC_ID_MSMPEG4V3, MKTAG('C', 'O', 'L', '1') },
440  { CODEC_ID_MSMPEG4V3, MKTAG('C', 'O', 'L', '0') },
441  { CODEC_ID_MSMPEG4V2, MKTAG('M', 'P', '4', '2') },
442  { CODEC_ID_MSMPEG4V2, MKTAG('D', 'I', 'V', '2') },
443  { CODEC_ID_MSMPEG4V1, MKTAG('M', 'P', 'G', '4') },
444  { CODEC_ID_MSMPEG4V1, MKTAG('M', 'P', '4', '1') },
445  { CODEC_ID_WMV1, MKTAG('W', 'M', 'V', '1') },
446  { CODEC_ID_WMV2, MKTAG('W', 'M', 'V', '2') },
447  { CODEC_ID_DVVIDEO, MKTAG('d', 'v', 's', 'd') },
448  { CODEC_ID_DVVIDEO, MKTAG('d', 'v', 'h', 'd') },
449  { CODEC_ID_DVVIDEO, MKTAG('d', 'v', 'h', '1') },
450  { CODEC_ID_DVVIDEO, MKTAG('d', 'v', 's', 'l') },
451  { CODEC_ID_DVVIDEO, MKTAG('d', 'v', '2', '5') },
452  { CODEC_ID_DVVIDEO, MKTAG('d', 'v', '5', '0') },
453  { CODEC_ID_DVVIDEO, MKTAG('c', 'd', 'v', 'c') }, /* Canopus DV */
454  { CODEC_ID_DVVIDEO, MKTAG('C', 'D', 'V', 'H') }, /* Canopus DV */
455  { CODEC_ID_DVVIDEO, MKTAG('d', 'v', 'c', ' ') },
456  { CODEC_ID_DVVIDEO, MKTAG('d', 'v', 'c', 's') },
457  { CODEC_ID_DVVIDEO, MKTAG('d', 'v', 'h', '1') },
458  { CODEC_ID_MPEG1VIDEO, MKTAG('m', 'p', 'g', '1') },
459  { CODEC_ID_MPEG1VIDEO, MKTAG('m', 'p', 'g', '2') },
460  { CODEC_ID_MPEG2VIDEO, MKTAG('m', 'p', 'g', '2') },
461  { CODEC_ID_MPEG2VIDEO, MKTAG('M', 'P', 'E', 'G') },
462  { CODEC_ID_MPEG1VIDEO, MKTAG('P', 'I', 'M', '1') },
463  { CODEC_ID_MPEG2VIDEO, MKTAG('P', 'I', 'M', '2') },
464  { CODEC_ID_MPEG1VIDEO, MKTAG('V', 'C', 'R', '2') },
465  { CODEC_ID_MPEG1VIDEO, MKTAG(1 , 0 , 0 , 16) },
466  { CODEC_ID_MPEG2VIDEO, MKTAG(2 , 0 , 0 , 16) },
467  { CODEC_ID_MPEG4, MKTAG(4 , 0 , 0 , 16) },
468  { CODEC_ID_MPEG2VIDEO, MKTAG('D', 'V', 'R', ' ') },
469  { CODEC_ID_MPEG2VIDEO, MKTAG('M', 'M', 'E', 'S') },
470  { CODEC_ID_MPEG2VIDEO, MKTAG('L', 'M', 'P', '2') }, /* Lead MPEG2 in avi */
471  { CODEC_ID_MPEG2VIDEO, MKTAG('s', 'l', 'i', 'f') },
472  { CODEC_ID_MPEG2VIDEO, MKTAG('E', 'M', '2', 'V') },
473  { CODEC_ID_MJPEG, MKTAG('M', 'J', 'P', 'G') },
474  { CODEC_ID_MJPEG, MKTAG('L', 'J', 'P', 'G') },
475  { CODEC_ID_MJPEG, MKTAG('d', 'm', 'b', '1') },
476  { CODEC_ID_MJPEG, MKTAG('m', 'j', 'p', 'a') },
477  { CODEC_ID_LJPEG, MKTAG('L', 'J', 'P', 'G') },
478  { CODEC_ID_MJPEG, MKTAG('J', 'P', 'G', 'L') }, /* Pegasus lossless JPEG */
479  { CODEC_ID_JPEGLS, MKTAG('M', 'J', 'L', 'S') }, /* JPEG-LS custom FOURCC for avi - encoder */
480  { CODEC_ID_MJPEG, MKTAG('M', 'J', 'L', 'S') }, /* JPEG-LS custom FOURCC for avi - decoder */
481  { CODEC_ID_MJPEG, MKTAG('j', 'p', 'e', 'g') },
482  { CODEC_ID_MJPEG, MKTAG('I', 'J', 'P', 'G') },
483  { CODEC_ID_MJPEG, MKTAG('A', 'V', 'R', 'n') },
484  { CODEC_ID_MJPEG, MKTAG('A', 'C', 'D', 'V') },
485  { CODEC_ID_MJPEG, MKTAG('Q', 'I', 'V', 'G') },
486  { CODEC_ID_MJPEG, MKTAG('S', 'L', 'M', 'J') }, /* SL M-JPEG */
487  { CODEC_ID_MJPEG, MKTAG('C', 'J', 'P', 'G') }, /* Creative Webcam JPEG */
488  { CODEC_ID_MJPEG, MKTAG('I', 'J', 'L', 'V') }, /* Intel JPEG Library Video Codec */
489  { CODEC_ID_MJPEG, MKTAG('M', 'V', 'J', 'P') }, /* Midvid JPEG Video Codec */
490  { CODEC_ID_MJPEG, MKTAG('A', 'V', 'I', '1') },
491  { CODEC_ID_MJPEG, MKTAG('A', 'V', 'I', '2') },
492  { CODEC_ID_MJPEG, MKTAG('M', 'T', 'S', 'J') },
493  { CODEC_ID_MJPEG, MKTAG('Z', 'J', 'P', 'G') }, /* Paradigm Matrix M-JPEG Codec */
494  { CODEC_ID_HUFFYUV, MKTAG('H', 'F', 'Y', 'U') },
495  { CODEC_ID_FFVHUFF, MKTAG('F', 'F', 'V', 'H') },
496  { CODEC_ID_CYUV, MKTAG('C', 'Y', 'U', 'V') },
497  { CODEC_ID_RAWVIDEO, MKTAG(0 , 0 , 0 , 0) },
498  { CODEC_ID_RAWVIDEO, MKTAG(3 , 0 , 0 , 0) },
499  { CODEC_ID_RAWVIDEO, MKTAG('I', '4', '2', '0') },
500  { CODEC_ID_RAWVIDEO, MKTAG('Y', 'U', 'Y', '2') },
501  { CODEC_ID_RAWVIDEO, MKTAG('Y', '4', '2', '2') },
502  { CODEC_ID_RAWVIDEO, MKTAG('V', '4', '2', '2') },
503  { CODEC_ID_RAWVIDEO, MKTAG('Y', 'U', 'N', 'V') },
504  { CODEC_ID_RAWVIDEO, MKTAG('U', 'Y', 'N', 'V') },
505  { CODEC_ID_RAWVIDEO, MKTAG('U', 'Y', 'N', 'Y') },
506  { CODEC_ID_RAWVIDEO, MKTAG('u', 'y', 'v', '1') },
507  { CODEC_ID_RAWVIDEO, MKTAG('2', 'V', 'u', '1') },
508  { CODEC_ID_RAWVIDEO, MKTAG('2', 'v', 'u', 'y') },
509  { CODEC_ID_RAWVIDEO, MKTAG('P', '4', '2', '2') },
510  { CODEC_ID_RAWVIDEO, MKTAG('Y', 'V', '1', '2') },
511  { CODEC_ID_RAWVIDEO, MKTAG('U', 'Y', 'V', 'Y') },
512  { CODEC_ID_RAWVIDEO, MKTAG('V', 'Y', 'U', 'Y') },
513  { CODEC_ID_RAWVIDEO, MKTAG('I', 'Y', 'U', 'V') },
514  { CODEC_ID_RAWVIDEO, MKTAG('Y', '8', '0', '0') },
515  { CODEC_ID_RAWVIDEO, MKTAG('H', 'D', 'Y', 'C') },
516  { CODEC_ID_RAWVIDEO, MKTAG('Y', 'V', 'U', '9') },
517  { CODEC_ID_RAWVIDEO, MKTAG('V', 'D', 'T', 'Z') }, /* SoftLab-NSK VideoTizer */
518  { CODEC_ID_INDEO3, MKTAG('I', 'V', '3', '1') },
519  { CODEC_ID_INDEO3, MKTAG('I', 'V', '3', '2') },
520  { CODEC_ID_INDEO4, MKTAG('I', 'V', '4', '1') },
521  { CODEC_ID_INDEO5, MKTAG('I', 'V', '5', '0') },
522  { CODEC_ID_VP3, MKTAG('V', 'P', '3', '1') },
523  { CODEC_ID_VP3, MKTAG('V', 'P', '3', '0') },
524  { CODEC_ID_VP5, MKTAG('V', 'P', '5', '0') },
525  { CODEC_ID_VP6, MKTAG('V', 'P', '6', '0') },
526  { CODEC_ID_VP6, MKTAG('V', 'P', '6', '1') },
527  { CODEC_ID_VP6, MKTAG('V', 'P', '6', '2') },
528  { CODEC_ID_VP6F, MKTAG('V', 'P', '6', 'F') },
529  { CODEC_ID_VP6F, MKTAG('F', 'L', 'V', '4') },
530  { CODEC_ID_ASV1, MKTAG('A', 'S', 'V', '1') },
531  { CODEC_ID_ASV2, MKTAG('A', 'S', 'V', '2') },
532  { CODEC_ID_VCR1, MKTAG('V', 'C', 'R', '1') },
533  { CODEC_ID_FFV1, MKTAG('F', 'F', 'V', '1') },
534  { CODEC_ID_XAN_WC4, MKTAG('X', 'x', 'a', 'n') },
535  { CODEC_ID_MIMIC, MKTAG('L', 'M', '2', '0') },
536  { CODEC_ID_MSRLE, MKTAG('m', 'r', 'l', 'e') },
537  { CODEC_ID_MSRLE, MKTAG(1 , 0 , 0 , 0) },
538  { CODEC_ID_MSRLE, MKTAG(2 , 0 , 0 , 0) },
539  { CODEC_ID_MSVIDEO1, MKTAG('M', 'S', 'V', 'C') },
540  { CODEC_ID_MSVIDEO1, MKTAG('m', 's', 'v', 'c') },
541  { CODEC_ID_MSVIDEO1, MKTAG('C', 'R', 'A', 'M') },
542  { CODEC_ID_MSVIDEO1, MKTAG('c', 'r', 'a', 'm') },
543  { CODEC_ID_MSVIDEO1, MKTAG('W', 'H', 'A', 'M') },
544  { CODEC_ID_MSVIDEO1, MKTAG('w', 'h', 'a', 'm') },
545  { CODEC_ID_CINEPAK, MKTAG('c', 'v', 'i', 'd') },
546  { CODEC_ID_TRUEMOTION1, MKTAG('D', 'U', 'C', 'K') },
547  { CODEC_ID_TRUEMOTION1, MKTAG('P', 'V', 'E', 'Z') },
548  { CODEC_ID_MSZH, MKTAG('M', 'S', 'Z', 'H') },
549  { CODEC_ID_ZLIB, MKTAG('Z', 'L', 'I', 'B') },
550 #if FF_API_SNOW
551  { CODEC_ID_SNOW, MKTAG('S', 'N', 'O', 'W') },
552 #endif
553  { CODEC_ID_4XM, MKTAG('4', 'X', 'M', 'V') },
554  { CODEC_ID_FLV1, MKTAG('F', 'L', 'V', '1') },
555  { CODEC_ID_FLASHSV, MKTAG('F', 'S', 'V', '1') },
556  { CODEC_ID_SVQ1, MKTAG('s', 'v', 'q', '1') },
557  { CODEC_ID_TSCC, MKTAG('t', 's', 'c', 'c') },
558  { CODEC_ID_ULTI, MKTAG('U', 'L', 'T', 'I') },
559  { CODEC_ID_VIXL, MKTAG('V', 'I', 'X', 'L') },
560  { CODEC_ID_QPEG, MKTAG('Q', 'P', 'E', 'G') },
561  { CODEC_ID_QPEG, MKTAG('Q', '1', '.', '0') },
562  { CODEC_ID_QPEG, MKTAG('Q', '1', '.', '1') },
563  { CODEC_ID_WMV3, MKTAG('W', 'M', 'V', '3') },
564  { CODEC_ID_VC1, MKTAG('W', 'V', 'C', '1') },
565  { CODEC_ID_VC1, MKTAG('W', 'M', 'V', 'A') },
566  { CODEC_ID_LOCO, MKTAG('L', 'O', 'C', 'O') },
567  { CODEC_ID_WNV1, MKTAG('W', 'N', 'V', '1') },
568  { CODEC_ID_AASC, MKTAG('A', 'A', 'S', 'C') },
569  { CODEC_ID_INDEO2, MKTAG('R', 'T', '2', '1') },
570  { CODEC_ID_FRAPS, MKTAG('F', 'P', 'S', '1') },
571  { CODEC_ID_THEORA, MKTAG('t', 'h', 'e', 'o') },
572  { CODEC_ID_TRUEMOTION2, MKTAG('T', 'M', '2', '0') },
573  { CODEC_ID_CSCD, MKTAG('C', 'S', 'C', 'D') },
574  { CODEC_ID_ZMBV, MKTAG('Z', 'M', 'B', 'V') },
575  { CODEC_ID_KMVC, MKTAG('K', 'M', 'V', 'C') },
576  { CODEC_ID_CAVS, MKTAG('C', 'A', 'V', 'S') },
577  { CODEC_ID_JPEG2000, MKTAG('M', 'J', '2', 'C') },
578  { CODEC_ID_VMNC, MKTAG('V', 'M', 'n', 'c') },
579  { CODEC_ID_TARGA, MKTAG('t', 'g', 'a', ' ') },
580  { CODEC_ID_PNG, MKTAG('M', 'P', 'N', 'G') },
581  { CODEC_ID_PNG, MKTAG('P', 'N', 'G', '1') },
582  { CODEC_ID_CLJR, MKTAG('c', 'l', 'j', 'r') },
583  { CODEC_ID_DIRAC, MKTAG('d', 'r', 'a', 'c') },
584  { CODEC_ID_RPZA, MKTAG('a', 'z', 'p', 'r') },
585  { CODEC_ID_RPZA, MKTAG('R', 'P', 'Z', 'A') },
586  { CODEC_ID_RPZA, MKTAG('r', 'p', 'z', 'a') },
587  { CODEC_ID_SP5X, MKTAG('S', 'P', '5', '4') },
588  { CODEC_ID_NONE, 0 }
589 };
590 
591 
592 #ifndef __WEED_PALETTES_H__
593 #include <weed/weed-palettes.h>
594 #endif
595 
596 #ifdef FF_API_PIX_FMT
597 
598 int avi_pix_fmt_to_weed_palette(enum PixelFormat pix_fmt, int *clamped) {
599  // clamped may be set to NULL if you are not interested in the value
600  switch (pix_fmt) {
601  case PIX_FMT_RGB24:
602  return WEED_PALETTE_RGB24;
603  case PIX_FMT_BGR24:
604  return WEED_PALETTE_BGR24;
605  case PIX_FMT_RGBA:
606  return WEED_PALETTE_RGBA32;
607  case PIX_FMT_BGRA:
608  return WEED_PALETTE_BGRA32;
609  case PIX_FMT_ARGB:
610  return WEED_PALETTE_ARGB32;
611  case PIX_FMT_YUV444P:
612  return WEED_PALETTE_YUV444P;
613  case PIX_FMT_YUV422P:
614  return WEED_PALETTE_YUV422P;
615  case PIX_FMT_YUV420P:
616  return WEED_PALETTE_YUV420P;
617  case PIX_FMT_YUYV422:
618  return WEED_PALETTE_YUYV;
619  case PIX_FMT_UYVY422:
620  return WEED_PALETTE_UYVY;
621  case PIX_FMT_UYYVYY411:
622  return WEED_PALETTE_YUV411;
623  case PIX_FMT_GRAY8:
624  return WEED_PALETTE_A8;
625  case PIX_FMT_MONOWHITE:
626  case PIX_FMT_MONOBLACK:
627  return WEED_PALETTE_A1;
628  case PIX_FMT_YUVJ422P:
629  if (clamped) *clamped = WEED_YUV_CLAMPING_UNCLAMPED;
630  return WEED_PALETTE_YUV422P;
631  case PIX_FMT_YUVJ444P:
632  if (clamped) *clamped = WEED_YUV_CLAMPING_UNCLAMPED;
633  return WEED_PALETTE_YUV444P;
634  case PIX_FMT_YUVJ420P:
635  if (clamped) *clamped = WEED_YUV_CLAMPING_UNCLAMPED;
636  return WEED_PALETTE_YUV420P;
637 
638  default:
639  return WEED_PALETTE_END;
640  }
641 }
642 
643 
644 enum PixelFormat weed_palette_to_avi_pix_fmt(int pal, int *clamped) {
645  switch (pal) {
646  case WEED_PALETTE_RGB24:
647  return PIX_FMT_RGB24;
648  case WEED_PALETTE_BGR24:
649  return PIX_FMT_BGR24;
650  case WEED_PALETTE_RGBA32:
651  return PIX_FMT_RGBA;
652  case WEED_PALETTE_BGRA32:
653  return PIX_FMT_BGRA;
654  case WEED_PALETTE_ARGB32:
655  return PIX_FMT_ARGB;
657  if (clamped && *clamped == WEED_YUV_CLAMPING_UNCLAMPED)
658  return PIX_FMT_YUVJ444P;
659  return PIX_FMT_YUV444P;
661  if (clamped && *clamped == WEED_YUV_CLAMPING_UNCLAMPED)
662  return PIX_FMT_YUVJ422P;
663  return PIX_FMT_YUV422P;
665  if (clamped && *clamped == WEED_YUV_CLAMPING_UNCLAMPED)
666  return PIX_FMT_YUVJ420P;
667  return PIX_FMT_YUV420P;
668  case WEED_PALETTE_YUYV:
669  return PIX_FMT_YUYV422;
670  case WEED_PALETTE_UYVY:
671  return PIX_FMT_UYVY422;
672  case WEED_PALETTE_YUV411:
673  return PIX_FMT_UYYVYY411;
674 
675  case WEED_PALETTE_A8:
676  return PIX_FMT_GRAY8;
677  case WEED_PALETTE_A1:
678  return PIX_FMT_MONOBLACK;
679 
680  default:
681  return PIX_FMT_NONE;
682  }
683  }
684 
685 #else
686 
687 int avi_pix_fmt_to_weed_palette(enum AVPixelFormat pix_fmt, int *clamped) {
688  // clamped may be set to NULL if you are not interested in the value
689  switch (pix_fmt) {
690  case AV_PIX_FMT_RGB24:
691  return WEED_PALETTE_RGB24;
692  case AV_PIX_FMT_BGR24:
693  return WEED_PALETTE_BGR24;
694  case AV_PIX_FMT_RGBA:
695  return WEED_PALETTE_RGBA32;
696  case AV_PIX_FMT_BGRA:
697  return WEED_PALETTE_BGRA32;
698  case AV_PIX_FMT_ARGB:
699  return WEED_PALETTE_ARGB32;
700  case AV_PIX_FMT_YUV444P:
701  return WEED_PALETTE_YUV444P;
702  case AV_PIX_FMT_YUV422P:
703  return WEED_PALETTE_YUV422P;
704  case AV_PIX_FMT_YUV420P:
705  return WEED_PALETTE_YUV420P;
706  case AV_PIX_FMT_YUYV422:
707  return WEED_PALETTE_YUYV;
708  case AV_PIX_FMT_UYVY422:
709  return WEED_PALETTE_UYVY;
710  case AV_PIX_FMT_UYYVYY411:
711  return WEED_PALETTE_YUV411;
712  case AV_PIX_FMT_GRAY8:
713  return WEED_PALETTE_A8;
714  case AV_PIX_FMT_MONOWHITE:
715  case AV_PIX_FMT_MONOBLACK:
716  return WEED_PALETTE_A1;
717  case AV_PIX_FMT_YUVJ422P:
718  if (clamped) *clamped = WEED_YUV_CLAMPING_UNCLAMPED;
719  return WEED_PALETTE_YUV422P;
720  case AV_PIX_FMT_YUVJ444P:
721  if (clamped) *clamped = WEED_YUV_CLAMPING_UNCLAMPED;
722  return WEED_PALETTE_YUV444P;
723  case AV_PIX_FMT_YUVJ420P:
724  if (clamped) *clamped = WEED_YUV_CLAMPING_UNCLAMPED;
725  return WEED_PALETTE_YUV420P;
726 
727  default:
728  return WEED_PALETTE_END;
729  }
730 }
731 
732 
733 enum AVPixelFormat weed_palette_to_avi_pix_fmt(int pal, int *clamped) {
734  switch (pal) {
735  case WEED_PALETTE_RGB24:
736  return AV_PIX_FMT_RGB24;
737  case WEED_PALETTE_BGR24:
738  return AV_PIX_FMT_BGR24;
739  case WEED_PALETTE_RGBA32:
740  return AV_PIX_FMT_RGBA;
741  case WEED_PALETTE_BGRA32:
742  return AV_PIX_FMT_BGRA;
743  case WEED_PALETTE_ARGB32:
744  return AV_PIX_FMT_ARGB;
746  if (clamped && *clamped == WEED_YUV_CLAMPING_UNCLAMPED)
747  return AV_PIX_FMT_YUVJ444P;
748  return AV_PIX_FMT_YUV444P;
750  if (clamped && *clamped == WEED_YUV_CLAMPING_UNCLAMPED)
751  return AV_PIX_FMT_YUVJ422P;
752  return AV_PIX_FMT_YUV422P;
754  if (clamped && *clamped == WEED_YUV_CLAMPING_UNCLAMPED)
755  return AV_PIX_FMT_YUVJ420P;
756  return AV_PIX_FMT_YUV420P;
757  case WEED_PALETTE_YUYV:
758  return AV_PIX_FMT_YUYV422;
759  case WEED_PALETTE_UYVY:
760  return AV_PIX_FMT_UYVY422;
761  case WEED_PALETTE_YUV411:
762  return AV_PIX_FMT_UYYVYY411;
763 
764  case WEED_PALETTE_A8:
765  return AV_PIX_FMT_GRAY8;
766  case WEED_PALETTE_A1:
767  return AV_PIX_FMT_MONOBLACK;
768 
769  default:
770  return AV_PIX_FMT_NONE;
771  }
772  }
773 
774 #endif
775 
776 #endif // HAVE_AVUTIL
777 #endif // HAVE_AVCODEC
778 
779 #ifdef __cplusplus
780 }
781 #endif /* __cplusplus */
782 
783 #endif // #ifndef __WEED_COMPAT_H__
#define WEED_PALETTE_YUV420P
Definition: weed-palettes.h:76
#define WEED_PALETTE_YUV888
Definition: weed-palettes.h:90
#define WEED_PALETTE_A8
Definition: weed-palettes.h:96
#define WEED_YUV_SUBSPACE_BT709
Definition: weed-palettes.h:115
#define WEED_PALETTE_YUV411
Definition: weed-palettes.h:88
#define WEED_PALETTE_A1
Definition: weed-palettes.h:95
#define WEED_PALETTE_YUV444P
Definition: weed-palettes.h:81
#define WEED_YUV_CLAMPING_CLAMPED
Definition: weed-palettes.h:109
#define WEED_PALETTE_UYVY
Definition: weed-palettes.h:87
#define WEED_PALETTE_END
Definition: weed-palettes.h:59
#define WEED_PALETTE_YUV422P
Definition: weed-palettes.h:74
#define WEED_PALETTE_BGRA32
Definition: weed-palettes.h:71
#define WEED_PALETTE_RGBA32
Definition: weed-palettes.h:65
#define WEED_YUV_CLAMPING_UNCLAMPED
Definition: weed-palettes.h:110
#define WEED_PALETTE_ARGB32
Definition: weed-palettes.h:67
#define WEED_PALETTE_BGR24
Definition: weed-palettes.h:63
#define WEED_YUV_SAMPLING_DEFAULT
Definition: weed-palettes.h:102
#define WEED_PALETTE_YUYV
Definition: weed-palettes.h:84
#define WEED_PALETTE_YVU420P
Definition: weed-palettes.h:78
#define WEED_PALETTE_YUVA4444P
Definition: weed-palettes.h:82
#define WEED_PALETTE_RGB24
Definition: weed-palettes.h:61
#define WEED_YUV_SUBSPACE_YCBCR
Definition: weed-palettes.h:114