FFmpeg
Loading...
Searching...
No Matches
matroskadec.c File Reference

Matroska file demuxer. More...

#include "config.h"
#include "config_components.h"
#include <inttypes.h>
#include <stdio.h>
#include "libavutil/attributes.h"
#include "libavutil/avstring.h"
#include "libavutil/base64.h"
#include "libavutil/bprint.h"
#include "libavutil/dict.h"
#include "libavutil/display.h"
#include "libavutil/hdr_dynamic_metadata.h"
#include "libavutil/intfloat.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/lzo.h"
#include "libavutil/mastering_display_metadata.h"
#include "libavutil/mathematics.h"
#include "libavutil/mem.h"
#include "libavutil/opt.h"
#include "libavutil/pixdesc.h"
#include "libavutil/time_internal.h"
#include "libavutil/spherical.h"
#include "libavcodec/bytestream.h"
#include "libavcodec/defs.h"
#include "libavcodec/flac.h"
#include "libavcodec/itut35.h"
#include "libavcodec/mpeg4audio.h"
#include "packet_internal.h"
#include "avformat.h"
#include "avio_internal.h"
#include "demux.h"
#include "dovi_isom.h"
#include "internal.h"
#include "isom.h"
#include "matroska.h"
#include "oggdec.h"
#include "riff.h"
#include "rmsipr.h"
#include "qtpalette.h"

Go to the source code of this file.

Data Structures

struct  CountedElement
 
struct  EbmlSyntax
 
struct  EbmlList
 
struct  EbmlBin
 
struct  Ebml
 
struct  MatroskaTrackCompression
 
struct  MatroskaTrackEncryption
 
struct  MatroskaTrackEncoding
 
struct  MatroskaMasteringMeta
 
struct  MatroskaTrackVideoColor
 
struct  MatroskaTrackVideoProjection
 
struct  MatroskaTrackVideo
 
struct  MatroskaTrackAudio
 
struct  MatroskaTrackPlane
 
struct  MatroskaTrackOperation
 
struct  MatroskaBlockAdditionMapping
 
struct  MatroskaTrack
 
struct  MatroskaAttachment
 
struct  MatroskaChapter
 
struct  MatroskaIndexPos
 
struct  MatroskaIndex
 
struct  MatroskaTag
 
struct  MatroskaTagTarget
 
struct  MatroskaTags
 
struct  MatroskaSeekhead
 
struct  MatroskaLevel
 
struct  MatroskaBlockMore
 
struct  MatroskaBlock
 
struct  MatroskaCluster
 
struct  MatroskaLevel1Element
 
struct  MatroskaDemuxContext
 

Macros

#define EBML_UNKNOWN_LENGTH   UINT64_MAX /* EBML unknown length, in uint64_t */
 
#define NEEDS_CHECKING
 
#define LEVEL_ENDED
 
#define SKIP_THRESHOLD
 
#define UNKNOWN_EQUIV
 
#define CHILD_OF(parent)
 
#define STEREO_MODE_CONV(STEREOMODETYPE, STEREO3DTYPE, FLAGS, WDIV, HDIV, WEBM)
 
#define NOTHING(STEREOMODETYPE, WDIV, HDIV, WEBM)
 
#define AAC_MAX_EXTRADATA_SIZE   5
 
#define TTA_EXTRADATA_SIZE   22
 
#define WAVPACK_EXTRADATA_SIZE   2
 

Enumerations

enum  EbmlType {
  EBML_NONE , EBML_UINT , EBML_SINT , EBML_FLOAT ,
  EBML_STR , EBML_UTF8 , EBML_BIN , EBML_NEST ,
  EBML_LEVEL1 , EBML_STOP , EBML_TYPE_COUNT
}
 
enum  { SKIP_TRACK = 1 }
 

Functions

static int matroska_reset_status (MatroskaDemuxContext *matroska, uint32_t id, int64_t position)
 
static int matroska_resync (MatroskaDemuxContext *matroska, int64_t last_pos)
 
static int ebml_read_num (MatroskaDemuxContext *matroska, AVIOContext *pb, int max_size, uint64_t *number, int eof_forbidden)
 
static int ebml_read_length (MatroskaDemuxContext *matroska, AVIOContext *pb, uint64_t *number)
 Read a EBML length value.
 
static int ebml_read_uint (AVIOContext *pb, int size, uint64_t default_value, uint64_t *num)
 
static int ebml_read_sint (AVIOContext *pb, int size, int64_t default_value, int64_t *num)
 
static int ebml_read_float (AVIOContext *pb, int size, double default_value, double *num)
 
static int ebml_read_ascii (AVIOContext *pb, int size, const char *default_value, char **str)
 
static int ebml_read_binary (AVIOContext *pb, int length, int64_t pos, EbmlBin *bin)
 
static int ebml_read_master (MatroskaDemuxContext *matroska, uint64_t length, int64_t pos)
 
static int matroska_ebmlnum_sint (MatroskaDemuxContext *matroska, AVIOContext *pb, int64_t *num)
 
static int ebml_parse (MatroskaDemuxContext *matroska, EbmlSyntax *syntax, void *data)
 
static EbmlSyntaxebml_parse_id (EbmlSyntax *syntax, uint32_t id)
 
static int ebml_parse_nest (MatroskaDemuxContext *matroska, EbmlSyntax *syntax, void *data)
 
static int is_ebml_id_valid (uint32_t id)
 
static MatroskaLevel1Elementmatroska_find_level1_elem (MatroskaDemuxContext *matroska, uint32_t id, int64_t pos)
 
static void ebml_free (EbmlSyntax *syntax, void *data)
 
static int matroska_probe (const AVProbeData *p)
 
static MatroskaTrackmatroska_find_track_by_num (MatroskaDemuxContext *matroska, uint64_t num)
 
static int matroska_decode_buffer (uint8_t **buf, int *buf_size, MatroskaTrack *track)
 
static void matroska_convert_tag (AVFormatContext *s, EbmlList *list, AVDictionary **metadata, char *prefix)
 
static void matroska_convert_tags (AVFormatContext *s)
 
static int matroska_parse_seekhead_entry (MatroskaDemuxContext *matroska, int64_t pos)
 
static void matroska_execute_seekhead (MatroskaDemuxContext *matroska)
 
static void matroska_add_index_entries (MatroskaDemuxContext *matroska)
 
static void matroska_parse_cues (MatroskaDemuxContext *matroska)
 
static int matroska_parse_content_encodings (MatroskaTrackEncoding *encodings, unsigned nb_encodings, MatroskaTrack *track, char **key_id_base64, void *logctx)
 
static int matroska_aac_profile (char *codec_id)
 
static int matroska_aac_sri (int samplerate)
 
static void matroska_metadata_creation_time (AVDictionary **metadata, int64_t date_utc)
 
static int matroska_parse_flac (AVFormatContext *s, MatroskaTrack *track, int *offset)
 
static int mkv_field_order (const MatroskaDemuxContext *matroska, uint64_t field_order)
 
static void mkv_stereo_mode_display_mul (int stereo_mode, int *h_width, int *h_height)
 
static int mkv_stereo3d_conv (AVStream *st, MatroskaVideoStereoModeType stereo_mode)
 
static int mkv_parse_video_color (AVStream *st, const MatroskaTrack *track)
 
static int mkv_create_display_matrix (AVStream *st, const MatroskaTrackVideoProjection *proj, void *logctx)
 
static int mkv_parse_video_projection (AVStream *st, const MatroskaTrack *track, void *logctx)
 
static int mkv_parse_dvcc_dvvc (AVFormatContext *s, AVStream *st, const MatroskaTrack *track, EbmlBin *bin)
 
static int mkv_parse_hvce (AVFormatContext *s, AVStream *st, EbmlBin *bin)
 
static int mkv_parse_block_addition_mappings (AVFormatContext *s, AVStream *st, MatroskaTrack *track)
 
static int get_qt_codec (MatroskaTrack *track, uint32_t *fourcc, enum AVCodecID *codec_id)
 
static int mka_parse_audio_codec (MatroskaTrack *track, AVCodecParameters *par, const MatroskaDemuxContext *matroska, AVFormatContext *s, int *extradata_offset)
 
