/***************************************************************************** * ijksdl_codec_android_mediadef.h ***************************************************************************** * * Copyright (c) 2014 Bilibili * copyright (c) 2014 Zhang Rui * * This file is part of ijkPlayer. * * ijkPlayer 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; either * version 2.1 of the License, or (at your option) any later version. * * ijkPlayer 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 ijkPlayer; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef IJKSDL_ANDROID__ANDROID_CODEC_ANDROID_MEDIADEF_H #define IJKSDL_ANDROID__ANDROID_CODEC_ANDROID_MEDIADEF_H #include "../ijksdl_misc.h" typedef enum sdl_amedia_status_t { SDL_AMEDIA_OK = 0, SDL_AMEDIA_ERROR_BASE = -10000, SDL_AMEDIA_ERROR_UNKNOWN = SDL_AMEDIA_ERROR_BASE, SDL_AMEDIA_ERROR_MALFORMED = SDL_AMEDIA_ERROR_BASE - 1, SDL_AMEDIA_ERROR_UNSUPPORTED = SDL_AMEDIA_ERROR_BASE - 2, SDL_AMEDIA_ERROR_INVALID_OBJECT = SDL_AMEDIA_ERROR_BASE - 3, SDL_AMEDIA_ERROR_INVALID_PARAMETER = SDL_AMEDIA_ERROR_BASE - 4, SDL_AMEDIA_DRM_ERROR_BASE = -20000, SDL_AMEDIA_DRM_NOT_PROVISIONED = SDL_AMEDIA_DRM_ERROR_BASE - 1, SDL_AMEDIA_DRM_RESOURCE_BUSY = SDL_AMEDIA_DRM_ERROR_BASE - 2, SDL_AMEDIA_DRM_DEVICE_REVOKED = SDL_AMEDIA_DRM_ERROR_BASE - 3, SDL_AMEDIA_DRM_SHORT_BUFFER = SDL_AMEDIA_DRM_ERROR_BASE - 4, SDL_AMEDIA_DRM_SESSION_NOT_OPENED = SDL_AMEDIA_DRM_ERROR_BASE - 5, SDL_AMEDIA_DRM_TAMPER_DETECTED = SDL_AMEDIA_DRM_ERROR_BASE - 6, SDL_AMEDIA_DRM_VERIFY_FAILED = SDL_AMEDIA_DRM_ERROR_BASE - 7, SDL_AMEDIA_DRM_NEED_KEY = SDL_AMEDIA_DRM_ERROR_BASE - 8, SDL_AMEDIA_DRM_LICENSE_EXPIRED = SDL_AMEDIA_DRM_ERROR_BASE - 9, } sdl_amedia_status_t; #define SDL_AMIME_VIDEO_VP8 "video/x-vnd.on2.vp8" //- VP8 video (i.e. video in .webm) #define SDL_AMIME_VIDEO_VP9 "video/x-vnd.on2.vp9" //- VP9 video (i.e. video in .webm) #define SDL_AMIME_VIDEO_AVC "video/avc" //- H.264/AVC video #define SDL_AMIME_VIDEO_HEVC "video/hevc" //- H.265/HEVC video #define SDL_AMIME_VIDEO_MPEG2VIDEO "video/mpeg2" //- MPEG2 video #define SDL_AMIME_VIDEO_MPEG4 "video/mp4v-es" //- MPEG4 video #define SDL_AMIME_VIDEO_H263 "video/3gpp" //- H.263 video #define SDL_AMIME_AUDIO_AMR_NB "audio/3gpp" //- AMR narrowband audio #define SDL_AMIME_AUDIO_AMR_WB "audio/amr-wb" //- AMR wideband audio #define SDL_AMIME_AUDIO_MP3 "audio/mpeg" //- MPEG1/2 audio layer III #define SDL_AMIME_AUDIO_RAW_AAC "audio/mp4a-latm" //- AAC audio (note, this is raw AAC packets, not packaged in LATM!) #define SDL_AMIME_AUDIO_VORBIS "audio/vorbis" //- vorbis audio #define SDL_AMIME_AUDIO_G711_ALAW "audio/g711-alaw" //- G.711 alaw audio #define SDL_AMIME_AUDIO_G711_MLAW "audio/g711-mlaw" //- G.711 ulaw audio #if 0 typedef enum sdl_amedia_format_key_t { AMEDIAFORMAT_KEY_AAC_PROFILE, AMEDIAFORMAT_KEY_BIT_RATE, AMEDIAFORMAT_KEY_CHANNEL_COUNT, AMEDIAFORMAT_KEY_CHANNEL_MASK, AMEDIAFORMAT_KEY_COLOR_FORMAT, AMEDIAFORMAT_KEY_DURATION, AMEDIAFORMAT_KEY_FLAC_COMPRESSION_LEVEL, AMEDIAFORMAT_KEY_FRAME_RATE, AMEDIAFORMAT_KEY_HEIGHT, AMEDIAFORMAT_KEY_IS_ADTS, AMEDIAFORMAT_KEY_IS_AUTOSELECT, AMEDIAFORMAT_KEY_IS_DEFAULT, AMEDIAFORMAT_KEY_IS_FORCED_SUBTITLE, AMEDIAFORMAT_KEY_I_FRAME_INTERVAL, AMEDIAFORMAT_KEY_LANGUAGE, AMEDIAFORMAT_KEY_MAX_HEIGHT, AMEDIAFORMAT_KEY_MAX_INPUT_SIZE, AMEDIAFORMAT_KEY_MAX_WIDTH, AMEDIAFORMAT_KEY_MIME, AMEDIAFORMAT_KEY_PUSH_BLANK_BUFFERS_ON_STOP, AMEDIAFORMAT_KEY_REPEAT_PREVIOUS_FRAME_AFTER, AMEDIAFORMAT_KEY_SAMPLE_RATE, AMEDIAFORMAT_KEY_WIDTH, AMEDIAFORMAT_KEY_STRIDE, } sdl_amedia_format_key_t; #else #define AMEDIAFORMAT_KEY_AAC_PROFILE "aac-profile" #define AMEDIAFORMAT_KEY_BIT_RATE "bitrate" #define AMEDIAFORMAT_KEY_CHANNEL_COUNT "channel-count" #define AMEDIAFORMAT_KEY_CHANNEL_MASK "channel-mask" #define AMEDIAFORMAT_KEY_COLOR_FORMAT "color-format" #define AMEDIAFORMAT_KEY_DURATION "durationUs" #define AMEDIAFORMAT_KEY_FLAC_COMPRESSION_LEVEL "flac-compression-level" #define AMEDIAFORMAT_KEY_FRAME_RATE "frame-rate" #define AMEDIAFORMAT_KEY_HEIGHT "height" #define AMEDIAFORMAT_KEY_IS_ADTS "is-adts" //#define AMEDIAFORMAT_KEY_IS_AUTOSELECT //#define AMEDIAFORMAT_KEY_IS_DEFAULT //#define AMEDIAFORMAT_KEY_IS_FORCED_SUBTITLE #define AMEDIAFORMAT_KEY_I_FRAME_INTERVAL "i-frame-interval" //#define AMEDIAFORMAT_KEY_LANGUAGE //#define AMEDIAFORMAT_KEY_MAX_HEIGHT #define AMEDIAFORMAT_KEY_MAX_INPUT_SIZE "max-input-size" //#define AMEDIAFORMAT_KEY_MAX_WIDTH #define AMEDIAFORMAT_KEY_MIME "mime" //#define AMEDIAFORMAT_KEY_PUSH_BLANK_BUFFERS_ON_STOP, //#define AMEDIAFORMAT_KEY_REPEAT_PREVIOUS_FRAME_AFTER, #define AMEDIAFORMAT_KEY_SAMPLE_RATE "sample-rate" #define AMEDIAFORMAT_KEY_WIDTH "width" //#define AMEDIAFORMAT_KEY_STRIDE #endif enum { AMEDIACODEC__INFO_OUTPUT_BUFFERS_CHANGED = -3, AMEDIACODEC__INFO_OUTPUT_FORMAT_CHANGED = -2, AMEDIACODEC__INFO_TRY_AGAIN_LATER = -1, AMEDIACODEC__UNKNOWN_ERROR = -1000, }; enum { AMEDIACODEC__BUFFER_FLAG_KEY_FRAME = 0x01, AMEDIACODEC__BUFFER_FLAG_CODEC_CONFIG = 0x02, AMEDIACODEC__BUFFER_FLAG_END_OF_STREAM = 0x04, // extended AMEDIACODEC__BUFFER_FLAG_FAKE_FRAME = 0x1000, }; enum { AMEDIACODEC__OMX_COLOR_FormatMonochrome = 1, AMEDIACODEC__OMX_COLOR_Format8bitRGB332 = 2, AMEDIACODEC__OMX_COLOR_Format12bitRGB444 = 3, AMEDIACODEC__OMX_COLOR_Format16bitARGB4444 = 4, AMEDIACODEC__OMX_COLOR_Format16bitARGB1555 = 5, AMEDIACODEC__OMX_COLOR_Format16bitRGB565 = 6, AMEDIACODEC__OMX_COLOR_Format16bitBGR565 = 7, AMEDIACODEC__OMX_COLOR_Format18bitRGB666 = 8, AMEDIACODEC__OMX_COLOR_Format18bitARGB1665 = 9, AMEDIACODEC__OMX_COLOR_Format19bitARGB1666 = 10, AMEDIACODEC__OMX_COLOR_Format24bitRGB888 = 11, AMEDIACODEC__OMX_COLOR_Format24bitBGR888 = 12, AMEDIACODEC__OMX_COLOR_Format24bitARGB1887 = 13, AMEDIACODEC__OMX_COLOR_Format25bitARGB1888 = 14, AMEDIACODEC__OMX_COLOR_Format32bitBGRA8888 = 15, AMEDIACODEC__OMX_COLOR_Format32bitARGB8888 = 16, AMEDIACODEC__OMX_COLOR_FormatYUV411Planar = 17, AMEDIACODEC__OMX_COLOR_FormatYUV411PackedPlanar = 18, AMEDIACODEC__OMX_COLOR_FormatYUV420Planar = 19, AMEDIACODEC__OMX_COLOR_FormatYUV420PackedPlanar = 20, AMEDIACODEC__OMX_COLOR_FormatYUV420SemiPlanar = 21, AMEDIACODEC__OMX_COLOR_FormatYUV422Planar = 22, AMEDIACODEC__OMX_COLOR_FormatYUV422PackedPlanar = 23, AMEDIACODEC__OMX_COLOR_FormatYUV422SemiPlanar = 24, AMEDIACODEC__OMX_COLOR_FormatYCbYCr = 25, AMEDIACODEC__OMX_COLOR_FormatYCrYCb = 26, AMEDIACODEC__OMX_COLOR_FormatCbYCrY = 27, AMEDIACODEC__OMX_COLOR_FormatCrYCbY = 28, AMEDIACODEC__OMX_COLOR_FormatYUV444Interleaved = 29, AMEDIACODEC__OMX_COLOR_FormatRawBayer8bit = 30, AMEDIACODEC__OMX_COLOR_FormatRawBayer10bit = 31, AMEDIACODEC__OMX_COLOR_FormatRawBayer8bitcompressed = 32, AMEDIACODEC__OMX_COLOR_FormatL2 = 33, AMEDIACODEC__OMX_COLOR_FormatL4 = 34, AMEDIACODEC__OMX_COLOR_FormatL8 = 35, AMEDIACODEC__OMX_COLOR_FormatL16 = 36, AMEDIACODEC__OMX_COLOR_FormatL24 = 37, AMEDIACODEC__OMX_COLOR_FormatL32 = 38, AMEDIACODEC__OMX_COLOR_FormatYUV420PackedSemiPlanar = 39, AMEDIACODEC__OMX_COLOR_FormatYUV422PackedSemiPlanar = 40, AMEDIACODEC__OMX_COLOR_Format18BitBGR666 = 41, AMEDIACODEC__OMX_COLOR_Format24BitARGB6666 = 42, AMEDIACODEC__OMX_COLOR_Format24BitABGR6666 = 43, // AMEDIACODEC__OMX_COLOR_TI_FormatYUV420PackedSemiPlanar = 0x7f000100, AMEDIACODEC__OMX_COLOR_FormatSurface = 0x7f000789, AMEDIACODEC__OMX_COLOR_FormatYUV420Flexible = 0x7f420888, // AMEDIACODEC__OMX_COLOR_QCOM_FormatYUV420SemiPlanar = 0x7fa30c00, // from hardware intel _AMEDIACODEC__OMX_INTEL_COLOR_FormatYUV420PackedSemiPlanar = 0x7FA00E00, _AMEDIACODEC__OMX_INTEL_COLOR_FormatYUV420PackedSemiPlanar_Tiled = 0x7FA00F00, // from hardware qcom _AMEDIACODEC__OMX_QCOM_COLOR_FormatYVU420SemiPlanar = 0x7FA30C00, _AMEDIACODEC__OMX_QCOM_COLOR_FormatYVU420PackedSemiPlanar32m4ka = 0x7FA30C01, _AMEDIACODEC__OMX_QCOM_COLOR_FormatYUV420PackedSemiPlanar16m2ka = 0x7FA30C02, _AMEDIACODEC__OMX_QCOM_COLOR_FormatYUV420PackedSemiPlanar64x32Tile2m8ka = 0x7FA30C03, _AMEDIACODEC__OMX_QCOM_COLOR_FORMATYUV420PackedSemiPlanar32m = 0x7FA30C04, _AMEDIACODEC__OMX_QCOM_COLOR_FORMATYUV420PackedSemiPlanar32mMultiView = 0x7FA30C05, // from hardware samsung_slsi _AMEDIACODEC__OMX_SEC_COLOR_FormatNV12TPhysicalAddress = 0x7F000001, _AMEDIACODEC__OMX_SEC_COLOR_FormatNV12LPhysicalAddress = 0x7F000002, _AMEDIACODEC__OMX_SEC_COLOR_FormatNV12LVirtualAddress = 0x7F000003, _AMEDIACODEC__OMX_SEC_COLOR_FormatNV12Tiled = 0x7FC00002, _AMEDIACODEC__OMX_SEC_COLOR_FormatNV21LPhysicalAddress = 0x7F000010, _AMEDIACODEC__OMX_SEC_COLOR_FormatNV21Linear = 0x7F000011, // from hardware ti // _AMEDIACODEC__OMX_TI_COLOR_FormatRawBayer10bitStereo = 0x7F000002, _AMEDIACODEC__OMX_TI_COLOR_FormatYUV420PackedSemiPlanar = 0x7F000100, }; const char *SDL_AMediaCodec_getColorFormatName(int colorFormat); //#define AMCTRACE ALOGI #define AMCTRACE(...) #endif