123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- /*****************************************************************************
- * ijksdl_codec_android_mediadef.h
- *****************************************************************************
- *
- * Copyright (c) 2014 Bilibili
- * copyright (c) 2014 Zhang Rui <bbcallen@gmail.com>
- *
- * 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
|