209 lines
10 KiB
C
209 lines
10 KiB
C
|
/*
|
||
|
Copyright (c) 2012, Broadcom Europe Ltd
|
||
|
All rights reserved.
|
||
|
|
||
|
Redistribution and use in source and binary forms, with or without
|
||
|
modification, are permitted provided that the following conditions are met:
|
||
|
* Redistributions of source code must retain the above copyright
|
||
|
notice, this list of conditions and the following disclaimer.
|
||
|
* Redistributions in binary form must reproduce the above copyright
|
||
|
notice, this list of conditions and the following disclaimer in the
|
||
|
documentation and/or other materials provided with the distribution.
|
||
|
* Neither the name of the copyright holder nor the
|
||
|
names of its contributors may be used to endorse or promote products
|
||
|
derived from this software without specific prior written permission.
|
||
|
|
||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
|
||
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
|
*/
|
||
|
|
||
|
#ifndef MMAL_ENCODINGS_H
|
||
|
#define MMAL_ENCODINGS_H
|
||
|
|
||
|
#include "mmal_common.h"
|
||
|
|
||
|
/** \defgroup MmalEncodings List of pre-defined encodings
|
||
|
* This defines a list of common encodings. This list isn't exhaustive and is only
|
||
|
* provided as a convenience to avoid clients having to use FourCC codes directly.
|
||
|
* However components are allowed to define and use their own FourCC codes. */
|
||
|
/* @{ */
|
||
|
|
||
|
/** \name Pre-defined video encodings */
|
||
|
/* @{ */
|
||
|
#define MMAL_ENCODING_H264 MMAL_FOURCC('H','2','6','4')
|
||
|
#define MMAL_ENCODING_H263 MMAL_FOURCC('H','2','6','3')
|
||
|
#define MMAL_ENCODING_MP4V MMAL_FOURCC('M','P','4','V')
|
||
|
#define MMAL_ENCODING_MP2V MMAL_FOURCC('M','P','2','V')
|
||
|
#define MMAL_ENCODING_MP1V MMAL_FOURCC('M','P','1','V')
|
||
|
#define MMAL_ENCODING_WMV3 MMAL_FOURCC('W','M','V','3')
|
||
|
#define MMAL_ENCODING_WMV2 MMAL_FOURCC('W','M','V','2')
|
||
|
#define MMAL_ENCODING_WMV1 MMAL_FOURCC('W','M','V','1')
|
||
|
#define MMAL_ENCODING_WVC1 MMAL_FOURCC('W','V','C','1')
|
||
|
#define MMAL_ENCODING_VP8 MMAL_FOURCC('V','P','8',' ')
|
||
|
#define MMAL_ENCODING_VP7 MMAL_FOURCC('V','P','7',' ')
|
||
|
#define MMAL_ENCODING_VP6 MMAL_FOURCC('V','P','6',' ')
|
||
|
#define MMAL_ENCODING_THEORA MMAL_FOURCC('T','H','E','O')
|
||
|
#define MMAL_ENCODING_SPARK MMAL_FOURCC('S','P','R','K')
|
||
|
#define MMAL_ENCODING_MJPEG MMAL_FOURCC('M','J','P','G')
|
||
|
|
||
|
#define MMAL_ENCODING_JPEG MMAL_FOURCC('J','P','E','G')
|
||
|
#define MMAL_ENCODING_GIF MMAL_FOURCC('G','I','F',' ')
|
||
|
#define MMAL_ENCODING_PNG MMAL_FOURCC('P','N','G',' ')
|
||
|
#define MMAL_ENCODING_PPM MMAL_FOURCC('P','P','M',' ')
|
||
|
#define MMAL_ENCODING_TGA MMAL_FOURCC('T','G','A',' ')
|
||
|
#define MMAL_ENCODING_BMP MMAL_FOURCC('B','M','P',' ')
|
||
|
|
||
|
#define MMAL_ENCODING_I420 MMAL_FOURCC('I','4','2','0')
|
||
|
#define MMAL_ENCODING_I420_SLICE MMAL_FOURCC('S','4','2','0')
|
||
|
#define MMAL_ENCODING_YV12 MMAL_FOURCC('Y','V','1','2')
|
||
|
#define MMAL_ENCODING_I422 MMAL_FOURCC('I','4','2','2')
|
||
|
#define MMAL_ENCODING_I422_SLICE MMAL_FOURCC('S','4','2','2')
|
||
|
#define MMAL_ENCODING_YUYV MMAL_FOURCC('Y','U','Y','V')
|
||
|
#define MMAL_ENCODING_YVYU MMAL_FOURCC('Y','V','Y','U')
|
||
|
#define MMAL_ENCODING_UYVY MMAL_FOURCC('U','Y','V','Y')
|
||
|
#define MMAL_ENCODING_VYUY MMAL_FOURCC('V','Y','U','Y')
|
||
|
#define MMAL_ENCODING_NV12 MMAL_FOURCC('N','V','1','2')
|
||
|
#define MMAL_ENCODING_NV21 MMAL_FOURCC('N','V','2','1')
|
||
|
#define MMAL_ENCODING_ARGB MMAL_FOURCC('A','R','G','B')
|
||
|
#define MMAL_ENCODING_RGBA MMAL_FOURCC('R','G','B','A')
|
||
|
#define MMAL_ENCODING_ABGR MMAL_FOURCC('A','B','G','R')
|
||
|
#define MMAL_ENCODING_BGRA MMAL_FOURCC('B','G','R','A')
|
||
|
#define MMAL_ENCODING_RGB16 MMAL_FOURCC('R','G','B','2')
|
||
|
#define MMAL_ENCODING_RGB24 MMAL_FOURCC('R','G','B','3')
|
||
|
#define MMAL_ENCODING_RGB32 MMAL_FOURCC('R','G','B','4')
|
||
|
#define MMAL_ENCODING_BGR16 MMAL_FOURCC('B','G','R','2')
|
||
|
#define MMAL_ENCODING_BGR24 MMAL_FOURCC('B','G','R','3')
|
||
|
#define MMAL_ENCODING_BGR32 MMAL_FOURCC('B','G','R','4')
|
||
|
|
||
|
/** SAND Video (YUVUV128) format, native format understood by VideoCore.
|
||
|
* This format is *not* opaque - if requested you will receive full frames
|
||
|
* of YUV_UV video.
|
||
|
*/
|
||
|
#define MMAL_ENCODING_YUVUV128 MMAL_FOURCC('S','A','N','D')
|
||
|
|
||
|
/** VideoCore opaque image format, image handles are returned to
|
||
|
* the host but not the actual image data.
|
||
|
*/
|
||
|
#define MMAL_ENCODING_OPAQUE MMAL_FOURCC('O','P','Q','V')
|
||
|
|
||
|
/** An EGL image handle
|
||
|
*/
|
||
|
#define MMAL_ENCODING_EGL_IMAGE MMAL_FOURCC('E','G','L','I')
|
||
|
|
||
|
/* }@ */
|
||
|
|
||
|
/** \name Pre-defined audio encodings */
|
||
|
/* @{ */
|
||
|
#define MMAL_ENCODING_PCM_UNSIGNED_BE MMAL_FOURCC('P','C','M','U')
|
||
|
#define MMAL_ENCODING_PCM_UNSIGNED_LE MMAL_FOURCC('p','c','m','u')
|
||
|
#define MMAL_ENCODING_PCM_SIGNED_BE MMAL_FOURCC('P','C','M','S')
|
||
|
#define MMAL_ENCODING_PCM_SIGNED_LE MMAL_FOURCC('p','c','m','s')
|
||
|
#define MMAL_ENCODING_PCM_FLOAT_BE MMAL_FOURCC('P','C','M','F')
|
||
|
#define MMAL_ENCODING_PCM_FLOAT_LE MMAL_FOURCC('p','c','m','f')
|
||
|
/* Defines for native endianness */
|
||
|
#ifdef MMAL_IS_BIG_ENDIAN
|
||
|
#define MMAL_ENCODING_PCM_UNSIGNED MMAL_ENCODING_PCM_UNSIGNED_BE
|
||
|
#define MMAL_ENCODING_PCM_SIGNED MMAL_ENCODING_PCM_SIGNED_BE
|
||
|
#define MMAL_ENCODING_PCM_FLOAT MMAL_ENCODING_PCM_FLOAT_BE
|
||
|
#else
|
||
|
#define MMAL_ENCODING_PCM_UNSIGNED MMAL_ENCODING_PCM_UNSIGNED_LE
|
||
|
#define MMAL_ENCODING_PCM_SIGNED MMAL_ENCODING_PCM_SIGNED_LE
|
||
|
#define MMAL_ENCODING_PCM_FLOAT MMAL_ENCODING_PCM_FLOAT_LE
|
||
|
#endif
|
||
|
|
||
|
#define MMAL_ENCODING_MP4A MMAL_FOURCC('M','P','4','A')
|
||
|
#define MMAL_ENCODING_MPGA MMAL_FOURCC('M','P','G','A')
|
||
|
#define MMAL_ENCODING_ALAW MMAL_FOURCC('A','L','A','W')
|
||
|
#define MMAL_ENCODING_MULAW MMAL_FOURCC('U','L','A','W')
|
||
|
#define MMAL_ENCODING_ADPCM_MS MMAL_FOURCC('M','S',0x0,0x2)
|
||
|
#define MMAL_ENCODING_ADPCM_IMA_MS MMAL_FOURCC('M','S',0x0,0x1)
|
||
|
#define MMAL_ENCODING_ADPCM_SWF MMAL_FOURCC('A','S','W','F')
|
||
|
#define MMAL_ENCODING_WMA1 MMAL_FOURCC('W','M','A','1')
|
||
|
#define MMAL_ENCODING_WMA2 MMAL_FOURCC('W','M','A','2')
|
||
|
#define MMAL_ENCODING_WMAP MMAL_FOURCC('W','M','A','P')
|
||
|
#define MMAL_ENCODING_WMAL MMAL_FOURCC('W','M','A','L')
|
||
|
#define MMAL_ENCODING_WMAV MMAL_FOURCC('W','M','A','V')
|
||
|
#define MMAL_ENCODING_AMRNB MMAL_FOURCC('A','M','R','N')
|
||
|
#define MMAL_ENCODING_AMRWB MMAL_FOURCC('A','M','R','W')
|
||
|
#define MMAL_ENCODING_AMRWBP MMAL_FOURCC('A','M','R','P')
|
||
|
#define MMAL_ENCODING_AC3 MMAL_FOURCC('A','C','3',' ')
|
||
|
#define MMAL_ENCODING_EAC3 MMAL_FOURCC('E','A','C','3')
|
||
|
#define MMAL_ENCODING_DTS MMAL_FOURCC('D','T','S',' ')
|
||
|
#define MMAL_ENCODING_MLP MMAL_FOURCC('M','L','P',' ')
|
||
|
#define MMAL_ENCODING_FLAC MMAL_FOURCC('F','L','A','C')
|
||
|
#define MMAL_ENCODING_VORBIS MMAL_FOURCC('V','O','R','B')
|
||
|
#define MMAL_ENCODING_SPEEX MMAL_FOURCC('S','P','X',' ')
|
||
|
#define MMAL_ENCODING_ATRAC3 MMAL_FOURCC('A','T','R','3')
|
||
|
#define MMAL_ENCODING_ATRACX MMAL_FOURCC('A','T','R','X')
|
||
|
#define MMAL_ENCODING_ATRACL MMAL_FOURCC('A','T','R','L')
|
||
|
#define MMAL_ENCODING_MIDI MMAL_FOURCC('M','I','D','I')
|
||
|
#define MMAL_ENCODING_EVRC MMAL_FOURCC('E','V','R','C')
|
||
|
#define MMAL_ENCODING_NELLYMOSER MMAL_FOURCC('N','E','L','Y')
|
||
|
#define MMAL_ENCODING_QCELP MMAL_FOURCC('Q','C','E','L')
|
||
|
#define MMAL_ENCODING_MP4V_DIVX_DRM MMAL_FOURCC('M','4','V','D')
|
||
|
/* @} */
|
||
|
|
||
|
/* @} MmalEncodings List */
|
||
|
|
||
|
/** \defgroup MmalEncodingVariants List of pre-defined encoding variants
|
||
|
* This defines a list of common encoding variants. This list isn't exhaustive and is only
|
||
|
* provided as a convenience to avoid clients having to use FourCC codes directly.
|
||
|
* However components are allowed to define and use their own FourCC codes. */
|
||
|
/* @{ */
|
||
|
|
||
|
/** \name Pre-defined H264 encoding variants */
|
||
|
/* @{ */
|
||
|
/** ISO 14496-10 Annex B byte stream format */
|
||
|
#define MMAL_ENCODING_VARIANT_H264_DEFAULT 0
|
||
|
/** ISO 14496-15 AVC stream format */
|
||
|
#define MMAL_ENCODING_VARIANT_H264_AVC1 MMAL_FOURCC('A','V','C','1')
|
||
|
/** Implicitly delineated NAL units without emulation prevention */
|
||
|
#define MMAL_ENCODING_VARIANT_H264_RAW MMAL_FOURCC('R','A','W',' ')
|
||
|
/* @} */
|
||
|
|
||
|
/** \name Pre-defined MPEG4 audio encoding variants */
|
||
|
/* @{ */
|
||
|
/** Raw stream format */
|
||
|
#define MMAL_ENCODING_VARIANT_MP4A_DEFAULT 0
|
||
|
/** ADTS stream format */
|
||
|
#define MMAL_ENCODING_VARIANT_MP4A_ADTS MMAL_FOURCC('A','D','T','S')
|
||
|
/* @} */
|
||
|
|
||
|
/* @} MmalEncodingVariants List */
|
||
|
|
||
|
/** \defgroup MmalColorSpace List of pre-defined video color spaces
|
||
|
* This defines a list of common color spaces. This list isn't exhaustive and is only
|
||
|
* provided as a convenience to avoid clients having to use FourCC codes directly.
|
||
|
* However components are allowed to define and use their own FourCC codes. */
|
||
|
/* @{ */
|
||
|
|
||
|
/** Unknown color space */
|
||
|
#define MMAL_COLOR_SPACE_UNKNOWN 0
|
||
|
/** ITU-R BT.601-5 [SDTV] */
|
||
|
#define MMAL_COLOR_SPACE_ITUR_BT601 MMAL_FOURCC('Y','6','0','1')
|
||
|
/** ITU-R BT.709-3 [HDTV] */
|
||
|
#define MMAL_COLOR_SPACE_ITUR_BT709 MMAL_FOURCC('Y','7','0','9')
|
||
|
/** JPEG JFIF */
|
||
|
#define MMAL_COLOR_SPACE_JPEG_JFIF MMAL_FOURCC('Y','J','F','I')
|
||
|
/** Title 47 Code of Federal Regulations (2003) 73.682 (a) (20) */
|
||
|
#define MMAL_COLOR_SPACE_FCC MMAL_FOURCC('Y','F','C','C')
|
||
|
/** Society of Motion Picture and Television Engineers 240M (1999) */
|
||
|
#define MMAL_COLOR_SPACE_SMPTE240M MMAL_FOURCC('Y','2','4','0')
|
||
|
/** ITU-R BT.470-2 System M */
|
||
|
#define MMAL_COLOR_SPACE_BT470_2_M MMAL_FOURCC('Y','_','_','M')
|
||
|
/** ITU-R BT.470-2 System BG */
|
||
|
#define MMAL_COLOR_SPACE_BT470_2_BG MMAL_FOURCC('Y','_','B','G')
|
||
|
/** JPEG JFIF, but with 16..255 luma */
|
||
|
#define MMAL_COLOR_SPACE_JFIF_Y16_255 MMAL_FOURCC('Y','Y','1','6')
|
||
|
/* @} MmalColorSpace List */
|
||
|
|
||
|
#endif /* MMAL_ENCODINGS_H */
|