static int mka_parse_audio (MatroskaTrack *track, AVStream *st, AVCodecParameters *par, const MatroskaDemuxContext *matroska, AVFormatContext *s, int *extradata_offset)
 
static int mkv_parse_video_codec (MatroskaTrack *track, AVCodecParameters *par, const MatroskaDemuxContext *matroska, int *extradata_offset)
 
static int mkv_parse_video (MatroskaTrack *track, AVStream *st, AVCodecParameters *par, const MatroskaDemuxContext *matroska, int *extradata_offset)
 
static int mkv_parse_subtitle_codec (MatroskaTrack *track, AVStream *st, AVCodecParameters *par, const MatroskaDemuxContext *matroska)
 
static int matroska_parse_tracks (AVFormatContext *s)
 
static int matroska_parse_dovi_streams (AVFormatContext *s)
 
static int matroska_read_header (AVFormatContext *s)
 
static int matroska_deliver_packet (MatroskaDemuxContext *matroska, AVPacket *pkt)
 
static void matroska_clear_queue (MatroskaDemuxContext *matroska)
 
static int matroska_parse_laces (MatroskaDemuxContext *matroska, uint8_t **buf, int size, int type, AVIOContext *pb, uint32_t lace_size[256], int *laces)
 
static int matroska_parse_rm_audio (MatroskaDemuxContext *matroska, MatroskaTrack *track, AVStream *st, uint8_t *data, int size, uint64_t timecode, int64_t pos)
 
static int matroska_parse_wavpack (MatroskaTrack *track, uint8_t **data, int *size)
 
static int matroska_parse_prores (MatroskaTrack *track, uint8_t **data, int *size)
 
static int matroska_parse_webvtt (MatroskaDemuxContext *matroska, MatroskaTrack *track, AVStream *st, uint8_t *data, int data_len, uint64_t timecode, uint64_t duration, int64_t pos)
 
static int matroska_parse_block_additional (MatroskaDemuxContext *matroska, MatroskaTrack *track, AVPacket *pkt, const uint8_t *data, int size, uint64_t id)
 
static int matroska_parse_frame (MatroskaDemuxContext *matroska, MatroskaTrack *track, AVStream *st, AVBufferRef *buf, uint8_t *data, int pkt_size, uint64_t timecode, uint64_t lace_duration, int64_t pos, int is_keyframe, MatroskaBlockMore *blockmore, int nb_blockmore, int64_t discard_padding)
 
static int matroska_parse_block (MatroskaDemuxContext *matroska, AVBufferRef *buf, uint8_t *data, int size, int64_t pos, uint64_t cluster_time, uint64_t block_duration, int is_keyframe, MatroskaBlockMore *blockmore, int nb_blockmore, int64_t cluster_pos, int64_t discard_padding)
 
static int matroska_parse_cluster (MatroskaDemuxContext *matroska)
 
static int matroska_read_packet (AVFormatContext *s, AVPacket *pkt)
 
static int matroska_read_seek (AVFormatContext *s, int stream_index, int64_t timestamp, int flags)
 
static int matroska_read_close (AVFormatContext *s)
 

Variables

static EbmlSyntax ebml_syntax [3]
 
static EbmlSyntax matroska_segment [9]
 
static EbmlSyntax matroska_track_video_color [15]
 
static EbmlSyntax matroska_track_video [19]
 
static EbmlSyntax matroska_track [33]
 
static EbmlSyntax matroska_track_encoding [6]
 
static EbmlSyntax matroska_track_encodings [2]
 
static EbmlSyntax matroska_track_combine_planes [2]
 
static EbmlSyntax matroska_track_operation [2]
 
static EbmlSyntax matroska_block_addition_mapping [5]
 
static EbmlSyntax matroska_tracks [2]
 
static EbmlSyntax matroska_attachments [2]
 
static EbmlSyntax matroska_chapter_entry [9]
 
static EbmlSyntax matroska_chapter [6]
 
static EbmlSyntax matroska_chapters [2]
 
static EbmlSyntax matroska_index_entry [3]
 
static EbmlSyntax matroska_index [2]
 
static EbmlSyntax matroska_tag [3]
 
static EbmlSyntax matroska_tags [2]
 
static EbmlSyntax matroska_seekhead [2]
 
static EbmlSyntax matroska_blockadditions [2]
 
static EbmlSyntax matroska_blockgroup [8]
 
static EbmlSyntax matroska_cluster_parsing [8]
 
static EbmlSyntax ebml_header []
 
static EbmlSyntax matroska_info []
 
static EbmlSyntax matroska_mastering_meta []
 
static EbmlSyntax matroska_track_video_projection []
 
static EbmlSyntax matroska_track_audio []
 
static EbmlSyntax matroska_track_encoding_compression []
 
static EbmlSyntax matroska_track_encoding_encryption []
 
static EbmlSyntax matroska_track_plane []
 
static EbmlSyntax matroska_attachment []
 
static EbmlSyntax matroska_chapter_display []
 
static EbmlSyntax matroska_index_pos []
 
static EbmlSyntax matroska_simpletag []
 
static EbmlSyntax matroska_tagtargets []
 
static EbmlSyntax matroska_seekhead_entry []
 
static EbmlSyntax matroska_segments []
 
static EbmlSyntax matroska_blockmore []
 
static EbmlSyntax matroska_cluster_enter []
 
static const CodecMime mkv_image_mime_tags []
 
static const CodecMime mkv_mime_tags []
 
static const char *const matroska_video_stereo_plane [MATROSKA_VIDEO_STEREO_PLANE_COUNT]
 
static const char *const matroska_doctypes [] = { "matroska", "webm" }
 
const FFInputFormat ff_matroska_demuxer
 

Detailed Description

Matroska file demuxer.

Author
Ronald Bultje rbult.nosp@m.je@r.nosp@m.onald.nosp@m..bit.nosp@m.freak.nosp@m..net
with a little help from Moritz Bunkus morit.nosp@m.z@bu.nosp@m.nkus..nosp@m.org
totally reworked by Aurelien Jacobs aurel.nosp@m.@gnu.nosp@m.age.o.nosp@m.rg
See also
specs available on the Matroska project page: http://www.matroska.org/

Definition in file matroskadec.c.

Macro Definition Documentation

◆ EBML_UNKNOWN_LENGTH

#define EBML_UNKNOWN_LENGTH   UINT64_MAX /* EBML unknown length, in uint64_t */

Definition at line 83 of file matroskadec.c.

Referenced by ebml_read_length().

◆ NEEDS_CHECKING

#define NEEDS_CHECKING
Value:
2 /* Indicates that some error checks
* still need to be performed */

Definition at line 84 of file matroskadec.c.

◆ LEVEL_ENDED

#define LEVEL_ENDED
Value:
3 /* return value of ebml_parse when the
* syntax level used for parsing ended. */

Definition at line 85 of file matroskadec.c.

◆ SKIP_THRESHOLD

#define SKIP_THRESHOLD
Value:
1024 * 1024 /* In non-seekable mode, if more than SKIP_THRESHOLD
* of unknown, potentially damaged data is encountered,
* it is considered an error. */

Definition at line 86 of file matroskadec.c.

◆ UNKNOWN_EQUIV

#define UNKNOWN_EQUIV
Value:
50 * 1024 /* An unknown element is considered equivalent
* to this many bytes of unknown data for the
* SKIP_THRESHOLD check. */

Definition at line 87 of file matroskadec.c.

◆ CHILD_OF

#define CHILD_OF ( parent)
Value:
{ .def = { .n = parent } }

Definition at line 438 of file matroskadec.c.

◆ STEREO_MODE_CONV

#define STEREO_MODE_CONV ( STEREOMODETYPE,
STEREO3DTYPE,
FLAGS,
WDIV,
HDIV,
WEBM )
Value:
[(STEREOMODETYPE)] = { .type = (STEREO3DTYPE), .flags = (FLAGS) },
#define flags(name, subs,...)
Definition cbs_h264.c:74
#define FLAGS
Definition cmdutils.c:598

◆ NOTHING

#define NOTHING ( STEREOMODETYPE,
WDIV,
HDIV,
WEBM )

