Libav
Data Structures | Enumerations | Functions | Variables
matroskadec.c File Reference

Matroska file demuxer. More...

#include "config.h"
#include <inttypes.h>
#include <stdio.h>
#include "libavutil/avstring.h"
#include "libavutil/dict.h"
#include "libavutil/intfloat.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/lzo.h"
#include "libavutil/mathematics.h"
#include "libavcodec/bytestream.h"
#include "libavcodec/flac.h"
#include "libavcodec/mpeg4audio.h"
#include "avformat.h"
#include "avio_internal.h"
#include "internal.h"
#include "isom.h"
#include "matroska.h"
#include "oggdec.h"
#include "riff.h"
#include "rmsipr.h"

Go to the source code of this file.

Data Structures

struct  EbmlSyntax
 
struct  EbmlList
 
struct  EbmlBin
 
struct  Ebml
 
struct  MatroskaTrackCompression
 
struct  MatroskaTrackEncoding
 
struct  MatroskaTrackVideo
 
struct  MatroskaTrackAudio
 
struct  MatroskaTrack
 
struct  MatroskaAttachment
 
struct  MatroskaChapter
 
struct  MatroskaIndexPos
 
struct  MatroskaIndex
 
struct  MatroskaTag
 
struct  MatroskaTagTarget
 
struct  MatroskaTags
 
struct  MatroskaSeekhead
 
struct  MatroskaLevel
 
struct  MatroskaCluster
 
struct  MatroskaDemuxContext
 
struct  MatroskaBlock
 

Enumerations

enum  EbmlType {
  EBML_NONE, EBML_UINT, EBML_FLOAT, EBML_STR,
  EBML_UTF8, EBML_BIN, EBML_NEST, EBML_PASS,
  EBML_STOP, EBML_TYPE_COUNT
}
 

Functions

static int matroska_resync (MatroskaDemuxContext *matroska, int64_t last_pos)
 
static int ebml_level_end (MatroskaDemuxContext *matroska)
 
static int ebml_read_num (MatroskaDemuxContext *matroska, AVIOContext *pb, int max_size, uint64_t *number)
 
static int ebml_read_length (MatroskaDemuxContext *matroska, AVIOContext *pb, uint64_t *number)
 Read a EBML length value. More...
 
static int ebml_read_uint (AVIOContext *pb, int size, uint64_t *num)
 
static int ebml_read_float (AVIOContext *pb, int size, double *num)
 
static int ebml_read_ascii (AVIOContext *pb, int size, char **str)
 
static int ebml_read_binary (AVIOContext *pb, int length, EbmlBin *bin)
 
static int ebml_read_master (MatroskaDemuxContext *matroska, uint64_t length)
 
static int matroska_ebmlnum_uint (MatroskaDemuxContext *matroska, uint8_t *data, uint32_t size, uint64_t *num)
 
static int matroska_ebmlnum_sint (MatroskaDemuxContext *matroska, uint8_t *data, uint32_t size, int64_t *num)
 
static int ebml_parse_elem (MatroskaDemuxContext *matroska, EbmlSyntax *syntax, void *data)
 
static int ebml_parse_id (MatroskaDemuxContext *matroska, EbmlSyntax *syntax, uint32_t id, void *data)
 
static int ebml_parse (MatroskaDemuxContext *matroska, EbmlSyntax *syntax, void *data)
 
static int ebml_parse_nest (MatroskaDemuxContext *matroska, EbmlSyntax *syntax, void *data)
 
static void ebml_free (EbmlSyntax *syntax, void *data)
 
static int matroska_probe (AVProbeData *p)
 
static MatroskaTrackmatroska_find_track_by_num (MatroskaDemuxContext *matroska, int num)
 
static int matroska_decode_buffer (uint8_t **buf, int *buf_size, MatroskaTrack *track)
 
static void matroska_fix_ass_packet (MatroskaDemuxContext *matroska, AVPacket *pkt, uint64_t display_duration)
 
static int matroska_merge_packets (AVPacket *out, AVPacket *in)
 
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, int idx)
 
static void matroska_execute_seekhead (MatroskaDemuxContext *matroska)
 
static void matroska_parse_cues (MatroskaDemuxContext *matroska)
 
static int matroska_aac_profile (char *codec_id)
 
static int matroska_aac_sri (int samplerate)
 
static int matroska_parse_flac (AVFormatContext *s, MatroskaTrack *track, int *offset)
 
static int mkv_field_order (int64_t field_order)
 
static void mkv_stereo_mode_display_mul (int stereo_mode, int *h_width, int *h_height)
 
static int matroska_parse_tracks (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 *buf_size, int type, uint32_t **lace_buf, int *laces)
 
static int matroska_parse_rm_audio (MatroskaDemuxContext *matroska, MatroskaTrack *track, AVStream *st, uint8_t *data, int size, uint64_t timecode, uint64_t duration, int64_t pos)
 
static int matroska_parse_wavpack (MatroskaTrack *track, uint8_t *src, uint8_t **pdst, int *size)
 
static int matroska_parse_frame (MatroskaDemuxContext *matroska, MatroskaTrack *track, AVStream *st, uint8_t *data, int pkt_size, uint64_t timecode, uint64_t duration, int64_t pos, int is_keyframe)
 
