gstreamer/sys/androidmedia/gstamc-constants.h
Jan Schmidt 1df82fc14f androidmedia: Add new color format, and enhance debug output
Add a new color format seen on my Galaxy S3
(OMX_SEC_COLOR_FormatNV12Tiled = 0x7fc00002) to the table,
but don't actually implement it - the decoder doesn't choose it.

Remove an assert that makes the plugin fail noisily and take the app down
if it sees a color format it doesn't recognise (just skip the codec instead)

Modify the debug output when plugin scanning to print color format info to
make this sort of thing easier in the future.
2013-12-31 23:24:06 +11:00

234 lines
6.1 KiB
C

/*
* Copyright (C) 2012, Collabora Ltd.
* Author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
#ifndef __GST_AMC_CONSTANTS_H__
#define __GST_AMC_CONSTANTS_H__
/* FIXME: We might need to get these values from Java if there's
* ever a device or Android version that changes these values
*/
/* Copies from MediaCodec.java */
enum
{
BUFFER_FLAG_SYNC_FRAME = 1,
BUFFER_FLAG_CODEC_CONFIG = 2,
BUFFER_FLAG_END_OF_STREAM = 4
};
enum
{
CONFIGURE_FLAG_ENCODE = 1
};
enum
{
INFO_TRY_AGAIN_LATER = -1,
INFO_OUTPUT_FORMAT_CHANGED = -2,
INFO_OUTPUT_BUFFERS_CHANGED = -3
};
/* Copies from MediaCodecInfo.java */
enum
{
COLOR_FormatMonochrome = 1,
COLOR_Format8bitRGB332 = 2,
COLOR_Format12bitRGB444 = 3,
COLOR_Format16bitARGB4444 = 4,
COLOR_Format16bitARGB1555 = 5,
COLOR_Format16bitRGB565 = 6,
COLOR_Format16bitBGR565 = 7,
COLOR_Format18bitRGB666 = 8,
COLOR_Format18bitARGB1665 = 9,
COLOR_Format19bitARGB1666 = 10,
COLOR_Format24bitRGB888 = 11,
COLOR_Format24bitBGR888 = 12,
COLOR_Format24bitARGB1887 = 13,
COLOR_Format25bitARGB1888 = 14,
COLOR_Format32bitBGRA8888 = 15,
COLOR_Format32bitARGB8888 = 16,
COLOR_FormatYUV411Planar = 17,
COLOR_FormatYUV411PackedPlanar = 18,
COLOR_FormatYUV420Planar = 19,
COLOR_FormatYUV420PackedPlanar = 20,
COLOR_FormatYUV420SemiPlanar = 21,
COLOR_FormatYUV422Planar = 22,
COLOR_FormatYUV422PackedPlanar = 23,
COLOR_FormatYUV422SemiPlanar = 24,
COLOR_FormatYCbYCr = 25,
COLOR_FormatYCrYCb = 26,
COLOR_FormatCbYCrY = 27,
COLOR_FormatCrYCbY = 28,
COLOR_FormatYUV444Interleaved = 29,
COLOR_FormatRawBayer8bit = 30,
COLOR_FormatRawBayer10bit = 31,
COLOR_FormatRawBayer8bitcompressed = 32,
COLOR_FormatL2 = 33,
COLOR_FormatL4 = 34,
COLOR_FormatL8 = 35,
COLOR_FormatL16 = 36,
COLOR_FormatL24 = 37,
COLOR_FormatL32 = 38,
COLOR_FormatYUV420PackedSemiPlanar = 39,
COLOR_FormatYUV422PackedSemiPlanar = 40,
COLOR_Format18BitBGR666 = 41,
COLOR_Format24BitARGB6666 = 42,
COLOR_Format24BitABGR6666 = 43,
COLOR_FormatAndroidOpaque = 0x7F000789,
COLOR_TI_FormatYUV420PackedSemiPlanar = 0x7f000100,
COLOR_QCOM_FormatYUV420SemiPlanar = 0x7fa30c00,
COLOR_QCOM_FormatYUV420PackedSemiPlanar64x32Tile2m8ka = 0x7fa30c03,
/* From hardware/ti/omap4xxx/domx/omx_core/inc/OMX_TI_IVCommon.h */
COLOR_TI_FormatYUV420PackedSemiPlanarInterlaced = 0x7f000001,
/* This format is Exynos specific from the OMX vendor-specific
* numeric range, but is defined in the Android OMX headers, so
* we shouldn't find incompatible usage and crash horribly... right?
* FIXME: Not actually implemented in the video decoder, it will just error out
* The format seems to be equiv to V4L2_PIX_FMT_NV12MT_16X16 */
COLOR_OMX_SEC_FormatNV12Tiled = 0x7fc00002
};
enum
{
AVCProfileBaseline = 0x01,
AVCProfileMain = 0x02,
AVCProfileExtended = 0x04,
AVCProfileHigh = 0x08,
AVCProfileHigh10 = 0x10,
AVCProfileHigh422 = 0x20,
AVCProfileHigh444 = 0x40
};
enum
{
AVCLevel1 = 0x01,
AVCLevel1b = 0x02,
AVCLevel11 = 0x04,
AVCLevel12 = 0x08,
AVCLevel13 = 0x10,
AVCLevel2 = 0x20,
AVCLevel21 = 0x40,
AVCLevel22 = 0x80,
AVCLevel3 = 0x100,
AVCLevel31 = 0x200,
AVCLevel32 = 0x400,
AVCLevel4 = 0x800,
AVCLevel41 = 0x1000,
AVCLevel42 = 0x2000,
AVCLevel5 = 0x4000,
AVCLevel51 = 0x8000
};
enum
{
H263ProfileBaseline = 0x01,
H263ProfileH320Coding = 0x02,
H263ProfileBackwardCompatible = 0x04,
H263ProfileISWV2 = 0x08,
H263ProfileISWV3 = 0x10,
H263ProfileHighCompression = 0x20,
H263ProfileInternet = 0x40,
H263ProfileInterlace = 0x80,
H263ProfileHighLatency = 0x100
};
enum
{
H263Level10 = 0x01,
H263Level20 = 0x02,
H263Level30 = 0x04,
H263Level40 = 0x08,
H263Level45 = 0x10,
H263Level50 = 0x20,
H263Level60 = 0x40,
H263Level70 = 0x80
};
enum
{
MPEG4ProfileSimple = 0x01,
MPEG4ProfileSimpleScalable = 0x02,
MPEG4ProfileCore = 0x04,
MPEG4ProfileMain = 0x08,
MPEG4ProfileNbit = 0x10,
MPEG4ProfileScalableTexture = 0x20,
MPEG4ProfileSimpleFace = 0x40,
MPEG4ProfileSimpleFBA = 0x80,
MPEG4ProfileBasicAnimated = 0x100,
MPEG4ProfileHybrid = 0x200,
MPEG4ProfileAdvancedRealTime = 0x400,
MPEG4ProfileCoreScalable = 0x800,
MPEG4ProfileAdvancedCoding = 0x1000,
MPEG4ProfileAdvancedCore = 0x2000,
MPEG4ProfileAdvancedScalable = 0x4000,
MPEG4ProfileAdvancedSimple = 0x8000
};
enum
{
MPEG4Level0 = 0x01,
MPEG4Level0b = 0x02,
MPEG4Level1 = 0x04,
MPEG4Level2 = 0x08,
MPEG4Level3 = 0x10,
MPEG4Level4 = 0x20,
MPEG4Level4a = 0x40,
MPEG4Level5 = 0x80
};
enum
{
AACObjectMain = 1,
AACObjectLC = 2,
AACObjectSSR = 3,
AACObjectLTP = 4,
AACObjectHE = 5,
AACObjectScalable = 6,
AACObjectERLC = 17,
AACObjectLD = 23,
AACObjectHE_PS = 29,
AACObjectELD = 39
};
/* Copies from AudioFormat.java */
enum
{
CHANNEL_OUT_FRONT_LEFT = 0x4,
CHANNEL_OUT_FRONT_RIGHT = 0x8,
CHANNEL_OUT_FRONT_CENTER = 0x10,
CHANNEL_OUT_LOW_FREQUENCY = 0x20,
CHANNEL_OUT_BACK_LEFT = 0x40,
CHANNEL_OUT_BACK_RIGHT = 0x80,
CHANNEL_OUT_FRONT_LEFT_OF_CENTER = 0x100,
CHANNEL_OUT_FRONT_RIGHT_OF_CENTER = 0x200,
CHANNEL_OUT_BACK_CENTER = 0x400,
CHANNEL_OUT_SIDE_LEFT = 0x800,
CHANNEL_OUT_SIDE_RIGHT = 0x1000,
CHANNEL_OUT_TOP_CENTER = 0x2000,
CHANNEL_OUT_TOP_FRONT_LEFT = 0x4000,
CHANNEL_OUT_TOP_FRONT_CENTER = 0x8000,
CHANNEL_OUT_TOP_FRONT_RIGHT = 0x10000,
CHANNEL_OUT_TOP_BACK_LEFT = 0x20000,
CHANNEL_OUT_TOP_BACK_CENTER = 0x40000,
CHANNEL_OUT_TOP_BACK_RIGHT = 0x80000
};
#endif