◆ AAC_MAX_EXTRADATA_SIZE

#define AAC_MAX_EXTRADATA_SIZE   5

Definition at line 2622 of file matroskadec.c.

◆ TTA_EXTRADATA_SIZE

#define TTA_EXTRADATA_SIZE   22

Definition at line 2623 of file matroskadec.c.

◆ WAVPACK_EXTRADATA_SIZE

#define WAVPACK_EXTRADATA_SIZE   2

Definition at line 2624 of file matroskadec.c.

Enumeration Type Documentation

◆ EbmlType

enum EbmlType
Enumerator
EBML_NONE 
EBML_UINT 
EBML_SINT 
EBML_FLOAT 
EBML_STR 
EBML_UTF8 
EBML_BIN 
EBML_NEST 
EBML_LEVEL1 
EBML_STOP 
EBML_TYPE_COUNT 

Definition at line 89 of file matroskadec.c.

◆ anonymous enum

anonymous enum
Enumerator
SKIP_TRACK 

Definition at line 2618 of file matroskadec.c.

Function Documentation

◆ matroska_reset_status()

static int matroska_reset_status ( MatroskaDemuxContext * matroska,
uint32_t id,
int64_t position )
static

Definition at line 840 of file matroskadec.c.

◆ matroska_resync()

static int matroska_resync ( MatroskaDemuxContext * matroska,
int64_t last_pos )
static

Definition at line 861 of file matroskadec.c.

◆ ebml_read_num()

static int ebml_read_num ( MatroskaDemuxContext * matroska,
AVIOContext * pb,
int max_size,
uint64_t * number,
int eof_forbidden )
static

Definition at line 908 of file matroskadec.c.

Referenced by ebml_read_length().

◆ ebml_read_length()

static int ebml_read_length ( MatroskaDemuxContext * matroska,
AVIOContext * pb,
uint64_t * number )
static

Read a EBML length value.

This needs special handling for the "unknown length" case which has multiple encodings.

Definition at line 973 of file matroskadec.c.

◆ ebml_read_uint()

static int ebml_read_uint ( AVIOContext * pb,
int size,
uint64_t default_value,
uint64_t * num )
static

Definition at line 986 of file matroskadec.c.

◆ ebml_read_sint()

static int ebml_read_sint ( AVIOContext * pb,
int size,
int64_t default_value,
int64_t * num )
static

Definition at line 1007 of file matroskadec.c.

◆ ebml_read_float()

static int ebml_read_float ( AVIOContext * pb,
int size,
double default_value,
double * num )
static

Definition at line 1030 of file matroskadec.c.

◆ ebml_read_ascii()

static int ebml_read_ascii ( AVIOContext * pb,
int size,
const char * default_value,
char ** str )
static

Definition at line 1050 of file matroskadec.c.

◆ ebml_read_binary()

static int ebml_read_binary ( AVIOContext * pb,
int length,
int64_t pos,
EbmlBin * bin )
static

Definition at line 1081 of file matroskadec.c.

◆ ebml_read_master()

static int ebml_read_master ( MatroskaDemuxContext * matroska,
uint64_t length,
int64_t pos )
static

Definition at line 1109 of file matroskadec.c.

◆ matroska_ebmlnum_sint()

static int matroska_ebmlnum_sint ( MatroskaDemuxContext * matroska,
AVIOContext * pb,
int64_t * num )
static

Definition at line 1131 of file matroskadec.c.

◆ ebml_parse()

static int ebml_parse ( MatroskaDemuxContext * matroska,
EbmlSyntax * syntax,
void * data )
static

Definition at line 1253 of file matroskadec.c.

◆ ebml_parse_id()

static EbmlSyntax * ebml_parse_id ( EbmlSyntax * syntax,
uint32_t id )
static

Definition at line 1150 of file matroskadec.c.

◆ ebml_parse_nest()

static int ebml_parse_nest ( MatroskaDemuxContext * matroska,
EbmlSyntax * syntax,
void * data )
static

Definition at line 1163 of file matroskadec.c.

◆ is_ebml_id_valid()

static int is_ebml_id_valid ( uint32_t id)
static

Definition at line 1206 of file matroskadec.c.

◆ matroska_find_level1_elem()

static MatroskaLevel1Element * matroska_find_level1_elem ( MatroskaDemuxContext * matroska,
uint32_t id,
int64_t pos )
static

Definition at line 1219 of file matroskadec.c.

◆ ebml_free()

static void ebml_free ( EbmlSyntax * syntax,
void * data )
static

Definition at line 1581 of file matroskadec.c.

◆ matroska_probe()

static int matroska_probe ( const AVProbeData * p)
static

Definition at line 1617 of file matroskadec.c.

◆ matroska_find_track_by_num()

static MatroskaTrack * matroska_find_track_by_num ( MatroskaDemuxContext * matroska,
uint64_t num )
static

Definition at line 1664 of file matroskadec.c.

◆ matroska_decode_buffer()

static int matroska_decode_buffer ( uint8_t ** buf,
int * buf_size,
MatroskaTrack * track )
static

Definition at line 1678 of file matroskadec.c.

◆ matroska_convert_tag()

static void matroska_convert_tag ( AVFormatContext * s,
EbmlList * list,
AVDictionary ** metadata,
char * prefix )
static

Definition at line 1816 of file matroskadec.c.

◆ matroska_convert_tags()

static void matroska_convert_tags ( AVFormatContext * s)
static

Definition at line 1851 of file matroskadec.c.

◆ matroska_parse_seekhead_entry()

static int matroska_parse_seekhead_entry ( MatroskaDemuxContext * matroska,
int64_t pos )
static

Definition at line 1916 of file matroskadec.c.

◆ matroska_execute_seekhead()

static void matroska_execute_seekhead ( MatroskaDemuxContext * matroska)
static

Definition at line 1954 of file matroskadec.c.

◆ matroska_add_index_entries()

static void matroska_add_index_entries ( MatroskaDemuxContext * matroska)
static

Definition at line 1992 of file matroskadec.c.

◆ matroska_parse_cues()

static void matroska_parse_cues ( MatroskaDemuxContext * matroska)
static

Definition at line 2025 of file matroskadec.c.

◆ matroska_parse_content_encodings()

static int matroska_parse_content_encodings ( MatroskaTrackEncoding * encodings,
unsigned nb_encodings,
MatroskaTrack * track,
char ** key_id_base64,
void * logctx )
static

Definition at line 2044 of file matroskadec.c.

◆ matroska_aac_profile()

static int matroska_aac_profile ( char * codec_id)
static

Definition at line 2118 of file matroskadec.c.

◆ matroska_aac_sri()

static int matroska_aac_sri ( int samplerate)
static

Definition at line 2129 of file matroskadec.c.

◆ matroska_metadata_creation_time()

static void matroska_metadata_creation_time ( AVDictionary ** metadata,
int64_t date_utc )
static

Definition at line 2139 of file matroskadec.c.

◆ matroska_parse_flac()

static int matroska_parse_flac ( AVFormatContext * s,
MatroskaTrack * track,
int * offset )
static

Definition at line 2145 of file matroskadec.c.

◆ mkv_field_order()

static int mkv_field_order ( const MatroskaDemuxContext * matroska,
uint64_t field_order )
static

Definition at line 2200 of file matroskadec.c.

◆ mkv_stereo_mode_display_mul()

static void mkv_stereo_mode_display_mul ( int stereo_mode,
int * h_width,
int * h_height )
static

Definition at line 2227 of file matroskadec.c.

◆ mkv_stereo3d_conv()

static int mkv_stereo3d_conv ( AVStream * st,
MatroskaVideoStereoModeType stereo_mode )
static

Definition at line 2252 of file matroskadec.c.

◆ mkv_parse_video_color()

static int mkv_parse_video_color ( AVStream * st,
const MatroskaTrack * track )
static

Definition at line 2282 of file matroskadec.c.

◆ mkv_create_display_matrix()

static int mkv_create_display_matrix ( AVStream * st,
const MatroskaTrackVideoProjection * proj,
void * logctx )
static

Definition at line 2365 of file matroskadec.c.