static int matroska_parse_block (MatroskaDemuxContext *matroska, uint8_t *data, int size, int64_t pos, uint64_t cluster_time, uint64_t block_duration, int is_keyframe, int64_t cluster_pos)
 
static int matroska_parse_cluster_incremental (MatroskaDemuxContext *matroska)
 
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_header []
 
static EbmlSyntax ebml_syntax []
 
static EbmlSyntax matroska_info []
 
static EbmlSyntax matroska_track_video []
 
static EbmlSyntax matroska_track_audio []
 
static EbmlSyntax matroska_track_encoding_compression []
 
static EbmlSyntax matroska_track_encoding []
 
static EbmlSyntax matroska_track_encodings []
 
static EbmlSyntax matroska_track []
 
static EbmlSyntax matroska_tracks []
 
static EbmlSyntax matroska_attachment []
 
static EbmlSyntax matroska_attachments []
 
static EbmlSyntax matroska_chapter_display []
 
static EbmlSyntax matroska_chapter_entry []
 
static EbmlSyntax matroska_chapter []
 
static EbmlSyntax matroska_chapters []
 
static EbmlSyntax matroska_index_pos []
 
static EbmlSyntax matroska_index_entry []
 
static EbmlSyntax matroska_index []
 
static EbmlSyntax matroska_simpletag []
 
static EbmlSyntax matroska_tagtargets []
 
static EbmlSyntax matroska_tag []
 
static EbmlSyntax matroska_tags []
 
static EbmlSyntax matroska_seekhead_entry []
 
static EbmlSyntax matroska_seekhead []
 
static EbmlSyntax matroska_segment []
 
static EbmlSyntax matroska_segments []
 
static EbmlSyntax matroska_blockgroup []
 
static EbmlSyntax matroska_cluster []
 
static EbmlSyntax matroska_clusters []
 
static EbmlSyntax matroska_cluster_incremental_parsing []
 
static EbmlSyntax matroska_cluster_incremental []
 
static EbmlSyntax matroska_clusters_incremental []
 
static const char *const matroska_doctypes [] = { "matroska", "webm" }
 
AVInputFormat 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.

Enumeration Type Documentation

◆ EbmlType

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

Definition at line 63 of file matroskadec.c.

Function Documentation

◆ matroska_resync()

static int matroska_resync ( MatroskaDemuxContext matroska,
int64_t  last_pos 
)
static

Definition at line 575 of file matroskadec.c.

Referenced by matroska_read_header(), and matroska_read_packet().

◆ ebml_level_end()

static int ebml_level_end ( MatroskaDemuxContext matroska)
static

Definition at line 608 of file matroskadec.c.

Referenced by ebml_parse_nest(), and matroska_parse_cluster_incremental().

◆ ebml_read_num()

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

Definition at line 631 of file matroskadec.c.

Referenced by ebml_parse(), ebml_read_length(), and matroska_ebmlnum_uint().

◆ 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 677 of file matroskadec.c.

Referenced by ebml_parse_elem().

◆ ebml_read_uint()

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

Definition at line 690 of file matroskadec.c.

Referenced by ebml_parse_elem().

◆ ebml_read_float()

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

Definition at line 709 of file matroskadec.c.

Referenced by ebml_parse_elem().

◆ ebml_read_ascii()

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

Definition at line 727 of file matroskadec.c.

Referenced by ebml_parse_elem().

◆ ebml_read_binary()

static int ebml_read_binary ( AVIOContext pb,
int  length,
EbmlBin bin 
)
static

Definition at line 750 of file matroskadec.c.

Referenced by ebml_parse_elem().

◆ ebml_read_master()

static int ebml_read_master ( MatroskaDemuxContext matroska,
uint64_t  length 
)
static

Definition at line 774 of file matroskadec.c.

Referenced by ebml_parse_elem().

◆ matroska_ebmlnum_uint()

static int matroska_ebmlnum_uint ( MatroskaDemuxContext matroska,
uint8_t data,
uint32_t  size,
uint64_t *  num 
)
static

◆ matroska_ebmlnum_sint()

static int matroska_ebmlnum_sint ( MatroskaDemuxContext matroska,
uint8_t data,
uint32_t  size,
int64_t *  num 
)
static

Definition at line 807 of file matroskadec.c.

Referenced by matroska_parse_laces().

◆ ebml_parse_elem()

static int ebml_parse_elem ( MatroskaDemuxContext matroska,
EbmlSyntax syntax,
void data 
)
static

Definition at line 889 of file matroskadec.c.

Referenced by ebml_parse_id(), and matroska_ebmlnum_sint().

◆ ebml_parse_id()

static int ebml_parse_id ( MatroskaDemuxContext matroska,
EbmlSyntax syntax,
uint32_t  id,
void data 
)
static

Definition at line 826 of file matroskadec.c.

Referenced by ebml_parse(), and ebml_parse_elem().

◆ ebml_parse()

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

◆ ebml_parse_nest()

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

Definition at line 858 of file matroskadec.c.

Referenced by ebml_parse_elem().

◆ ebml_free()

static void ebml_free ( EbmlSyntax syntax,
void data 
)
static

◆ matroska_probe()

static int matroska_probe ( AVProbeData p)
static

