|
- #ifndef _mkv_format_h_
- #define _mkv_format_h_
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- #define MKV_MIME_AUDIO "audio/x-matroska" // mka
- #define MKV_MIME_VIDEO "video/x-matroska" // mkv
- #define MKV_MIME_VIDEO_3D "video/x-matroska-3d"
-
- // https://www.matroska.org/technical/codec_specs.html
- enum mkv_codec_t
- {
- MKV_CODEC_UNKNOWN = 0,
-
- MKV_CODEC_VIDEO_VCM, // Microsoft (TM) Video Codec Manager (VCM)
- MKV_CODEC_VIDEO_UNCOMPRESSED, // Video, raw uncompressed video frames
- MKV_CODEC_VIDEO_DIVX4, // MPEG4 ISO simple profile (DivX4)
- MKV_CODEC_VIDEO_DIVX5, // MPEG4 ISO advanced simple profile (DivX5, XviD, FFMPEG)
- MKV_CODEC_VIDEO_MPEG4, // MPEG4 ISO advanced profile
- MKV_CODEC_VIDEO_MPEG4_MSV3, // Microsoft (TM) MPEG4 V3
- MKV_CODEC_VIDEO_MPEG1, // MPEG 1 Elementary Stream (ES)
- MKV_CODEC_VIDEO_MPEG2, // MPEG 2 Elementary Stream (ES)
- MKV_CODEC_VIDEO_H264, // AVC/H.264
- MKV_CODEC_VIDEO_H265, // HEVC/H.265
- MKV_CODEC_VIDEO_RV10, // RealVideo 1.0 aka RealVideo 5
- MKV_CODEC_VIDEO_RV20, // RealVideo G2 and RealVideo G2+SVT
- MKV_CODEC_VIDEO_RV30, // RealVideo 8
- MKV_CODEC_VIDEO_RV40, // RealVideo 9
- MKV_CODEC_VIDEO_QUICKTIME, // Video taken from QuickTime(TM) files
- MKV_CODEC_VIDEO_THEORA, // Theora
- MKV_CODEC_VIDEO_PRORES, // Apple ProRes
- MKV_CODEC_VIDEO_VP8, // VP8 Codec format
- MKV_CODEC_VIDEO_VP9, // VP9 Codec format
- MKV_CODEC_VIDEO_FFV1, // FF Video Codec 1
- MKV_CODEC_VIDEO_AV1, // AV1 Codec format
- MKV_CODEC_VIDEO_DIRAC, // ffmpeg
- MKV_CODEC_VIDEO_MJPEG, // ffmpeg
-
- MKV_CODEC_AUDIO_MP3 = 0x1000, // MPEG Audio 1, 2, 2.5 Layer III
- MKV_CODEC_AUDIO_MP2, // MPEG Audio 1, 2 Layer II
- MKV_CODEC_AUDIO_MP1, // MPEG Audio 1, 2 Layer I
- MKV_CODEC_AUDIO_PCM_BE, // PCM Integer Big Endian
- MKV_CODEC_AUDIO_PCM_LE, // PCM Integer Little Endian
- MKV_CODEC_AUDIO_PCM_FLOAT, // Floating Point, IEEE compatible(32/64 bits)
- MKV_CODEC_AUDIO_MPC, // MPC (musepack) SV8
- MKV_CODEC_AUDIO_AC3, // (Dolby) AC3
- MKV_CODEC_AUDIO_ALAC, // ALAC (Apple Lossless Audio Codec)
- MKV_CODEC_AUDIO_DTS, // Digital Theatre System
- MKV_CODEC_AUDIO_DTS_EXPRESS, // Digital Theatre System Express
- MKV_CODEC_AUDIO_DTS_LOSSLESS, // Digital Theatre System Lossless
- MKV_CODEC_AUDIO_VORBIS, // Vorbis
- MKV_CODEC_AUDIO_FLAC, // FLAC (Free Lossless Audio Codec)
- MKV_CODEC_AUDIO_RA1, // Real Audio 1
- MKV_CODEC_AUDIO_RA2, // Real Audio 2
- MKV_CODEC_AUDIO_COOK, // Real Audio Cook Codec (codename: Gecko)
- MKV_CODEC_AUDIO_SIPR, // Sipro Voice Codec
- MKV_CODEC_AUDIO_RALF, // Real Audio Lossless Format
- MKV_CODEC_AUDIO_ATRC, // Sony Atrac3 Codec
- MKV_CODEC_AUDIO_ACM, // Microsoft(TM) Audio Codec Manager (ACM)
- MKV_CODEC_AUDIO_AAC, // AAC MPEG2/MPEG4 MAIN/LC/SBR/SSR/LTP
- MKV_CODEC_AUDIO_QUICKTIME, // Audio taken from QuickTime(TM) files
- MKV_CODEC_AUDIO_TTA1, // The True Audio lossless audio compressor
- MKV_CODEC_AUDIO_WAVPACK4, // WavPack lossless audio compressor
- MKV_CODEC_AUDIO_OPUS, // Opus
- MKV_CODEC_AUDIO_TRUEHD, // ffmpeg
- MKV_CODEC_AUDIO_EAC3, // ffmpeg
-
- MKV_CODEC_SUBTITLE_TEXT = 0x2000,// UTF-8 Plain Text
- MKV_CODEC_SUBTITLE_SSA, // Subtitles Format
- MKV_CODEC_SUBTITLE_ASS, // Advanced Subtitles Format
- MKV_CODEC_SUBTITLE_USF, // Universal Subtitle Format
- MKV_CODEC_SUBTITLE_WEBVTT, // Web Video Text Tracks Format (WebVTT)
- MKV_CODEC_SUBTITLE_BMP, // Bitmap
- MKV_CODEC_SUBTITLE_DVBSUB, // Digital Video Broadcasting (DVB) subtitles
- MKV_CODEC_SUBTITLE_VOBSUB, // VobSub subtitles
- MKV_CODEC_SUBTITLE_PGS, // HDMV presentation graphics subtitles (PGS)
- MKV_CODEC_SUBTITLE_TEXTST, // HDMV text subtitles
- MKV_CODEC_SUBTITLE_KATE, // Karaoke And Text Encapsulation
- };
-
- enum
- {
- MKV_FLAGS_KEYFRAME = 0x0001, // Keyframe
- MKV_FLAGS_INVISIBLE = 0x0002, // Invisible, the codec SHOULD decode this frame but not display it
- MKV_FLAGS_DISCARDABLE = 0x0004, // Discardable, the frames of the Block can be discarded during playing if needed
- };
-
- enum
- {
- MKV_OPTION_WEBM = 0x00010000, // webm file
- MKV_OPTION_LIVE = 0x80000000, // live stream
- };
-
- enum ebml_video_interlaced_e
- {
- EBML_VIDEO_FLAG_UNDETERMINED = 0,
- EBML_VIDEO_FLAG_INTERLACED = 1,
- EBML_VIDEO_FLAG_PROGRESSIVE = 2,
- };
-
- enum ebml_video_field_order_e
- {
- EBML_VIDEO_FIELD_ORDER_PROGRESSIVE = 0,
- EBML_VIDEO_FIELD_ORDER_TTF = 1,
- EBML_VIDEO_FIELD_ORDER_UNDETERMINED = 2,
- EBML_VIDEO_FIELD_ORDER_BFF = 6,
- EBML_VIDEO_FIELD_ORDER_BFF_SWAPPED = 9,
- EBML_VIDEO_FIELD_ORDER_TTF_SWAPPED = 14,
- };
-
- enum ebml_video_stereo_mode_e
- {
- EBML_VIDEO_STEREO_MODE_MONO = 0,
- EBML_VIDEO_STEREO_MODE_SIDE_BY_SIDE_LEFT = 1, // left eye first
- EBML_VIDEO_STEREO_MODE_TOP_BOTTOM_RIGHT = 2, // right eye first
- EBML_VIDEO_STEREO_MODE_TOP_BOTTOM_LEFT = 3, // left eye first
- EBML_VIDEO_STEREO_MODE_CHECKBOARD_RIGHT = 4, // right eye first
- EBML_VIDEO_STEREO_MODE_CHECKBOARD_LEFT = 5, // left eye first
- EBML_VIDEO_STEREO_MODE_ROW_INTERLEAVED_RIGHT = 6, // right eye first
- EBML_VIDEO_STEREO_MODE_ROW_INTERLEAVED_LEFT = 7, // left eye first
- EBML_VIDEO_STEREO_MODE_COLUMN_INTERLEAVED_RIGHT = 8, // right eye first
- EBML_VIDEO_STEREO_MODE_COLUMN_INTERLEAVED_LEFT = 9, // left eye first
- EBML_VIDEO_STEREO_MODE_ANAGLYPH_CYAN_RED = 10, // cyan/red
- EBML_VIDEO_STEREO_MODE_SIDE_BY_SIDE_RIGHT = 11, // right eye first
- EBML_VIDEO_STEREO_MODE_ANAGLYPH_GREEN_MAGENTA = 12, // green/megenta
- EBML_VIDEO_STEREO_MODE_BOTH_EYES_LACED_IN_ONE_BLOCK_LEFT = 13, // left eye first
- EBML_VIDEO_STEREO_MODE_BOTH_EYES_LACED_IN_ONE_BLOCK_RIGHT = 14, // right eye first
- };
-
- enum ebml_video_display_unit_e
- {
- EBML_VIDEO_DISPLAY_UNIT_PIXELS = 0,
- EBML_VIDEO_DISPLAY_UNIT_CETIMETERS = 1,
- EBML_VIDEO_DISPLAY_UNIT_INCHES = 2,
- EBML_VIDEO_DISPLAY_UNIT_ASPECT_RATION = 3,
- EBML_VIDEO_DISPLAY_UNIT_UNKNOWN = 4,
- };
-
- enum ebml_video_aspect_ratio_type_e
- {
- EBML_VIDEO_ASPECT_RATIO_TYPE_FREE_RESIZING = 0,
- EBML_VIDEO_ASPECT_RATIO_TYPE_KEEP_ASPECT_RATIOn = 1,
- EBML_VIDEO_ASPECT_RATIO_TYPE_FIXED = 2,
- };
-
- enum ebml_video_color_matrix_coefficients_t
- {
- EBML_VIDEO_COLOR_MATRIX_COEFFICIENTS_IDENTIY = 0,
- EBML_VIDEO_COLOR_MATRIX_COEFFICIENTS_ITU_R_BT709 = 1,
- EBML_VIDEO_COLOR_MATRIX_COEFFICIENTS_UNSPECIFIED = 2,
- EBML_VIDEO_COLOR_MATRIX_COEFFICIENTS_RESERVED = 3,
- EBML_VIDEO_COLOR_MATRIX_COEFFICIENTS_US_FCC_73_682 = 4,
- EBML_VIDEO_COLOR_MATRIX_COEFFICIENTS_ITU_R_BT_470BG = 5,
- EBML_VIDEO_COLOR_MATRIX_COEFFICIENTS_SMPTE_170M = 6,
- EBML_VIDEO_COLOR_MATRIX_COEFFICIENTS_SMPTE_240M = 7,
- EBML_VIDEO_COLOR_MATRIX_COEFFICIENTS_YCOCG = 8,
- EBML_VIDEO_COLOR_MATRIX_COEFFICIENTS_BT2020_NON_CONSTANT_LUMINANCE = 9,
- EBML_VIDEO_COLOR_MATRIX_COEFFICIENTS_BT2020_CONSTANT_LUMINANCE = 10,
- EBML_VIDEO_COLOR_MATRIX_COEFFICIENTS_SMPTE_ST_2085 = 11,
- EBML_VIDEO_COLOR_MATRIX_COEFFICIENTS_CHROMA_DERIVED_NON_CONSTANT_LUMINANCE = 12,
- EBML_VIDEO_COLOR_MATRIX_COEFFICIENTS_CHROMA_DERIVED_CONSTANT_LUMINANCE = 13,
- EBML_VIDEO_COLOR_MATRIX_COEFFICIENTS_ITU_R_BT_2100_0 = 14,
- };
-
- enum ebml_video_color_range_e
- {
- EBML_VIDEO_COLOR_RANGE_UNSPECIFIED = 0,
- EBML_VIDEO_COLOR_RNAGE_BROADCAST_RANGE,
- EBML_VIDEO_COLOR_RNAGE_FULL_RANGE,
- EBML_VIDEO_COLOR_RNAGE_MATRIX_COEFFICIENTS,
- };
-
- enum ebml_video_color_transfer_characteristics_e
- {
- EBML_VIDEO_COLOR_TRANSFER_CHARACTERISTICS_RESERVED = 0,
- EBML_VIDEO_COLOR_TRANSFER_CHARACTERISTICS_ITU_R_BT_709 = 1,
- EBML_VIDEO_COLOR_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2,
- EBML_VIDEO_COLOR_TRANSFER_CHARACTERISTICS_GAMMA_2_2_CURVE_BT_470M = 4,
- EBML_VIDEO_COLOR_TRANSFER_CHARACTERISTICS_GAMMA_2_8_CURVE_BT_470BG = 5,
- EBML_VIDEO_COLOR_TRANSFER_CHARACTERISTICS_SMPTE_170M = 6,
- EBML_VIDEO_COLOR_TRANSFER_CHARACTERISTICS_SMPTE_240M = 7,
- EBML_VIDEO_COLOR_TRANSFER_CHARACTERISTICS_LINEAR = 8,
- EBML_VIDEO_COLOR_TRANSFER_CHARACTERISTICS_LOG = 9,
- EBML_VIDEO_COLOR_TRANSFER_CHARACTERISTICS_LOG_SQRT = 10,
- EBML_VIDEO_COLOR_TRANSFER_CHARACTERISTICS_IEC_61966_2_4 = 11,
- EBML_VIDEO_COLOR_TRANSFER_CHARACTERISTICS_ITU_R_BT_1361_EXTENDED_COLOUR_GAMUT = 12,
- EBML_VIDEO_COLOR_TRANSFER_CHARACTERISTICS_IEC_61966_2_1 = 13,
- EBML_VIDEO_COLOR_TRANSFER_CHARACTERISTICS_ITU_R_BT_2020_10BIT = 14,
- EBML_VIDEO_COLOR_TRANSFER_CHARACTERISTICS_ITU_R_BT_2020_12BIT = 15,
- EBML_VIDEO_COLOR_TRANSFER_CHARACTERISTICS_ITU_R_BT_2100_PERCEPTUAL_QUANTIZATION = 16,
- EBML_VIDEO_COLOR_TRANSFER_CHARACTERISTICS_SMPTE_ST_428_1 = 17,
- EBML_VIDEO_COLOR_TRANSFER_CHARACTERISTICS_ARIB_STD_B67_HLG = 18,
- };
-
- enum ebml_video_color_primaries_e
- {
- EBML_VIDEO_COLOR_PRIMARIES_RESERVED = 0,
- EBML_VIDEO_COLOR_PRIMARIES_ITU_R_BT_709 = 1,
- EBML_VIDEO_COLOR_PRIMARIES_UNSPECIFIED = 2,
- EBML_VIDEO_COLOR_PRIMARIES_ITU_R_BT_470M = 4,
- EBML_VIDEO_COLOR_PRIMARIES_ITU_R_BT_470BG_BT_601_625 = 5,
- EBML_VIDEO_COLOR_PRIMARIES_ITU_R_BT_601_525_TMPTE_170M = 6,
- EBML_VIDEO_COLOR_PRIMARIES_SMPTE_240M = 7,
- EBML_VIDEO_COLOR_PRIMARIES_FILM = 8,
- EBML_VIDEO_COLOR_PRIMARIES_ITU_R_BT_2020 = 9,
- EBML_VIDEO_COLOR_PRIMARIES_SMPTE_ST_428_1 = 10,
- EBML_VIDEO_COLOR_PRIMARIES_SMPTE_RP_432_2 = 11,
- EBML_VIDEO_COLOR_PRIMARIES_SMPTE_EG_432_2 = 12,
- EBML_VIDEO_COLOR_PRIMARIES_EBU_TECH_3212E_JEDEC_P22_PHOSPHORS = 22,
- };
-
- enum ebml_video_projection_type_e
- {
- EBML_VIDEO_PROJECTION_RECTANGULAR = 0,
- EBML_VIDEO_PROJECTION_EQUIRECTANGULAR = 1,
- EBML_VIDEO_PROJECTION_CUBEMAP = 2,
- EBML_VIDEO_PROJECTION_MESH = 3,
- };
-
- const char* mkv_codec_find_name(enum mkv_codec_t codec);
- enum mkv_codec_t mkv_codec_find_id(const char* name);
- int mkv_codec_is_video(enum mkv_codec_t codec);
- int mkv_codec_is_audio(enum mkv_codec_t codec);
- int mkv_codec_is_subtitle(enum mkv_codec_t codec);
-
- #ifdef __cplusplus
- }
- #endif
- #endif /* !_mkv_format_h_ */
|