◆ mkv_parse_video_projection()

static int mkv_parse_video_projection ( AVStream * st,
const MatroskaTrack * track,
void * logctx )
static

Definition at line 2407 of file matroskadec.c.

◆ mkv_parse_dvcc_dvvc()

static int mkv_parse_dvcc_dvvc ( AVFormatContext * s,
AVStream * st,
const MatroskaTrack * track,
EbmlBin * bin )
static

Definition at line 2501 of file matroskadec.c.

◆ mkv_parse_hvce()

static int mkv_parse_hvce ( AVFormatContext * s,
AVStream * st,
EbmlBin * bin )
static

Definition at line 2507 of file matroskadec.c.

◆ mkv_parse_block_addition_mappings()

static int mkv_parse_block_addition_mappings ( AVFormatContext * s,
AVStream * st,
MatroskaTrack * track )
static

Definition at line 2527 of file matroskadec.c.

◆ get_qt_codec()

static int get_qt_codec ( MatroskaTrack * track,
uint32_t * fourcc,
enum AVCodecID * codec_id )
static

Definition at line 2587 of file matroskadec.c.

◆ mka_parse_audio_codec()

static int mka_parse_audio_codec ( MatroskaTrack * track,
AVCodecParameters * par,
const MatroskaDemuxContext * matroska,
AVFormatContext * s,
int * extradata_offset )
static

Definition at line 2626 of file matroskadec.c.

◆ mka_parse_audio()

static int mka_parse_audio ( MatroskaTrack * track,
AVStream * st,
AVCodecParameters * par,
const MatroskaDemuxContext * matroska,
AVFormatContext * s,
int * extradata_offset )
static

Definition at line 2860 of file matroskadec.c.

◆ mkv_parse_video_codec()

static int mkv_parse_video_codec ( MatroskaTrack * track,
AVCodecParameters * par,
const MatroskaDemuxContext * matroska,
int * extradata_offset )
static

Definition at line 2907 of file matroskadec.c.

◆ mkv_parse_video()

static int mkv_parse_video ( MatroskaTrack * track,
AVStream * st,
AVCodecParameters * par,
const MatroskaDemuxContext * matroska,
int * extradata_offset )
static

Definition at line 2980 of file matroskadec.c.

◆ mkv_parse_subtitle_codec()

static int mkv_parse_subtitle_codec ( MatroskaTrack * track,
AVStream * st,
AVCodecParameters * par,
const MatroskaDemuxContext * matroska )
static

Definition at line 3097 of file matroskadec.c.

◆ matroska_parse_tracks()

static int matroska_parse_tracks ( AVFormatContext * s)
static

Definition at line 3148 of file matroskadec.c.

◆ matroska_parse_dovi_streams()

static int matroska_parse_dovi_streams ( AVFormatContext * s)
static

Definition at line 3345 of file matroskadec.c.

◆ matroska_read_header()

static int matroska_read_header ( AVFormatContext * s)
static

Definition at line 3414 of file matroskadec.c.

◆ matroska_deliver_packet()

static int matroska_deliver_packet ( MatroskaDemuxContext * matroska,
AVPacket * pkt )
static

Definition at line 3574 of file matroskadec.c.

◆ matroska_clear_queue()

static void matroska_clear_queue ( MatroskaDemuxContext * matroska)
static

Definition at line 3601 of file matroskadec.c.

◆ matroska_parse_laces()

static int matroska_parse_laces ( MatroskaDemuxContext * matroska,
uint8_t ** buf,
int size,
int type,
AVIOContext * pb,
uint32_t lace_size[256],
int * laces )
static

Definition at line 3606 of file matroskadec.c.

◆ matroska_parse_rm_audio()

static int matroska_parse_rm_audio ( MatroskaDemuxContext * matroska,
MatroskaTrack * track,
AVStream * st,
uint8_t * data,
int size,
uint64_t timecode,
int64_t pos )
static

Definition at line 3702 of file matroskadec.c.

◆ matroska_parse_wavpack()

static int matroska_parse_wavpack ( MatroskaTrack * track,
uint8_t ** data,
int * size )
static

Definition at line 3780 of file matroskadec.c.

◆ matroska_parse_prores()

static int matroska_parse_prores ( MatroskaTrack * track,
uint8_t ** data,
int * size )
static

Definition at line 3864 of file matroskadec.c.

◆ matroska_parse_webvtt()

static int matroska_parse_webvtt ( MatroskaDemuxContext * matroska,
MatroskaTrack * track,
AVStream * st,
uint8_t * data,
int data_len,
uint64_t timecode,
uint64_t duration,
int64_t pos )
static

Definition at line 3885 of file matroskadec.c.

◆ matroska_parse_block_additional()

static int matroska_parse_block_additional ( MatroskaDemuxContext * matroska,
MatroskaTrack * track,
AVPacket * pkt,
const uint8_t * data,
int size,
uint64_t id )
static

Definition at line 3997 of file matroskadec.c.

◆ matroska_parse_frame()

static int matroska_parse_frame ( MatroskaDemuxContext * matroska,
MatroskaTrack * track,
AVStream * st,
AVBufferRef * buf,
uint8_t * data,
int pkt_size,
uint64_t timecode,
uint64_t lace_duration,
int64_t pos,
int is_keyframe,
MatroskaBlockMore * blockmore,
int nb_blockmore,
int64_t discard_padding )
static

Definition at line 4146 of file matroskadec.c.

◆ matroska_parse_block()

static int matroska_parse_block ( MatroskaDemuxContext * matroska,
AVBufferRef * buf,
uint8_t * data,
int size,
int64_t pos,
uint64_t cluster_time,
uint64_t block_duration,
int is_keyframe,
MatroskaBlockMore * blockmore,
int nb_blockmore,
int64_t cluster_pos,
int64_t discard_padding )
static

Definition at line 4267 of file matroskadec.c.

◆ matroska_parse_cluster()

static int matroska_parse_cluster ( MatroskaDemuxContext * matroska)
static

Definition at line 4421 of file matroskadec.c.

◆ matroska_read_packet()

static int matroska_read_packet ( AVFormatContext * s,
AVPacket * pkt )
static

Definition at line 4475 of file matroskadec.c.

◆ matroska_read_seek()

static int matroska_read_seek ( AVFormatContext * s,
int stream_index,
int64_t timestamp,
int flags )
static

Definition at line 4495 of file matroskadec.c.

◆ matroska_read_close()

static int matroska_read_close ( AVFormatContext * s)
static

Definition at line 4563 of file matroskadec.c.

Variable Documentation

◆ ebml_syntax

static EbmlSyntax ebml_syntax
static
Initial value:
= {
{ EBML_ID_HEADER, EBML_NEST, 0, 0, 0, { .n = ebml_header } },
{ 0 }
}
#define EBML_ID_HEADER
Definition matroska.h:32
#define MATROSKA_ID_SEGMENT
Definition matroska.h:52
@ EBML_NEST
Definition matroskadec.c:97
@ EBML_STOP
Definition matroskadec.c:99
static EbmlSyntax ebml_header[]

Definition at line 444 of file matroskadec.c.

◆ matroska_segment

static EbmlSyntax matroska_segment
static
Initial value:
= {
{ MATROSKA_ID_INFO, EBML_LEVEL1, 0, 0, 0, { .n = matroska_info } },
{ MATROSKA_ID_CUES, EBML_LEVEL1, 0, 0, 0, { .n = matroska_index } },
{ MATROSKA_ID_TAGS, EBML_LEVEL1, 0, 0, 0, { .n = matroska_tags } },
{ 0 }
}
#define MATROSKA_ID_CHAPTERS
Definition matroska.h:62
#define MATROSKA_ID_ATTACHMENTS
Definition matroska.h:60
#define MATROSKA_ID_SEEKHEAD
Definition matroska.h:59
#define MATROSKA_ID_INFO
Definition matroska.h:55
#define MATROSKA_ID_TAGS
Definition matroska.h:58
#define MATROSKA_ID_CLUSTER
Definition matroska.h:61
#define MATROSKA_ID_TRACKS
Definition matroska.h:56
#define MATROSKA_ID_CUES
Definition matroska.h:57
static EbmlSyntax matroska_attachments[2]
@ EBML_LEVEL1
Definition matroskadec.c:98
static EbmlSyntax matroska_chapters[2]
static EbmlSyntax matroska_info[]
static EbmlSyntax matroska_index[2]
static EbmlSyntax matroska_tags[2]
static EbmlSyntax matroska_seekhead[2]
static EbmlSyntax matroska_tracks[2]