Definition at line 999 of file matroskadec.c.

◆ matroska_find_track_by_num()

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

Definition at line 1041 of file matroskadec.c.

Referenced by matroska_parse_block(), and matroska_parse_cues().

◆ matroska_decode_buffer()

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

Definition at line 1055 of file matroskadec.c.

Referenced by matroska_parse_frame(), and matroska_parse_tracks().

◆ matroska_fix_ass_packet()

static void matroska_fix_ass_packet ( MatroskaDemuxContext matroska,
AVPacket pkt,
uint64_t  display_duration 
)
static

Definition at line 1184 of file matroskadec.c.

Referenced by matroska_parse_frame().

◆ matroska_merge_packets()

static int matroska_merge_packets ( AVPacket out,
AVPacket in 
)
static

Definition at line 1227 of file matroskadec.c.

Referenced by matroska_parse_frame().

◆ matroska_convert_tag()

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

Definition at line 1241 of file matroskadec.c.

Referenced by matroska_convert_tags().

◆ matroska_convert_tags()

static void matroska_convert_tags ( AVFormatContext s)
static

Definition at line 1276 of file matroskadec.c.

Referenced by matroska_read_header().

◆ matroska_parse_seekhead_entry()

static int matroska_parse_seekhead_entry ( MatroskaDemuxContext matroska,
int  idx 
)
static

Definition at line 1341 of file matroskadec.c.

Referenced by matroska_execute_seekhead(), and matroska_parse_cues().

◆ matroska_execute_seekhead()

static void matroska_execute_seekhead ( MatroskaDemuxContext matroska)
static

Definition at line 1393 of file matroskadec.c.

Referenced by matroska_read_header().

◆ matroska_parse_cues()

static void matroska_parse_cues ( MatroskaDemuxContext matroska)
static

Definition at line 1420 of file matroskadec.c.

Referenced by matroska_read_seek().

◆ matroska_aac_profile()

static int matroska_aac_profile ( char *  codec_id)
static

Definition at line 1458 of file matroskadec.c.

Referenced by matroska_parse_tracks().

◆ matroska_aac_sri()

static int matroska_aac_sri ( int  samplerate)
static

Definition at line 1469 of file matroskadec.c.

Referenced by matroska_parse_tracks().

◆ matroska_parse_flac()

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

Definition at line 1479 of file matroskadec.c.

Referenced by matroska_parse_tracks().

◆ mkv_field_order()

static int mkv_field_order ( int64_t  field_order)
static

Definition at line 1534 of file matroskadec.c.

Referenced by matroska_parse_tracks().

◆ 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 1554 of file matroskadec.c.

Referenced by matroska_parse_tracks().

◆ matroska_parse_tracks()

static int matroska_parse_tracks ( AVFormatContext s)
static

Definition at line 1579 of file matroskadec.c.

Referenced by matroska_read_header().

◆ matroska_read_header()

static int matroska_read_header ( AVFormatContext s)
static

Definition at line 1929 of file matroskadec.c.

◆ matroska_deliver_packet()

static int matroska_deliver_packet ( MatroskaDemuxContext matroska,
AVPacket pkt 
)
static

Definition at line 2073 of file matroskadec.c.

Referenced by matroska_read_packet().

◆ matroska_clear_queue()

static void matroska_clear_queue ( MatroskaDemuxContext matroska)
static

Definition at line 2102 of file matroskadec.c.

Referenced by matroska_read_close(), and matroska_read_seek().

◆ matroska_parse_laces()

static int matroska_parse_laces ( MatroskaDemuxContext matroska,
uint8_t **  buf,
int *  buf_size,
int  type,
uint32_t **  lace_buf,
int *  laces 
)
static

Definition at line 2116 of file matroskadec.c.

Referenced by matroska_parse_block().

◆ matroska_parse_rm_audio()

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

Definition at line 2225 of file matroskadec.c.

Referenced by matroska_parse_block().

◆ matroska_parse_wavpack()

static int matroska_parse_wavpack ( MatroskaTrack track,
uint8_t src,
uint8_t **  pdst,
int *  size 
)
static

Definition at line 2302 of file matroskadec.c.

Referenced by matroska_parse_frame().

◆ matroska_parse_frame()

static int matroska_parse_frame ( MatroskaDemuxContext matroska,
MatroskaTrack track,
AVStream st,
uint8_t data,
int  pkt_size,
uint64_t  timecode,
uint64_t  duration,
int64_t  pos,
int  is_keyframe 
)
static

Definition at line 2382 of file matroskadec.c.

Referenced by matroska_parse_block().

◆ matroska_parse_block()

static int matroska_parse_block ( MatroskaDemuxContext matroska,
uint8_t data,
int  size,
int64_t  pos,
uint64_t  cluster_time,
uint64_t  block_duration,
int  is_keyframe,
int64_t  cluster_pos 
)
static

Definition at line 2477 of file matroskadec.c.

Referenced by matroska_parse_cluster(), and matroska_parse_cluster_incremental().

◆ matroska_parse_cluster_incremental()

static int matroska_parse_cluster_incremental ( MatroskaDemuxContext matroska)
static

Definition at line 2584 of file matroskadec.c.

Referenced by matroska_parse_cluster().

