1193323Sed/* SPDX-License-Identifier: GPL-2.0 */
2193323Sed/*
3193323Sed * Broadcom BCM2835 V4L2 driver
4193323Sed *
5193323Sed * Copyright �� 2013 Raspberry Pi (Trading) Ltd.
6193323Sed *
7193323Sed * Authors: Vincent Sanders @ Collabora
8193323Sed *          Dave Stevenson @ Broadcom
9193323Sed *		(now dave.stevenson@raspberrypi.org)
10193323Sed *          Simon Mellor @ Broadcom
11193323Sed *          Luke Diamand @ Broadcom
12193323Sed */
13193323Sed#ifndef MMAL_ENCODINGS_H
14193323Sed#define MMAL_ENCODINGS_H
15193323Sed
16193323Sed#define MMAL_ENCODING_H264             MMAL_FOURCC('H', '2', '6', '4')
17193323Sed#define MMAL_ENCODING_H263             MMAL_FOURCC('H', '2', '6', '3')
18193323Sed#define MMAL_ENCODING_MP4V             MMAL_FOURCC('M', 'P', '4', 'V')
19193323Sed#define MMAL_ENCODING_MP2V             MMAL_FOURCC('M', 'P', '2', 'V')
20193323Sed#define MMAL_ENCODING_MP1V             MMAL_FOURCC('M', 'P', '1', 'V')
21193323Sed#define MMAL_ENCODING_WMV3             MMAL_FOURCC('W', 'M', 'V', '3')
22193323Sed#define MMAL_ENCODING_WMV2             MMAL_FOURCC('W', 'M', 'V', '2')
23193323Sed#define MMAL_ENCODING_WMV1             MMAL_FOURCC('W', 'M', 'V', '1')
24193323Sed#define MMAL_ENCODING_WVC1             MMAL_FOURCC('W', 'V', 'C', '1')
25193323Sed#define MMAL_ENCODING_VP8              MMAL_FOURCC('V', 'P', '8', ' ')
26193323Sed#define MMAL_ENCODING_VP7              MMAL_FOURCC('V', 'P', '7', ' ')
27193323Sed#define MMAL_ENCODING_VP6              MMAL_FOURCC('V', 'P', '6', ' ')
28193323Sed#define MMAL_ENCODING_THEORA           MMAL_FOURCC('T', 'H', 'E', 'O')
29193323Sed#define MMAL_ENCODING_SPARK            MMAL_FOURCC('S', 'P', 'R', 'K')
30193323Sed#define MMAL_ENCODING_MJPEG            MMAL_FOURCC('M', 'J', 'P', 'G')
31193323Sed
32193323Sed#define MMAL_ENCODING_JPEG             MMAL_FOURCC('J', 'P', 'E', 'G')
33193323Sed#define MMAL_ENCODING_GIF              MMAL_FOURCC('G', 'I', 'F', ' ')
34193323Sed#define MMAL_ENCODING_PNG              MMAL_FOURCC('P', 'N', 'G', ' ')
35193323Sed#define MMAL_ENCODING_PPM              MMAL_FOURCC('P', 'P', 'M', ' ')
36193323Sed#define MMAL_ENCODING_TGA              MMAL_FOURCC('T', 'G', 'A', ' ')
37193323Sed#define MMAL_ENCODING_BMP              MMAL_FOURCC('B', 'M', 'P', ' ')
38193323Sed
39193323Sed#define MMAL_ENCODING_I420             MMAL_FOURCC('I', '4', '2', '0')
40193323Sed#define MMAL_ENCODING_I420_SLICE       MMAL_FOURCC('S', '4', '2', '0')
41193323Sed#define MMAL_ENCODING_YV12             MMAL_FOURCC('Y', 'V', '1', '2')
42193323Sed#define MMAL_ENCODING_I422             MMAL_FOURCC('I', '4', '2', '2')
43193323Sed#define MMAL_ENCODING_I422_SLICE       MMAL_FOURCC('S', '4', '2', '2')
44193323Sed#define MMAL_ENCODING_YUYV             MMAL_FOURCC('Y', 'U', 'Y', 'V')
45193323Sed#define MMAL_ENCODING_YVYU             MMAL_FOURCC('Y', 'V', 'Y', 'U')
46212793Sdim#define MMAL_ENCODING_UYVY             MMAL_FOURCC('U', 'Y', 'V', 'Y')
47193323Sed#define MMAL_ENCODING_VYUY             MMAL_FOURCC('V', 'Y', 'U', 'Y')
48193323Sed#define MMAL_ENCODING_NV12             MMAL_FOURCC('N', 'V', '1', '2')
49193323Sed#define MMAL_ENCODING_NV21             MMAL_FOURCC('N', 'V', '2', '1')
50193323Sed#define MMAL_ENCODING_ARGB             MMAL_FOURCC('A', 'R', 'G', 'B')
51193323Sed#define MMAL_ENCODING_RGBA             MMAL_FOURCC('R', 'G', 'B', 'A')
52193323Sed#define MMAL_ENCODING_ABGR             MMAL_FOURCC('A', 'B', 'G', 'R')
53193323Sed#define MMAL_ENCODING_BGRA             MMAL_FOURCC('B', 'G', 'R', 'A')
54193323Sed#define MMAL_ENCODING_RGB16            MMAL_FOURCC('R', 'G', 'B', '2')
55212793Sdim#define MMAL_ENCODING_RGB24            MMAL_FOURCC('R', 'G', 'B', '3')
56212793Sdim#define MMAL_ENCODING_RGB32            MMAL_FOURCC('R', 'G', 'B', '4')
57207618Srdivacky#define MMAL_ENCODING_BGR16            MMAL_FOURCC('B', 'G', 'R', '2')
58193323Sed#define MMAL_ENCODING_BGR24            MMAL_FOURCC('B', 'G', 'R', '3')
59193323Sed#define MMAL_ENCODING_BGR32            MMAL_FOURCC('B', 'G', 'R', '4')
60193323Sed
61193323Sed/** SAND Video (YUVUV128) format, native format understood by VideoCore.
62212793Sdim * This format is *not* opaque - if requested you will receive full frames
63212793Sdim * of YUV_UV video.
64207618Srdivacky */
65193323Sed#define MMAL_ENCODING_YUVUV128         MMAL_FOURCC('S', 'A', 'N', 'D')
66193323Sed
67193323Sed/** VideoCore opaque image format, image handles are returned to
68198090Srdivacky * the host but not the actual image data.
69198090Srdivacky */
70193323Sed#define MMAL_ENCODING_OPAQUE           MMAL_FOURCC('O', 'P', 'Q', 'V')
71212793Sdim
72193323Sed/** An EGL image handle
73193323Sed */
74193323Sed#define MMAL_ENCODING_EGL_IMAGE        MMAL_FOURCC('E', 'G', 'L', 'I')
75193323Sed
76193323Sed/* }@ */
77198090Srdivacky
78193323Sed/** \name Pre-defined audio encodings */
79198090Srdivacky/* @{ */
80198090Srdivacky#define MMAL_ENCODING_PCM_UNSIGNED_BE  MMAL_FOURCC('P', 'C', 'M', 'U')
81193323Sed#define MMAL_ENCODING_PCM_UNSIGNED_LE  MMAL_FOURCC('p', 'c', 'm', 'u')
82193323Sed#define MMAL_ENCODING_PCM_SIGNED_BE    MMAL_FOURCC('P', 'C', 'M', 'S')
83193323Sed#define MMAL_ENCODING_PCM_SIGNED_LE    MMAL_FOURCC('p', 'c', 'm', 's')
84193323Sed#define MMAL_ENCODING_PCM_FLOAT_BE     MMAL_FOURCC('P', 'C', 'M', 'F')
85193323Sed#define MMAL_ENCODING_PCM_FLOAT_LE     MMAL_FOURCC('p', 'c', 'm', 'f')
86198090Srdivacky
87198090Srdivacky/* Pre-defined H264 encoding variants */
88193323Sed
89212793Sdim/** ISO 14496-10 Annex B byte stream format */
90193323Sed#define MMAL_ENCODING_VARIANT_H264_DEFAULT   0
91193323Sed/** ISO 14496-15 AVC stream format */
92193323Sed#define MMAL_ENCODING_VARIANT_H264_AVC1      MMAL_FOURCC('A', 'V', 'C', '1')
93193323Sed/** Implicitly delineated NAL units without emulation prevention */
94193323Sed#define MMAL_ENCODING_VARIANT_H264_RAW       MMAL_FOURCC('R', 'A', 'W', ' ')
95193323Sed
96193323Sed/** \defgroup MmalColorSpace List of pre-defined video color spaces
97193323Sed * This defines a list of common color spaces. This list isn't exhaustive and
98193323Sed * is only provided as a convenience to avoid clients having to use FourCC
99193323Sed * codes directly. However components are allowed to define and use their own
100193323Sed * FourCC codes.
101193323Sed */
102193323Sed/* @{ */
103193323Sed
104193323Sed/** Unknown color space */
105193323Sed#define MMAL_COLOR_SPACE_UNKNOWN       0
106193323Sed/** ITU-R BT.601-5 [SDTV] */
107193323Sed#define MMAL_COLOR_SPACE_ITUR_BT601    MMAL_FOURCC('Y', '6', '0', '1')
108193323Sed/** ITU-R BT.709-3 [HDTV] */
109212793Sdim#define MMAL_COLOR_SPACE_ITUR_BT709    MMAL_FOURCC('Y', '7', '0', '9')
110193323Sed/** JPEG JFIF */
111193323Sed#define MMAL_COLOR_SPACE_JPEG_JFIF     MMAL_FOURCC('Y', 'J', 'F', 'I')
112212793Sdim/** Title 47 Code of Federal Regulations (2003) 73.682 (a) (20) */
113193323Sed#define MMAL_COLOR_SPACE_FCC           MMAL_FOURCC('Y', 'F', 'C', 'C')
114193323Sed/** Society of Motion Picture and Television Engineers 240M (1999) */
115207618Srdivacky#define MMAL_COLOR_SPACE_SMPTE240M     MMAL_FOURCC('Y', '2', '4', '0')
116207618Srdivacky/** ITU-R BT.470-2 System M */
117207618Srdivacky#define MMAL_COLOR_SPACE_BT470_2_M     MMAL_FOURCC('Y', '_', '_', 'M')
118193323Sed/** ITU-R BT.470-2 System BG */
119193323Sed#define MMAL_COLOR_SPACE_BT470_2_BG    MMAL_FOURCC('Y', '_', 'B', 'G')
120193323Sed/** JPEG JFIF, but with 16..255 luma */
121193323Sed#define MMAL_COLOR_SPACE_JFIF_Y16_255  MMAL_FOURCC('Y', 'Y', '1', '6')
122193323Sed/* @} MmalColorSpace List */
123193323Sed
124193323Sed#endif /* MMAL_ENCODINGS_H */
125207618Srdivacky