Definition at line 444 of file matroskadec.c.

◆ matroska_track_video_color

static EbmlSyntax matroska_track_video_color
static
Initial value:
= {
{ MATROSKA_ID_VIDEOCOLORBITSPERCHANNEL, EBML_UINT, 0, 0, 0x42 , { .u = 0 } },
}
#define MATROSKA_ID_VIDEOCOLORCBSUBVERT
Definition matroska.h:139
#define MATROSKA_ID_VIDEOCOLORMAXFALL
Definition matroska.h:147
#define MATROSKA_ID_VIDEOCOLORCBSUBHORZ
Definition matroska.h:138
#define MATROSKA_ID_VIDEOCOLORTRANSFERCHARACTERISTICS
Definition matroska.h:143
#define MATROSKA_ID_VIDEOCOLORCHROMASITINGHORZ
Definition matroska.h:140
@ MATROSKA_COLOUR_CHROMASITINGHORZ_UNDETERMINED
Definition matroska.h:340
#define MATROSKA_ID_VIDEOCOLORCHROMASITINGVERT
Definition matroska.h:141
#define MATROSKA_ID_VIDEOCOLORMASTERINGMETA
Definition matroska.h:149
#define MATROSKA_ID_VIDEOCOLORCHROMASUBHORZ
Definition matroska.h:136
#define MATROSKA_ID_VIDEOCOLORBITSPERCHANNEL
Definition matroska.h:135
#define MATROSKA_ID_VIDEOCOLORCHROMASUBVERT
Definition matroska.h:137
#define MATROSKA_ID_VIDEOCOLORRANGE
Definition matroska.h:142
#define MATROSKA_ID_VIDEOCOLORMAXCLL
Definition matroska.h:146
#define MATROSKA_ID_VIDEOCOLORPRIMARIES
Definition matroska.h:145
#define MATROSKA_ID_VIDEOCOLORMATRIXCOEFF
Definition matroska.h:134
@ MATROSKA_COLOUR_CHROMASITINGVERT_UNDETERMINED
Definition matroska.h:347
@ EBML_UINT
Definition matroskadec.c:91
static EbmlSyntax matroska_mastering_meta[]
@ AVCOL_RANGE_UNSPECIFIED
Definition pixfmt.h:749
@ AVCOL_PRI_UNSPECIFIED
Definition pixfmt.h:645
@ AVCOL_TRC_UNSPECIFIED
Definition pixfmt.h:675
@ AVCOL_SPC_UNSPECIFIED
Definition pixfmt.h:709

Definition at line 444 of file matroskadec.c.

◆ matroska_track_video

static EbmlSyntax matroska_track_video
static
Initial value:
= {
{ MATROSKA_ID_VIDEODISPLAYWIDTH, EBML_UINT, 0, 0, 0x42 , { .u=-1 } },
{ MATROSKA_ID_VIDEODISPLAYHEIGHT, EBML_UINT, 0, 0, 0x42 , { .u=-1 } },
{ MATROSKA_ID_VIDEOALPHAMODE, EBML_UINT, 0, 0, 0x42 , { .u = 0 } },
{ MATROSKA_ID_VIDEOCOLOR, EBML_NEST, 0, sizeof(MatroskaTrackVideoColor), 0x42 , { .n = matroska_track_video_color } },
{ MATROSKA_ID_VIDEOPIXELCROPB, EBML_UINT, 0, 0, 0x42 , {.u = 0 } },
{ MATROSKA_ID_VIDEOPIXELCROPT, EBML_UINT, 0, 0, 0x42 , {.u = 0 } },
{ MATROSKA_ID_VIDEOPIXELCROPL, EBML_UINT, 0, 0, 0x42 , {.u = 0 } },
{ MATROSKA_ID_VIDEOPIXELCROPR, EBML_UINT, 0, 0, 0x42 , {.u = 0 } },
}
@ MATROSKA_VIDEO_STEREOMODE_TYPE_NB
Definition matroska.h:328
#define MATROSKA_ID_VIDEOSTEREOMODE
Definition matroska.h:128
#define MATROSKA_ID_VIDEOPIXELWIDTH
Definition matroska.h:119
#define MATROSKA_ID_VIDEOFIELDORDER
Definition matroska.h:127
#define MATROSKA_ID_VIDEOALPHAMODE
Definition matroska.h:129
#define MATROSKA_ID_VIDEOCOLORSPACE
Definition matroska.h:131
#define MATROSKA_ID_VIDEODISPLAYUNIT
Definition matroska.h:125
#define MATROSKA_ID_VIDEOPIXELHEIGHT
Definition matroska.h:120
#define MATROSKA_ID_VIDEOPIXELCROPL
Definition matroska.h:123
@ MATROSKA_VIDEO_INTERLACE_FLAG_UNDETERMINED
Definition matroska.h:298
@ MATROSKA_VIDEO_FIELDORDER_UNDETERMINED
Definition matroska.h:306
#define MATROSKA_ID_VIDEODISPLAYHEIGHT
Definition matroska.h:118
#define MATROSKA_ID_VIDEOFRAMERATE
Definition matroska.h:116
#define MATROSKA_ID_VIDEOFLAGINTERLACED
Definition matroska.h:126
#define MATROSKA_ID_VIDEOASPECTRATIO
Definition matroska.h:130
#define MATROSKA_ID_VIDEOPIXELCROPB
Definition matroska.h:121
#define MATROSKA_ID_VIDEOCOLOR
Definition matroska.h:132
#define MATROSKA_ID_VIDEODISPLAYWIDTH
Definition matroska.h:117
#define MATROSKA_ID_VIDEOPROJECTION
Definition matroska.h:161
#define MATROSKA_ID_VIDEOPIXELCROPT
Definition matroska.h:122
@ MATROSKA_VIDEO_DISPLAYUNIT_PIXELS
Definition matroska.h:332
#define MATROSKA_ID_VIDEOPIXELCROPR
Definition matroska.h:124
@ EBML_FLOAT
Definition matroskadec.c:93
@ EBML_NONE
Definition matroskadec.c:90
@ EBML_BIN
Definition matroskadec.c:96
static EbmlSyntax matroska_track_video_projection[]
static EbmlSyntax matroska_track_video_color[15]

Definition at line 444 of file matroskadec.c.

◆ matroska_track

static EbmlSyntax matroska_track
static

Definition at line 445 of file matroskadec.c.

◆ matroska_track_encoding

static EbmlSyntax matroska_track_encoding
static
Initial value:
= {
{ MATROSKA_ID_ENCODINGSCOPE, EBML_UINT, 0, 0, 0x42 , { .u = 1 } },
{ MATROSKA_ID_ENCODINGTYPE, EBML_UINT, 0, 0, 0x42 , { .u = 0 } },
}
#define MATROSKA_ID_ENCODINGTYPE
Definition matroska.h:178
#define MATROSKA_ID_ENCODINGENCRYPTION
Definition matroska.h:183
#define MATROSKA_ID_ENCODINGCOMPRESSION
Definition matroska.h:179
#define MATROSKA_ID_ENCODINGORDER
Definition matroska.h:176
#define MATROSKA_ID_ENCODINGSCOPE
Definition matroska.h:177
static EbmlSyntax matroska_track_encoding_compression[]
static EbmlSyntax matroska_track_encoding_encryption[]

Definition at line 445 of file matroskadec.c.

◆ matroska_track_encodings

static EbmlSyntax matroska_track_encodings
static
Initial value:
= {
}
#define MATROSKA_ID_TRACKCONTENTENCODING
Definition matroska.h:110
static EbmlSyntax matroska_track_encoding[6]

Definition at line 445 of file matroskadec.c.

◆ matroska_track_combine_planes