◆ matroska_parse_cluster()

static int matroska_parse_cluster ( MatroskaDemuxContext matroska)
static

Definition at line 2639 of file matroskadec.c.

Referenced by matroska_read_packet(), and matroska_read_seek().

◆ matroska_read_packet()

static int matroska_read_packet ( AVFormatContext s,
AVPacket pkt 
)
static

Definition at line 2670 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 2691 of file matroskadec.c.

◆ matroska_read_close()

static int matroska_read_close ( AVFormatContext s)
static

Definition at line 2753 of file matroskadec.c.

Variable Documentation

◆ ebml_header

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

Definition at line 285 of file matroskadec.c.

Referenced by mkv_write_header().

◆ ebml_syntax

EbmlSyntax ebml_syntax[]
static
Initial value:
= {
{ EBML_ID_HEADER, EBML_NEST, 0, 0, { .n = ebml_header } },
{ 0 }
}
static EbmlSyntax ebml_header[]
Definition: matroskadec.c:285
#define EBML_ID_HEADER
Definition: matroska.h:33

Definition at line 296 of file matroskadec.c.

◆ matroska_info

EbmlSyntax matroska_info[]
static
Initial value:
= {
{ MATROSKA_ID_TIMECODESCALE, EBML_UINT, 0, 0x42, { .u = 1000000 } },
{ MATROSKA_ID_MUXINGAPP, EBML_NONE },
{ MATROSKA_ID_DATEUTC, EBML_NONE },
{ MATROSKA_ID_SEGMENTUID, EBML_NONE },
{ 0 }
}
#define MATROSKA_ID_DATEUTC
Definition: matroska.h:71
#define MATROSKA_ID_MUXINGAPP
Definition: matroska.h:70
#define MATROSKA_ID_TIMECODESCALE
Definition: matroska.h:66
#define MATROSKA_ID_SEGMENTUID
Definition: matroska.h:72
#define MATROSKA_ID_WRITINGAPP
Definition: matroska.h:69
#define MATROSKA_ID_TITLE
Definition: matroska.h:68
#define MATROSKA_ID_DURATION
Definition: matroska.h:67

Definition at line 301 of file matroskadec.c.

◆ matroska_track_video

EbmlSyntax matroska_track_video[]
static
Initial value:
= {
{ 0 }
}
#define MATROSKA_ID_VIDEOFLAGINTERLACED
Definition: matroska.h:115
#define MATROSKA_ID_VIDEODISPLAYHEIGHT
Definition: matroska.h:107
#define MATROSKA_ID_VIDEOASPECTRATIO
Definition: matroska.h:118
#define MATROSKA_ID_VIDEOPIXELCROPT
Definition: matroska.h:111
#define MATROSKA_ID_VIDEODISPLAYWIDTH
Definition: matroska.h:106
#define MATROSKA_ID_VIDEOSTEREOMODE
Definition: matroska.h:117
#define MATROSKA_ID_VIDEOPIXELCROPR
Definition: matroska.h:113
#define MATROSKA_ID_VIDEOCOLORSPACE
Definition: matroska.h:119
#define MATROSKA_ID_VIDEOPIXELCROPB
Definition: matroska.h:110
#define MATROSKA_ID_VIDEOPIXELHEIGHT
Definition: matroska.h:109
#define MATROSKA_ID_VIDEOFRAMERATE
Definition: matroska.h:105
#define MATROSKA_ID_VIDEOFIELDORDER
Definition: matroska.h:116
#define MATROSKA_ID_VIDEOPIXELCROPL
Definition: matroska.h:112
#define MATROSKA_ID_VIDEODISPLAYUNIT
Definition: matroska.h:114
#define MATROSKA_ID_VIDEOPIXELWIDTH
Definition: matroska.h:108

Definition at line 312 of file matroskadec.c.

◆ matroska_track_audio

EbmlSyntax matroska_track_audio[]
static
Initial value:
= {
{ MATROSKA_ID_AUDIOSAMPLINGFREQ, EBML_FLOAT, 0, 0x42, { .f = 8000.0 } },
{ MATROSKA_ID_AUDIOCHANNELS, EBML_UINT, 0, 0x42, { .u = 1 } },
{ 0 }
}
#define MATROSKA_ID_AUDIOBITDEPTH
Definition: matroska.h:125
#define MATROSKA_ID_AUDIOCHANNELS
Definition: matroska.h:126
#define MATROSKA_ID_AUDIOOUTSAMPLINGFREQ
Definition: matroska.h:123
#define MATROSKA_ID_AUDIOSAMPLINGFREQ
Definition: matroska.h:122

Definition at line 331 of file matroskadec.c.

◆ matroska_track_encoding_compression

EbmlSyntax matroska_track_encoding_compression[]
static
Initial value:
= {
{ MATROSKA_ID_ENCODINGCOMPALGO, EBML_UINT, 0, 0x42, { .u = 0 } },
{ 0 }
}
#define MATROSKA_ID_ENCODINGCOMPSETTINGS
Definition: matroska.h:134
#define MATROSKA_ID_ENCODINGCOMPALGO
Definition: matroska.h:133

Definition at line 339 of file matroskadec.c.

◆ matroska_track_encoding

