2 * Broadcom BM2835 V4L2 driver
4 * Copyright © 2013 Raspberry Pi (Trading) Ltd.
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file COPYING in the main directory of this archive
10 * Authors: Vincent Sanders <vincent.sanders@collabora.co.uk>
11 * Dave Stevenson <dsteve@broadcom.com>
12 * Simon Mellor <simellor@broadcom.com>
13 * Luke Diamand <luked@broadcom.com>
15 #ifndef MMAL_ENCODINGS_H
16 #define MMAL_ENCODINGS_H
18 #define MMAL_ENCODING_H264 MMAL_FOURCC('H', '2', '6', '4')
19 #define MMAL_ENCODING_H263 MMAL_FOURCC('H', '2', '6', '3')
20 #define MMAL_ENCODING_MP4V MMAL_FOURCC('M', 'P', '4', 'V')
21 #define MMAL_ENCODING_MP2V MMAL_FOURCC('M', 'P', '2', 'V')
22 #define MMAL_ENCODING_MP1V MMAL_FOURCC('M', 'P', '1', 'V')
23 #define MMAL_ENCODING_WMV3 MMAL_FOURCC('W', 'M', 'V', '3')
24 #define MMAL_ENCODING_WMV2 MMAL_FOURCC('W', 'M', 'V', '2')
25 #define MMAL_ENCODING_WMV1 MMAL_FOURCC('W', 'M', 'V', '1')
26 #define MMAL_ENCODING_WVC1 MMAL_FOURCC('W', 'V', 'C', '1')
27 #define MMAL_ENCODING_VP8 MMAL_FOURCC('V', 'P', '8', ' ')
28 #define MMAL_ENCODING_VP7 MMAL_FOURCC('V', 'P', '7', ' ')
29 #define MMAL_ENCODING_VP6 MMAL_FOURCC('V', 'P', '6', ' ')
30 #define MMAL_ENCODING_THEORA MMAL_FOURCC('T', 'H', 'E', 'O')
31 #define MMAL_ENCODING_SPARK MMAL_FOURCC('S', 'P', 'R', 'K')
32 #define MMAL_ENCODING_MJPEG MMAL_FOURCC('M', 'J', 'P', 'G')
34 #define MMAL_ENCODING_JPEG MMAL_FOURCC('J', 'P', 'E', 'G')
35 #define MMAL_ENCODING_GIF MMAL_FOURCC('G', 'I', 'F', ' ')
36 #define MMAL_ENCODING_PNG MMAL_FOURCC('P', 'N', 'G', ' ')
37 #define MMAL_ENCODING_PPM MMAL_FOURCC('P', 'P', 'M', ' ')
38 #define MMAL_ENCODING_TGA MMAL_FOURCC('T', 'G', 'A', ' ')
39 #define MMAL_ENCODING_BMP MMAL_FOURCC('B', 'M', 'P', ' ')
41 #define MMAL_ENCODING_I420 MMAL_FOURCC('I', '4', '2', '0')
42 #define MMAL_ENCODING_I420_SLICE MMAL_FOURCC('S', '4', '2', '0')
43 #define MMAL_ENCODING_YV12 MMAL_FOURCC('Y', 'V', '1', '2')
44 #define MMAL_ENCODING_I422 MMAL_FOURCC('I', '4', '2', '2')
45 #define MMAL_ENCODING_I422_SLICE MMAL_FOURCC('S', '4', '2', '2')
46 #define MMAL_ENCODING_YUYV MMAL_FOURCC('Y', 'U', 'Y', 'V')
47 #define MMAL_ENCODING_YVYU MMAL_FOURCC('Y', 'V', 'Y', 'U')
48 #define MMAL_ENCODING_UYVY MMAL_FOURCC('U', 'Y', 'V', 'Y')
49 #define MMAL_ENCODING_VYUY MMAL_FOURCC('V', 'Y', 'U', 'Y')
50 #define MMAL_ENCODING_NV12 MMAL_FOURCC('N', 'V', '1', '2')
51 #define MMAL_ENCODING_NV21 MMAL_FOURCC('N', 'V', '2', '1')
52 #define MMAL_ENCODING_ARGB MMAL_FOURCC('A', 'R', 'G', 'B')
53 #define MMAL_ENCODING_RGBA MMAL_FOURCC('R', 'G', 'B', 'A')
54 #define MMAL_ENCODING_ABGR MMAL_FOURCC('A', 'B', 'G', 'R')
55 #define MMAL_ENCODING_BGRA MMAL_FOURCC('B', 'G', 'R', 'A')
56 #define MMAL_ENCODING_RGB16 MMAL_FOURCC('R', 'G', 'B', '2')
57 #define MMAL_ENCODING_RGB24 MMAL_FOURCC('R', 'G', 'B', '3')
58 #define MMAL_ENCODING_RGB32 MMAL_FOURCC('R', 'G', 'B', '4')
59 #define MMAL_ENCODING_BGR16 MMAL_FOURCC('B', 'G', 'R', '2')
60 #define MMAL_ENCODING_BGR24 MMAL_FOURCC('B', 'G', 'R', '3')
61 #define MMAL_ENCODING_BGR32 MMAL_FOURCC('B', 'G', 'R', '4')
63 /** SAND Video (YUVUV128) format, native format understood by VideoCore.
64 * This format is *not* opaque - if requested you will receive full frames
67 #define MMAL_ENCODING_YUVUV128 MMAL_FOURCC('S', 'A', 'N', 'D')
69 /** VideoCore opaque image format, image handles are returned to
70 * the host but not the actual image data.
72 #define MMAL_ENCODING_OPAQUE MMAL_FOURCC('O', 'P', 'Q', 'V')
74 /** An EGL image handle
76 #define MMAL_ENCODING_EGL_IMAGE MMAL_FOURCC('E', 'G', 'L', 'I')
80 /** \name Pre-defined audio encodings */
82 #define MMAL_ENCODING_PCM_UNSIGNED_BE MMAL_FOURCC('P', 'C', 'M', 'U')
83 #define MMAL_ENCODING_PCM_UNSIGNED_LE MMAL_FOURCC('p', 'c', 'm', 'u')
84 #define MMAL_ENCODING_PCM_SIGNED_BE MMAL_FOURCC('P', 'C', 'M', 'S')
85 #define MMAL_ENCODING_PCM_SIGNED_LE MMAL_FOURCC('p', 'c', 'm', 's')
86 #define MMAL_ENCODING_PCM_FLOAT_BE MMAL_FOURCC('P', 'C', 'M', 'F')
87 #define MMAL_ENCODING_PCM_FLOAT_LE MMAL_FOURCC('p', 'c', 'm', 'f')
89 /* Pre-defined H264 encoding variants */
91 /** ISO 14496-10 Annex B byte stream format */
92 #define MMAL_ENCODING_VARIANT_H264_DEFAULT 0
93 /** ISO 14496-15 AVC stream format */
94 #define MMAL_ENCODING_VARIANT_H264_AVC1 MMAL_FOURCC('A', 'V', 'C', '1')
95 /** Implicitly delineated NAL units without emulation prevention */
96 #define MMAL_ENCODING_VARIANT_H264_RAW MMAL_FOURCC('R', 'A', 'W', ' ')
98 /** \defgroup MmalColorSpace List of pre-defined video color spaces
99 * This defines a list of common color spaces. This list isn't exhaustive and
100 * is only provided as a convenience to avoid clients having to use FourCC
101 * codes directly. However components are allowed to define and use their own
106 /** Unknown color space */
107 #define MMAL_COLOR_SPACE_UNKNOWN 0
108 /** ITU-R BT.601-5 [SDTV] */
109 #define MMAL_COLOR_SPACE_ITUR_BT601 MMAL_FOURCC('Y', '6', '0', '1')
110 /** ITU-R BT.709-3 [HDTV] */
111 #define MMAL_COLOR_SPACE_ITUR_BT709 MMAL_FOURCC('Y', '7', '0', '9')
113 #define MMAL_COLOR_SPACE_JPEG_JFIF MMAL_FOURCC('Y', 'J', 'F', 'I')
114 /** Title 47 Code of Federal Regulations (2003) 73.682 (a) (20) */
115 #define MMAL_COLOR_SPACE_FCC MMAL_FOURCC('Y', 'F', 'C', 'C')
116 /** Society of Motion Picture and Television Engineers 240M (1999) */
117 #define MMAL_COLOR_SPACE_SMPTE240M MMAL_FOURCC('Y', '2', '4', '0')
118 /** ITU-R BT.470-2 System M */
119 #define MMAL_COLOR_SPACE_BT470_2_M MMAL_FOURCC('Y', '_', '_', 'M')
120 /** ITU-R BT.470-2 System BG */
121 #define MMAL_COLOR_SPACE_BT470_2_BG MMAL_FOURCC('Y', '_', 'B', 'G')
122 /** JPEG JFIF, but with 16..255 luma */
123 #define MMAL_COLOR_SPACE_JFIF_Y16_255 MMAL_FOURCC('Y', 'Y', '1', '6')
124 /* @} MmalColorSpace List */
126 #endif /* MMAL_ENCODINGS_H */