static EbmlSyntax matroska_track_combine_planes
static
Initial value:
= {
}
#define MATROSKA_ID_TRACKPLANE
Definition matroska.h:84
static EbmlSyntax matroska_track_plane[]

Definition at line 446 of file matroskadec.c.

◆ matroska_track_operation

static EbmlSyntax matroska_track_operation
static
Initial value:
= {
}
#define MATROSKA_ID_TRACKCOMBINEPLANES
Definition matroska.h:83
static EbmlSyntax matroska_track_combine_planes[2]

Definition at line 446 of file matroskadec.c.

◆ matroska_block_addition_mapping

static EbmlSyntax matroska_block_addition_mapping
static
Initial value:
= {
}
@ MATROSKA_BLOCK_ADD_ID_TYPE_DEFAULT
Definition matroska.h:361
#define MATROSKA_ID_BLKADDIDEXTRADATA
Definition matroska.h:196
#define MATROSKA_ID_BLKADDIDVALUE
Definition matroska.h:193
#define MATROSKA_ID_BLKADDIDNAME
Definition matroska.h:194
#define MATROSKA_ID_BLKADDIDTYPE
Definition matroska.h:195
@ EBML_STR
Definition matroskadec.c:94

Definition at line 446 of file matroskadec.c.

◆ matroska_tracks

static EbmlSyntax matroska_tracks
static
Initial value:
= {
{ MATROSKA_ID_TRACKENTRY, EBML_NEST, 0, sizeof(MatroskaTrack), 0x42 , { .n = matroska_track } },
}
#define MATROSKA_ID_TRACKENTRY
Definition matroska.h:74
static EbmlSyntax matroska_track[33]

Definition at line 446 of file matroskadec.c.

◆ matroska_attachments

static EbmlSyntax matroska_attachments
static
Initial value:
= {
}
#define MATROSKA_ID_ATTACHEDFILE
Definition matroska.h:253
static EbmlSyntax matroska_attachment[]

Definition at line 447 of file matroskadec.c.

◆ matroska_chapter_entry

static EbmlSyntax matroska_chapter_entry
static
Initial value:
= {
}
#define AV_NOPTS_VALUE
Undefined timestamp value.
Definition avutil.h:247
#define MATROSKA_ID_CHAPTERFLAGENABLED
Definition matroska.h:275
#define MATROSKA_ID_CHAPTERATOM
Definition matroska.h:262
#define MATROSKA_ID_CHAPTERTIMESTART
Definition matroska.h:263
#define MATROSKA_ID_CHAPTERPHYSEQUIV
Definition matroska.h:276
#define MATROSKA_ID_CHAPTERFLAGHIDDEN
Definition matroska.h:274
#define MATROSKA_ID_CHAPTERTIMEEND
Definition matroska.h:264
#define MATROSKA_ID_CHAPTERUID
Definition matroska.h:273
#define MATROSKA_ID_CHAPTERDISPLAY
Definition matroska.h:265
static EbmlSyntax matroska_chapter_display[]

Definition at line 447 of file matroskadec.c.

◆ matroska_chapter

static EbmlSyntax matroska_chapter
static
Initial value:
= {
}
#define MATROSKA_ID_EDITIONFLAGORDERED
Definition matroska.h:272
#define MATROSKA_ID_EDITIONFLAGDEFAULT
Definition matroska.h:271
#define MATROSKA_ID_EDITIONUID
Definition matroska.h:269
#define MATROSKA_ID_EDITIONFLAGHIDDEN
Definition matroska.h:270
static EbmlSyntax matroska_chapter_entry[9]

Definition at line 447 of file matroskadec.c.

◆ matroska_chapters

static EbmlSyntax matroska_chapters
static
Initial value:
= {
}
#define MATROSKA_ID_EDITIONENTRY
Definition matroska.h:261
static EbmlSyntax matroska_chapter[6]

Definition at line 447 of file matroskadec.c.

◆ matroska_index_entry

static EbmlSyntax matroska_index_entry
static
Initial value:
= {
{ MATROSKA_ID_CUETIME, EBML_UINT, 0, 0, 0x42 },
}
#define MATROSKA_ID_CUETIME
Definition matroska.h:202
#define MATROSKA_ID_CUETRACKPOSITION
Definition matroska.h:203
static EbmlSyntax matroska_index_pos[]

Definition at line 448 of file matroskadec.c.

◆ matroska_index

static EbmlSyntax matroska_index
static
Initial value:
= {
}
#define MATROSKA_ID_POINTENTRY
Definition matroska.h:199
static EbmlSyntax matroska_index_entry[3]

Definition at line 448 of file matroskadec.c.

◆ matroska_tag

static EbmlSyntax matroska_tag
static
Initial value:
= {
}
#define MATROSKA_ID_TAGTARGETS
Definition matroska.h:220
#define MATROSKA_ID_SIMPLETAG
Definition matroska.h:214
static EbmlSyntax matroska_tagtargets[]
static EbmlSyntax matroska_simpletag[]

Definition at line 448 of file matroskadec.c.

◆ matroska_tags

static EbmlSyntax matroska_tags
static
Initial value:
= {
{ MATROSKA_ID_TAG, EBML_NEST, 0, sizeof(MatroskaTags), 0x42 , { .n = matroska_tag } },
}
#define MATROSKA_ID_TAG
Definition matroska.h:213
static EbmlSyntax matroska_tag[3]

Definition at line 448 of file matroskadec.c.

◆ matroska_seekhead

static EbmlSyntax matroska_seekhead
static
Initial value:
= {
}
#define MATROSKA_ID_SEEKENTRY
Definition matroska.h:228
static EbmlSyntax matroska_seekhead_entry[]

Definition at line 448 of file matroskadec.c.

◆ matroska_blockadditions

static EbmlSyntax matroska_blockadditions
static
Initial value:
= {
}
#define MATROSKA_ID_BLOCKMORE
Definition matroska.h:240
static EbmlSyntax matroska_blockmore[]

Definition at line 449 of file matroskadec.c.

◆ matroska_blockgroup

static EbmlSyntax matroska_blockgroup
static
Initial value:
= {
{ MATROSKA_ID_BLOCK, EBML_BIN, 0, 0, 0x42 },
{ 1, EBML_UINT, 0, 0, 0x42 , { .u = 1 } },
}
#define MATROSKA_ID_DISCARDPADDING
Definition matroska.h:250
#define MATROSKA_ID_BLOCKDURATION
Definition matroska.h:247
#define MATROSKA_ID_BLOCK
Definition matroska.h:246
#define MATROSKA_ID_BLOCKREFERENCE
Definition matroska.h:248
#define MATROSKA_ID_CODECSTATE
Definition matroska.h:249
#define MATROSKA_ID_BLOCKADDITIONS
Definition matroska.h:239
@ EBML_SINT
Definition matroskadec.c:92
static EbmlSyntax matroska_blockadditions[2]

Definition at line 449 of file matroskadec.c.

◆ matroska_cluster_parsing

static EbmlSyntax matroska_cluster_parsing
static
Initial value:
= {
}
#define MATROSKA_ID_CLUSTERPOSITION
Definition matroska.h:236
#define MATROSKA_ID_CLUSTERPREVSIZE
Definition matroska.h:237
#define MATROSKA_ID_SIMPLEBLOCK
Definition matroska.h:243
#define MATROSKA_ID_BLOCKGROUP
Definition matroska.h:238
#define MATROSKA_ID_CLUSTERTIMECODE
Definition matroska.h:235
static EbmlSyntax matroska_blockgroup[8]

Definition at line 449 of file matroskadec.c.

◆ ebml_header