EbmlSyntax matroska_track_encoding[]
static
Initial value:
= {
{ MATROSKA_ID_ENCODINGSCOPE, EBML_UINT, 0, 0x42, { .u = 1 } },
{ MATROSKA_ID_ENCODINGTYPE, EBML_UINT, 0, 0x42, { .u = 0 } },
{ 0 }
}
#define MATROSKA_ID_ENCODINGTYPE
Definition: matroska.h:131
#define MATROSKA_ID_ENCODINGORDER
Definition: matroska.h:129
static EbmlSyntax matroska_track_encoding_compression[]
Definition: matroskadec.c:339
#define MATROSKA_ID_ENCODINGCOMPRESSION
Definition: matroska.h:132
#define MATROSKA_ID_ENCODINGSCOPE
Definition: matroska.h:130

Definition at line 345 of file matroskadec.c.

◆ matroska_track_encodings

EbmlSyntax matroska_track_encodings[]
static
Initial value:
= {
{ 0 }
}
#define MATROSKA_ID_TRACKCONTENTENCODING
Definition: matroska.h:100
static EbmlSyntax matroska_track_encoding[]
Definition: matroskadec.c:345

Definition at line 353 of file matroskadec.c.

◆ matroska_track

EbmlSyntax matroska_track[]
static
Initial value:
= {
{ MATROSKA_ID_TRACKLANGUAGE, EBML_UTF8, 0, 0x42, { .s = "eng" } },
{ MATROSKA_ID_TRACKTIMECODESCALE, EBML_FLOAT, 0, 0x42, { .f = 1.0 } },
{ MATROSKA_ID_TRACKFLAGDEFAULT, EBML_UINT, 0, 0x42, { .u = 1 } },
{ MATROSKA_ID_TRACKFLAGFORCED, EBML_UINT, 0, 0x42, { .u = 0 } },
{ MATROSKA_ID_CODECNAME, EBML_NONE },
{ MATROSKA_ID_CODECINFOURL, EBML_NONE },
{ MATROSKA_ID_TRACKMINCACHE, EBML_NONE },
{ MATROSKA_ID_TRACKMAXCACHE, EBML_NONE },
{ 0 }
}
#define MATROSKA_ID_TRACKDEFAULTDURATION
Definition: matroska.h:98
#define MATROSKA_ID_TRACKFLAGLACING
Definition: matroska.h:95
#define MATROSKA_ID_CODECPRIVATE
Definition: matroska.h:84
#define MATROSKA_ID_TRACKFLAGDEFAULT
Definition: matroska.h:93
#define MATROSKA_ID_TRACKTYPE
Definition: matroska.h:80
static EbmlSyntax matroska_track_audio[]
Definition: matroskadec.c:331
#define MATROSKA_ID_TRACKCONTENTENCODINGS
Definition: matroska.h:99
#define MATROSKA_ID_CODECDOWNLOADURL
Definition: matroska.h:87
#define MATROSKA_ID_TRACKLANGUAGE
Definition: matroska.h:91
#define MATROSKA_ID_CODECNAME
Definition: matroska.h:85
#define MATROSKA_ID_CODECDECODEALL
Definition: matroska.h:88
#define MATROSKA_ID_TRACKNUMBER
Definition: matroska.h:78
#define MATROSKA_ID_TRACKUID
Definition: matroska.h:79
#define MATROSKA_ID_TRACKTIMECODESCALE
Definition: matroska.h:101
static EbmlSyntax matroska_track_encodings[]
Definition: matroskadec.c:353
#define MATROSKA_ID_TRACKMAXCACHE
Definition: matroska.h:97
#define MATROSKA_ID_TRACKMINCACHE
Definition: matroska.h:96
#define MATROSKA_ID_TRACKFLAGFORCED
Definition: matroska.h:94
#define MATROSKA_ID_TRACKFLAGENABLED
Definition: matroska.h:92
#define MATROSKA_ID_TRACKNAME
Definition: matroska.h:90
#define MATROSKA_ID_TRACKVIDEO
Definition: matroska.h:82
#define MATROSKA_ID_CODECID
Definition: matroska.h:83
#define MATROSKA_ID_CODECDELAY
Definition: matroska.h:89
#define MATROSKA_ID_TRACKMAXBLKADDID
Definition: matroska.h:102
#define MATROSKA_ID_CODECINFOURL
Definition: matroska.h:86
#define MATROSKA_ID_TRACKAUDIO
Definition: matroska.h:81
static EbmlSyntax matroska_track_video[]
Definition: matroskadec.c:312

Definition at line 358 of file matroskadec.c.

◆ matroska_tracks

EbmlSyntax matroska_tracks[]
static
Initial value:
= {
{ 0 }
}
#define MATROSKA_ID_TRACKENTRY
Definition: matroska.h:75
static EbmlSyntax matroska_track[]
Definition: matroskadec.c:358

Definition at line 386 of file matroskadec.c.

◆ matroska_attachment

EbmlSyntax matroska_attachment[]
static
Initial value:
= {
{ 0 }
}
#define MATROSKA_ID_FILEDATA
Definition: matroska.h:188
#define MATROSKA_ID_FILEDESC
Definition: matroska.h:185
#define MATROSKA_ID_FILEMIMETYPE
Definition: matroska.h:187
#define MATROSKA_ID_FILENAME
Definition: matroska.h:186
#define MATROSKA_ID_FILEUID
Definition: matroska.h:189