EbmlSyntax ebml_header[]
static
Initial value:
= {
{ EBML_ID_EBMLREADVERSION, EBML_UINT, 0, 0, 0x42 , { .u = EBML_VERSION } },
{ EBML_ID_EBMLMAXSIZELENGTH, EBML_UINT, 0, 0, 0x42 , { .u = 8 } },
{ EBML_ID_EBMLMAXIDLENGTH, EBML_UINT, 0, 0, 0x42 , { .u = 4 } },
{ EBML_ID_DOCTYPE, EBML_STR, 0, 0, 0x42 , { .s = "(none)" } },
{ EBML_ID_DOCTYPEREADVERSION, EBML_UINT, 0, 0, 0x42 , { .u = 1 } },
}
#define EBML_ID_DOCTYPE
Definition matroska.h:39
#define EBML_ID_EBMLVERSION
Definition matroska.h:35
#define EBML_ID_DOCTYPEVERSION
Definition matroska.h:40
#define EBML_VERSION
Definition matroska.h:29
#define EBML_ID_DOCTYPEREADVERSION
Definition matroska.h:41
#define EBML_ID_EBMLMAXIDLENGTH
Definition matroska.h:37
#define EBML_ID_EBMLMAXSIZELENGTH
Definition matroska.h:38
#define EBML_ID_EBMLREADVERSION
Definition matroska.h:36

Definition at line 451 of file matroskadec.c.

◆ matroska_info

EbmlSyntax matroska_info[]
static
Initial value:
= {
{ MATROSKA_ID_TIMECODESCALE, EBML_UINT, 0, 0, 0x42 , { .u = 1000000 } },
{ MATROSKA_ID_DURATION, EBML_FLOAT, 0, 0, 0x42 },
{ MATROSKA_ID_TITLE, EBML_UTF8, 0, 0, 0x42 },
{ MATROSKA_ID_MUXINGAPP, EBML_UTF8, 0, 0, 0x42 },
{ MATROSKA_ID_DATEUTC, EBML_BIN, 0, 0, 0x42 },
}
#define MATROSKA_ID_TIMECODESCALE
Definition matroska.h:65
#define MATROSKA_ID_TITLE
Definition matroska.h:67
#define MATROSKA_ID_MUXINGAPP
Definition matroska.h:69
#define MATROSKA_ID_DATEUTC
Definition matroska.h:70
#define MATROSKA_ID_SEGMENTUID
Definition matroska.h:71
#define MATROSKA_ID_DURATION
Definition matroska.h:66
#define MATROSKA_ID_WRITINGAPP
Definition matroska.h:68
@ EBML_UTF8
Definition matroskadec.c:95

Definition at line 468 of file matroskadec.c.

◆ matroska_mastering_meta

EbmlSyntax matroska_mastering_meta[]
static
Initial value:
= {
}
#define MATROSKA_ID_VIDEOCOLOR_LUMINANCEMIN
Definition matroska.h:159
#define MATROSKA_ID_VIDEOCOLOR_GY
Definition matroska.h:153
#define MATROSKA_ID_VIDEOCOLOR_BY
Definition matroska.h:155
#define MATROSKA_ID_VIDEOCOLOR_RY
Definition matroska.h:151
#define MATROSKA_ID_VIDEOCOLOR_BX
Definition matroska.h:154
#define MATROSKA_ID_VIDEOCOLOR_LUMINANCEMAX
Definition matroska.h:158
#define MATROSKA_ID_VIDEOCOLOR_RX
Definition matroska.h:150
#define MATROSKA_ID_VIDEOCOLOR_WHITEY
Definition matroska.h:157
#define MATROSKA_ID_VIDEOCOLOR_WHITEX
Definition matroska.h:156
#define MATROSKA_ID_VIDEOCOLOR_GX
Definition matroska.h:152

Definition at line 479 of file matroskadec.c.

◆ matroska_track_video_projection

EbmlSyntax matroska_track_video_projection[]
static
Initial value:
= {
{ MATROSKA_ID_VIDEOPROJECTIONPOSEYAW, EBML_FLOAT, 0, 0, 0x42 , { .f = 0.0 } },
{ MATROSKA_ID_VIDEOPROJECTIONPOSEPITCH, EBML_FLOAT, 0, 0, 0x42 , { .f = 0.0 } },
{ MATROSKA_ID_VIDEOPROJECTIONPOSEROLL, EBML_FLOAT, 0, 0, 0x42 , { .f = 0.0 } },
}
#define MATROSKA_ID_VIDEOPROJECTIONPOSEROLL
Definition matroska.h:166
#define MATROSKA_ID_VIDEOPROJECTIONTYPE
Definition matroska.h:162
#define MATROSKA_ID_VIDEOPROJECTIONPRIVATE
Definition matroska.h:163
@ MATROSKA_VIDEO_PROJECTION_TYPE_RECTANGULAR
Definition matroska.h:354
#define MATROSKA_ID_VIDEOPROJECTIONPOSEYAW
Definition matroska.h:164
#define MATROSKA_ID_VIDEOPROJECTIONPOSEPITCH
Definition matroska.h:165

Definition at line 511 of file matroskadec.c.

◆ matroska_track_audio

EbmlSyntax matroska_track_audio[]
static
Initial value:
= {
{ MATROSKA_ID_AUDIOSAMPLINGFREQ, EBML_FLOAT, 0, 0, 0x42 , { .f = 8000.0 } },
{ MATROSKA_ID_AUDIOCHANNELS, EBML_UINT, 0, 0, 0x42 , { .u = 1 } },
}
#define MATROSKA_ID_AUDIOOUTSAMPLINGFREQ
Definition matroska.h:170
#define MATROSKA_ID_AUDIOCHANNELS
Definition matroska.h:173
#define MATROSKA_ID_AUDIOBITDEPTH
Definition matroska.h:172
#define MATROSKA_ID_AUDIOSAMPLINGFREQ
Definition matroska.h:169

Definition at line 542 of file matroskadec.c.

◆ matroska_track_encoding_compression

EbmlSyntax matroska_track_encoding_compression[]
static
Initial value:
= {
}
@ MATROSKA_TRACK_ENCODING_COMP_ZLIB
Definition matroska.h:291
#define MATROSKA_ID_ENCODINGCOMPALGO
Definition matroska.h:180
#define MATROSKA_ID_ENCODINGCOMPSETTINGS
Definition matroska.h:181

Definition at line 550 of file matroskadec.c.

◆ matroska_track_encoding_encryption

EbmlSyntax matroska_track_encoding_encryption[]
static
Initial value:
= {
{ MATROSKA_ID_ENCODINGENCALGO, EBML_UINT, 0, 0, 0x42 , {.u = 0} },
}
#define MATROSKA_ID_ENCODINGSIGALGO
Definition matroska.h:187
#define MATROSKA_ID_ENCODINGENCAESSETTINGS
Definition matroska.h:184
#define MATROSKA_ID_ENCODINGENCKEYID
Definition matroska.h:186
#define MATROSKA_ID_ENCODINGSIGKEYID
Definition matroska.h:189
#define MATROSKA_ID_ENCODINGSIGHASHALGO
Definition matroska.h:188
#define MATROSKA_ID_ENCODINGENCALGO
Definition matroska.h:185
#define MATROSKA_ID_ENCODINGSIGNATURE
Definition matroska.h:190

Definition at line 556 of file matroskadec.c.

◆ matroska_track_plane

EbmlSyntax matroska_track_plane[]
static
Initial value:
= {
}
#define MATROSKA_ID_TRACKPLANEUID
Definition matroska.h:85
#define MATROSKA_ID_TRACKPLANETYPE
Definition matroska.h:86

Definition at line 580 of file matroskadec.c.

◆ matroska_attachment

EbmlSyntax matroska_attachment[]
static
Initial value:
= {
{ MATROSKA_ID_FILEUID, EBML_UINT, 0, 0, 0x42 },
{ MATROSKA_ID_FILENAME, EBML_UTF8, 0, 0, 0x42 },
{ MATROSKA_ID_FILEDATA, EBML_BIN, 0, 0, 0x42 },
{ MATROSKA_ID_FILEDESC, EBML_UTF8, 0, 0, 0x42 },
}
#define MATROSKA_ID_FILEMIMETYPE
Definition matroska.h:256
#define MATROSKA_ID_FILEUID
Definition matroska.h:258
#define MATROSKA_ID_FILEDESC
Definition matroska.h:254
#define MATROSKA_ID_FILENAME
Definition matroska.h:255
#define MATROSKA_ID_FILEDATA
Definition matroska.h:257

Definition at line 645 of file matroskadec.c.

◆ matroska_chapter_display