Definition at line 391 of file matroskadec.c.

◆ matroska_attachments

EbmlSyntax matroska_attachments[]
static
Initial value:
= {
{ 0 }
}
static EbmlSyntax matroska_attachment[]
Definition: matroskadec.c:391
#define MATROSKA_ID_ATTACHEDFILE
Definition: matroska.h:184

Definition at line 400 of file matroskadec.c.

◆ matroska_chapter_display

EbmlSyntax matroska_chapter_display[]
static
Initial value:
= {
{ 0 }
}
#define MATROSKA_ID_CHAPLANG
Definition: matroska.h:198
#define MATROSKA_ID_CHAPSTRING
Definition: matroska.h:197

Definition at line 405 of file matroskadec.c.

◆ matroska_chapter_entry

EbmlSyntax matroska_chapter_entry[]
static
Initial value:
= {
{ MATROSKA_ID_CHAPTERATOM, EBML_NONE },
{ 0 }
}
#define MATROSKA_ID_CHAPTERTIMEEND
Definition: matroska.h:195
#define MATROSKA_ID_CHAPTERFLAGHIDDEN
Definition: matroska.h:204
#define MATROSKA_ID_CHAPTERFLAGENABLED
Definition: matroska.h:205
#define MATROSKA_ID_CHAPTERPHYSEQUIV
Definition: matroska.h:206
#define MATROSKA_ID_CHAPTERATOM
Definition: matroska.h:193
#define MATROSKA_ID_CHAPTERDISPLAY
Definition: matroska.h:196
#define MATROSKA_ID_CHAPTERTIMESTART
Definition: matroska.h:194
#define MATROSKA_ID_CHAPTERUID
Definition: matroska.h:203
static EbmlSyntax matroska_chapter_display[]
Definition: matroskadec.c:405
#define AV_NOPTS_VALUE
Undefined timestamp value.
Definition: avutil.h:235

Definition at line 411 of file matroskadec.c.

◆ matroska_chapter

EbmlSyntax matroska_chapter[]
static
Initial value:
= {
{ 0 }
}
#define MATROSKA_ID_EDITIONFLAGDEFAULT
Definition: matroska.h:201
#define MATROSKA_ID_EDITIONFLAGORDERED
Definition: matroska.h:202
#define MATROSKA_ID_EDITIONFLAGHIDDEN
Definition: matroska.h:200
#define MATROSKA_ID_EDITIONUID
Definition: matroska.h:199
#define MATROSKA_ID_CHAPTERATOM
Definition: matroska.h:193
static EbmlSyntax matroska_chapter_entry[]
Definition: matroskadec.c:411

Definition at line 423 of file matroskadec.c.

◆ matroska_chapters

EbmlSyntax matroska_chapters[]
static
Initial value:
= {
{ 0 }
}
static EbmlSyntax matroska_chapter[]
Definition: matroskadec.c:423
#define MATROSKA_ID_EDITIONENTRY
Definition: matroska.h:192

Definition at line 432 of file matroskadec.c.

◆ matroska_index_pos

EbmlSyntax matroska_index_pos[]
static
Initial value:
= {
{ 0 }
}
#define MATROSKA_ID_CUECLUSTERPOSITION
Definition: matroska.h:145
#define MATROSKA_ID_CUEBLOCKNUMBER
Definition: matroska.h:146
#define MATROSKA_ID_CUETRACK
Definition: matroska.h:144

Definition at line 437 of file matroskadec.c.

◆ matroska_index_entry

EbmlSyntax matroska_index_entry[]
static
Initial value:
= {
{ 0 }
}
#define MATROSKA_ID_CUETRACKPOSITION
Definition: matroska.h:141
#define MATROSKA_ID_CUETIME
Definition: matroska.h:140
static EbmlSyntax matroska_index_pos[]
Definition: matroskadec.c:437

Definition at line 444 of file matroskadec.c.

◆ matroska_index

EbmlSyntax matroska_index[]
static
Initial value:
= {
{ 0 }
}
#define MATROSKA_ID_POINTENTRY
Definition: matroska.h:137
static EbmlSyntax matroska_index_entry[]
Definition: matroskadec.c:444

Definition at line 450 of file matroskadec.c.

◆ matroska_simpletag

EbmlSyntax matroska_simpletag[]
static
Initial value:
= {
{ MATROSKA_ID_TAGLANG, EBML_STR, 0, 0x42, { .s = "und" } },
{ 0 }
}
static EbmlSyntax matroska_simpletag[]
Definition: matroskadec.c:455
#define MATROSKA_ID_TAGDEFAULT_BUG
Definition: matroska.h:155
#define MATROSKA_ID_TAGNAME
Definition: matroska.h:151
#define MATROSKA_ID_SIMPLETAG
Definition: matroska.h:150
#define MATROSKA_ID_TAGDEFAULT
Definition: matroska.h:154
#define MATROSKA_ID_TAGLANG
Definition: matroska.h:153
#define MATROSKA_ID_TAGSTRING
Definition: matroska.h:152

Definition at line 455 of file matroskadec.c.

◆ matroska_tagtargets