EbmlSyntax matroska_chapter_display[]
static
Initial value:
= {
}
#define MATROSKA_ID_CHAPCOUNTRY
Definition matroska.h:268
#define MATROSKA_ID_CHAPSTRING
Definition matroska.h:266
#define MATROSKA_ID_CHAPLANG
Definition matroska.h:267

Definition at line 659 of file matroskadec.c.

◆ matroska_index_pos

EbmlSyntax matroska_index_pos[]
static
Initial value:
= {
{ MATROSKA_ID_CUETRACK, EBML_UINT, 0, 0, 0x42 },
}
#define MATROSKA_ID_CUERELATIVEPOSITION
Definition matroska.h:208
#define MATROSKA_ID_CUETRACK
Definition matroska.h:206
#define MATROSKA_ID_CUEDURATION
Definition matroska.h:209
#define MATROSKA_ID_CUEBLOCKNUMBER
Definition matroska.h:210
#define MATROSKA_ID_CUECLUSTERPOSITION
Definition matroska.h:207

Definition at line 692 of file matroskadec.c.

◆ matroska_simpletag

EbmlSyntax matroska_simpletag[]
static
Initial value:
= {
{ MATROSKA_ID_TAGNAME, EBML_UTF8, 0, 0, 0x42 },
{ MATROSKA_ID_TAGSTRING, EBML_UTF8, 0, 0, 0x42 },
{ MATROSKA_ID_TAGLANG, EBML_STR, 0, 0, 0x42 , { .s = "und" } },
{ MATROSKA_ID_SIMPLETAG, EBML_NEST, 0, sizeof(MatroskaTag), 0x42 , { .n = matroska_simpletag } },
}
#define MATROSKA_ID_TAGDEFAULT_BUG
Definition matroska.h:219
#define MATROSKA_ID_TAGLANG
Definition matroska.h:217
#define MATROSKA_ID_TAGSTRING
Definition matroska.h:216
#define MATROSKA_ID_TAGNAME
Definition matroska.h:215
#define MATROSKA_ID_TAGDEFAULT
Definition matroska.h:218

Definition at line 712 of file matroskadec.c.

◆ matroska_tagtargets

EbmlSyntax matroska_tagtargets[]
static
Initial value:
= {
{ MATROSKA_ID_TAGTARGETS_TYPEVALUE, EBML_UINT, 0, 0, 0x42 , { .u = 50 } },
{ MATROSKA_ID_TAGTARGETS_TRACKUID, EBML_UINT, 0, 0, 0x42 , { .u = 0 } },
{ MATROSKA_ID_TAGTARGETS_CHAPTERUID, EBML_UINT, 0, 0, 0x42 , { .u = 0 } },
{ MATROSKA_ID_TAGTARGETS_ATTACHUID, EBML_UINT, 0, 0, 0x42 , { .u = 0 } },
}
#define MATROSKA_ID_TAGTARGETS_TYPEVALUE
Definition matroska.h:222
#define MATROSKA_ID_TAGTARGETS_TYPE
Definition matroska.h:221
#define MATROSKA_ID_TAGTARGETS_CHAPTERUID
Definition matroska.h:224
#define MATROSKA_ID_TAGTARGETS_TRACKUID
Definition matroska.h:223
#define MATROSKA_ID_TAGTARGETS_ATTACHUID
Definition matroska.h:225

Definition at line 722 of file matroskadec.c.

◆ matroska_seekhead_entry

EbmlSyntax matroska_seekhead_entry[]
static
Initial value:
= {
{ MATROSKA_ID_SEEKID, EBML_UINT, 0, 0, 0x42 },
{ MATROSKA_ID_SEEKPOSITION, EBML_UINT, 0, 0, 0x42 , { .u = -1 } },
}
#define MATROSKA_ID_SEEKID
Definition matroska.h:231
#define MATROSKA_ID_SEEKPOSITION
Definition matroska.h:232

Definition at line 742 of file matroskadec.c.

◆ matroska_segments

EbmlSyntax matroska_segments[]
static
Initial value:
= {
{ 0 }
}
static EbmlSyntax matroska_segment[9]

Definition at line 765 of file matroskadec.c.

◆ matroska_blockmore

EbmlSyntax matroska_blockmore[]
static
Initial value:
= {
}
#define MATROSKA_ID_BLOCKADDITIONAL
Definition matroska.h:242
#define MATROSKA_ID_BLOCKADDID
Definition matroska.h:241
#define MATROSKA_BLOCK_ADD_ID_OPAQUE
Definition matroska.h:369

Definition at line 770 of file matroskadec.c.

◆ matroska_cluster_enter

EbmlSyntax matroska_cluster_enter[]
static
Initial value:
= {
{ 0 }
}
static EbmlSyntax matroska_cluster_parsing[8]

Definition at line 805 of file matroskadec.c.

◆ mkv_image_mime_tags

const CodecMime mkv_image_mime_tags[]
static
Initial value:
= {
{"image/gif" , AV_CODEC_ID_GIF},
{"image/jpeg" , AV_CODEC_ID_MJPEG},
{"image/png" , AV_CODEC_ID_PNG},
{"image/tiff" , AV_CODEC_ID_TIFF},
}
@ AV_CODEC_ID_PNG
Definition codec_id.h:111
@ AV_CODEC_ID_GIF
Definition codec_id.h:147
@ AV_CODEC_ID_NONE
Definition codec_id.h:48
@ AV_CODEC_ID_TIFF
Definition codec_id.h:146
@ AV_CODEC_ID_MJPEG
Definition codec_id.h:57

Definition at line 811 of file matroskadec.c.

◆ mkv_mime_tags

const CodecMime mkv_mime_tags[]
static
Initial value:
= {
{"application/x-truetype-font", AV_CODEC_ID_TTF},
{"application/x-font" , AV_CODEC_ID_TTF},
{"application/vnd.ms-opentype", AV_CODEC_ID_OTF},
{"binary" , AV_CODEC_ID_BIN_DATA},
}
@ AV_CODEC_ID_TTF
Definition codec_id.h:596
@ AV_CODEC_ID_BIN_DATA
Definition codec_id.h:607
@ AV_CODEC_ID_OTF
Definition codec_id.h:603

Definition at line 820 of file matroskadec.c.

◆ matroska_video_stereo_plane

const char* const matroska_video_stereo_plane[MATROSKA_VIDEO_STEREO_PLANE_COUNT]
static
Initial value:
= {
"left",
"right",
"background",
}

Definition at line 829 of file matroskadec.c.

◆ matroska_doctypes

const char* const matroska_doctypes[] = { "matroska", "webm" }
static

Definition at line 835 of file matroskadec.c.

Referenced by matroska_reset_status().

◆ ff_matroska_demuxer

const FFInputFormat ff_matroska_demuxer
Initial value:
= {
.p.name = "matroska,webm",
.p.long_name = NULL_IF_CONFIG_SMALL("Matroska / WebM"),
.p.extensions = "mkv,mk3d,mka,mks,webm",
.p.mime_type = "audio/webm,audio/x-matroska,video/webm,video/x-matroska",
.priv_data_size = sizeof(MatroskaDemuxContext),
.flags_internal = FF_INFMT_FLAG_INIT_CLEANUP,
}
static int read_packet(void *opaque, uint8_t *buf, int buf_size)
static int read_probe(const AVProbeData *p)
Definition cdg.c:30
#define FF_INFMT_FLAG_INIT_CLEANUP
For an FFInputFormat with this flag set read_close() needs to be called by the caller upon read_heade...
Definition demux.h:35
static int read_header(FFV1Context *f, RangeCoder *c)
Definition ffv1dec.c:578
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
Definition internal.h:88
static av_cold int read_close(AVFormatContext *ctx)
Definition libcdio.c:143
static int read_seek(AVFormatContext *ctx, int stream_index, int64_t timestamp, int flags)
Definition libcdio.c:151
static int matroska_read_close(AVFormatContext *s)
static int matroska_read_header(AVFormatContext *s)
static int matroska_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp, int flags)
static int matroska_probe(const AVProbeData *p)
static int matroska_read_packet(AVFormatContext *s, AVPacket *pkt)

Definition at line 5032 of file matroskadec.c.