EbmlSyntax matroska_tagtargets[]
static
Initial value:
= {
{ MATROSKA_ID_TAGTARGETS_TYPEVALUE, EBML_UINT, 0, 0x42, { .u = 50 } },
{ 0 }
}
#define MATROSKA_ID_TAGTARGETS_TYPE
Definition: matroska.h:157
#define MATROSKA_ID_TAGTARGETS_ATTACHUID
Definition: matroska.h:161
#define MATROSKA_ID_TAGTARGETS_CHAPTERUID
Definition: matroska.h:160
#define MATROSKA_ID_TAGTARGETS_TYPEVALUE
Definition: matroska.h:158
#define MATROSKA_ID_TAGTARGETS_TRACKUID
Definition: matroska.h:159

Definition at line 465 of file matroskadec.c.

◆ matroska_tag

EbmlSyntax matroska_tag[]
static
Initial value:
= {
{ 0 }
}
static EbmlSyntax matroska_simpletag[]
Definition: matroskadec.c:455
#define MATROSKA_ID_TAGTARGETS
Definition: matroska.h:156
#define MATROSKA_ID_SIMPLETAG
Definition: matroska.h:150
static EbmlSyntax matroska_tagtargets[]
Definition: matroskadec.c:465

Definition at line 474 of file matroskadec.c.

◆ matroska_tags

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

Definition at line 480 of file matroskadec.c.

◆ matroska_seekhead_entry

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

Definition at line 485 of file matroskadec.c.

◆ matroska_seekhead

EbmlSyntax matroska_seekhead[]
static
Initial value:
= {
{ 0 }
}
#define MATROSKA_ID_SEEKENTRY
Definition: matroska.h:164
static EbmlSyntax matroska_seekhead_entry[]
Definition: matroskadec.c:485

Definition at line 491 of file matroskadec.c.

◆ matroska_segment

EbmlSyntax matroska_segment[]
static
Initial value:
= {
{ 0 }
}
#define MATROSKA_ID_CUES
Definition: matroska.h:58
static EbmlSyntax matroska_tracks[]
Definition: matroskadec.c:386
static EbmlSyntax matroska_info[]
Definition: matroskadec.c:301
static EbmlSyntax matroska_index[]
Definition: matroskadec.c:450
#define MATROSKA_ID_CLUSTER
Definition: matroska.h:62
static EbmlSyntax matroska_attachments[]
Definition: matroskadec.c:400
static EbmlSyntax matroska_chapters[]
Definition: matroskadec.c:432
#define MATROSKA_ID_CHAPTERS
Definition: matroska.h:63
static EbmlSyntax matroska_seekhead[]
Definition: matroskadec.c:491
#define MATROSKA_ID_TAGS
Definition: matroska.h:59
#define MATROSKA_ID_INFO
Definition: matroska.h:56
static EbmlSyntax matroska_tags[]
Definition: matroskadec.c:480
#define MATROSKA_ID_TRACKS
Definition: matroska.h:57
#define MATROSKA_ID_ATTACHMENTS
Definition: matroska.h:61
#define MATROSKA_ID_SEEKHEAD
Definition: matroska.h:60

Definition at line 496 of file matroskadec.c.

◆ matroska_segments

EbmlSyntax matroska_segments[]
static
Initial value:
= {
{ 0 }
}
static EbmlSyntax matroska_segment[]
Definition: matroskadec.c:496
#define MATROSKA_ID_SEGMENT
Definition: matroska.h:53

Definition at line 508 of file matroskadec.c.

◆ matroska_blockgroup

EbmlSyntax matroska_blockgroup[]
static
Initial value:
= {
{ MATROSKA_ID_BLOCK, EBML_BIN, 0, 0x42 },
{ 1, EBML_UINT, 0, 0x42, { .u = 1 } },
{ 0 }
}
#define MATROSKA_ID_BLOCKREFERENCE
Definition: matroska.h:180
#define MATROSKA_ID_SIMPLEBLOCK
Definition: matroska.h:175
#define MATROSKA_ID_BLOCKDURATION
Definition: matroska.h:179
#define MATROSKA_ID_BLOCK
Definition: matroska.h:178
#define MATROSKA_ID_CODECSTATE
Definition: matroska.h:181
#define AV_NOPTS_VALUE
Undefined timestamp value.
Definition: avutil.h:235

Definition at line 513 of file matroskadec.c.

◆ matroska_cluster

EbmlSyntax matroska_cluster[]
static
Initial value:
= {
{ 0 }
}
#define MATROSKA_ID_CLUSTERPOSITION
Definition: matroska.h:172
#define MATROSKA_ID_CLUSTERTIMECODE
Definition: matroska.h:171
#define MATROSKA_ID_SIMPLEBLOCK
Definition: matroska.h:175
#define MATROSKA_ID_BLOCKGROUP
Definition: matroska.h:174
static EbmlSyntax matroska_blockgroup[]
Definition: matroskadec.c:513
#define MATROSKA_ID_CLUSTERPREVSIZE
Definition: matroska.h:173

Definition at line 523 of file matroskadec.c.

◆ matroska_clusters

EbmlSyntax matroska_clusters[]
static
Initial value:
= {
{ MATROSKA_ID_CUES, EBML_NONE },
{ MATROSKA_ID_TAGS, EBML_NONE },
{ MATROSKA_ID_SEEKHEAD, EBML_NONE },
{ 0 }
}
static EbmlSyntax matroska_cluster[]
Definition: matroskadec.c:523
#define MATROSKA_ID_CUES
Definition: matroska.h:58
#define MATROSKA_ID_CLUSTER
Definition: matroska.h:62
#define MATROSKA_ID_TAGS
Definition: matroska.h:59
#define MATROSKA_ID_INFO
Definition: matroska.h:56
#define MATROSKA_ID_SEEKHEAD
Definition: matroska.h:60

Definition at line 532 of file matroskadec.c.

◆ matroska_cluster_incremental_parsing

EbmlSyntax matroska_cluster_incremental_parsing[]
static
Initial value:
= {
{ MATROSKA_ID_INFO, EBML_NONE },
{ MATROSKA_ID_CUES, EBML_NONE },
{ MATROSKA_ID_TAGS, EBML_NONE },
{ MATROSKA_ID_SEEKHEAD, EBML_NONE },
{ 0 }
}
#define MATROSKA_ID_CLUSTERPOSITION
Definition: matroska.h:172
#define MATROSKA_ID_CLUSTERTIMECODE
Definition: matroska.h:171
#define MATROSKA_ID_SIMPLEBLOCK
Definition: matroska.h:175
#define MATROSKA_ID_CUES
Definition: matroska.h:58
#define MATROSKA_ID_CLUSTER
Definition: matroska.h:62
#define MATROSKA_ID_TAGS
Definition: matroska.h:59
#define MATROSKA_ID_INFO
Definition: matroska.h:56
#define MATROSKA_ID_BLOCKGROUP
Definition: matroska.h:174
static EbmlSyntax matroska_blockgroup[]
Definition: matroskadec.c:513
#define MATROSKA_ID_SEEKHEAD
Definition: matroska.h:60
#define MATROSKA_ID_CLUSTERPREVSIZE
Definition: matroska.h:173

Definition at line 541 of file matroskadec.c.

◆ matroska_cluster_incremental

EbmlSyntax matroska_cluster_incremental[]
static
Initial value:
= {
{ MATROSKA_ID_SIMPLEBLOCK, EBML_STOP },
{ 0 }
}
#define MATROSKA_ID_CLUSTERPOSITION
Definition: matroska.h:172
#define MATROSKA_ID_CLUSTERTIMECODE
Definition: matroska.h:171
#define MATROSKA_ID_SIMPLEBLOCK
Definition: matroska.h:175
#define MATROSKA_ID_BLOCKGROUP
Definition: matroska.h:174
#define MATROSKA_ID_CLUSTERPREVSIZE
Definition: matroska.h:173

Definition at line 555 of file matroskadec.c.

◆ matroska_clusters_incremental

EbmlSyntax matroska_clusters_incremental[]
static
Initial value:
= {
{ MATROSKA_ID_CUES, EBML_NONE },
{ MATROSKA_ID_TAGS, EBML_NONE },
{ MATROSKA_ID_SEEKHEAD, EBML_NONE },
{ 0 }
}
#define MATROSKA_ID_CUES
Definition: matroska.h:58
#define MATROSKA_ID_CLUSTER
Definition: matroska.h:62
#define MATROSKA_ID_TAGS
Definition: matroska.h:59
#define MATROSKA_ID_INFO
Definition: matroska.h:56
static EbmlSyntax matroska_cluster_incremental[]
Definition: matroskadec.c:555
#define MATROSKA_ID_SEEKHEAD
Definition: matroska.h:60

Definition at line 564 of file matroskadec.c.

◆ matroska_doctypes

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

Definition at line 573 of file matroskadec.c.

Referenced by matroska_probe(), and matroska_read_header().

◆ ff_matroska_demuxer

AVInputFormat ff_matroska_demuxer
Initial value:
= {
.name = "matroska,webm",
.long_name = NULL_IF_CONFIG_SMALL("Matroska / WebM"),
.extensions = "mkv,mk3d,mka,mks",
.priv_data_size = sizeof(MatroskaDemuxContext),
.mime_type = "audio/webm,audio/x-matroska,video/webm,video/x-matroska"
}
static int read_seek(AVFormatContext *ctx, int stream_index, int64_t timestamp, int flags)
Definition: libcdio.c:153
static av_cold int read_close(AVFormatContext *ctx)
Definition: libcdio.c:145
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:148
static int matroska_read_header(AVFormatContext *s)
Definition: matroskadec.c:1929
static int read_probe(AVProbeData *pd)
Definition: jvdec.c:55
static int matroska_read_close(AVFormatContext *s)
Definition: matroskadec.c:2753
static int matroska_probe(AVProbeData *p)
Definition: matroskadec.c:999
static int read_header(FFV1Context *f)
Definition: ffv1dec.c:546
static int matroska_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp, int flags)
Definition: matroskadec.c:2691
static int read_packet(AVFormatContext *ctx, AVPacket *pkt)
Definition: libcdio.c:114
static int matroska_read_packet(AVFormatContext *s, AVPacket *pkt)
Definition: matroskadec.c:2670

Definition at line 2770 of file matroskadec.c.