matroskaenc.c File Reference

Go to the source code of this file.

Classes

struct  ebml_master
struct  mkv_seekhead_entry
struct  mkv_seekhead
struct  mkv_cuepoint
struct  mkv_cues
struct  MatroskaMuxContext

Functions

static int ebml_id_size (unsigned int id)
static void put_ebml_id (ByteIOContext *pb, unsigned int id)
static void put_ebml_size_unknown (ByteIOContext *pb, int bytes)
 Write an EBML size meaning "unknown size".
static int ebml_num_size (uint64_t num)
 Calculate how many bytes are needed to represent a given number in EBML.
static void put_ebml_num (ByteIOContext *pb, uint64_t num, int bytes)
 Write a number in EBML variable length format.
static void put_ebml_uint (ByteIOContext *pb, unsigned int elementid, uint64_t val)
static void put_ebml_float (ByteIOContext *pb, unsigned int elementid, double val)
static void put_ebml_binary (ByteIOContext *pb, unsigned int elementid, const uint8_t *buf, int size)
static void put_ebml_string (ByteIOContext *pb, unsigned int elementid, const char *str)
static void put_ebml_void (ByteIOContext *pb, uint64_t size)
 Writes a void element of a given size.
static ebml_master start_ebml_master (ByteIOContext *pb, unsigned int elementid, uint64_t expectedsize)
static void end_ebml_master (ByteIOContext *pb, ebml_master master)
static void put_xiph_size (ByteIOContext *pb, int size)
static mkv_seekheadmkv_start_seekhead (ByteIOContext *pb, offset_t segment_offset, int numelements)
 Initialize a mkv_seekhead element to be ready to index level 1 Matroska elements.
static int mkv_add_seekhead_entry (mkv_seekhead *seekhead, unsigned int elementid, uint64_t filepos)
static offset_t mkv_write_seekhead (ByteIOContext *pb, mkv_seekhead *seekhead)
 Write the seek head to the file and free it.
static mkv_cuesmkv_start_cues (offset_t segment_offset)
static int mkv_add_cuepoint (mkv_cues *cues, AVPacket *pkt, offset_t cluster_pos)
static offset_t mkv_write_cues (ByteIOContext *pb, mkv_cues *cues, int num_tracks)
static int put_xiph_codecpriv (AVFormatContext *s, ByteIOContext *pb, AVCodecContext *codec)
static int put_flac_codecpriv (AVFormatContext *s, ByteIOContext *pb, AVCodecContext *codec)
static void get_aac_sample_rates (AVFormatContext *s, AVCodecContext *codec, int *sample_rate, int *output_sample_rate)
static int mkv_write_codecprivate (AVFormatContext *s, ByteIOContext *pb, AVCodecContext *codec, int native_id)
static int mkv_write_tracks (AVFormatContext *s)
static int mkv_write_header (AVFormatContext *s)
static int mkv_block_size (AVPacket *pkt)
static int mkv_blockgroup_size (AVPacket *pkt)
static void mkv_write_block (AVFormatContext *s, unsigned int blockid, AVPacket *pkt, int flags)
static int mkv_write_packet (AVFormatContext *s, AVPacket *pkt)
static int mkv_write_trailer (AVFormatContext *s)

Variables

AVOutputFormat matroska_muxer
AVOutputFormat matroska_audio_muxer


Function Documentation

static int ebml_id_size ( unsigned int  id  )  [static]

Definition at line 88 of file matroskaenc.c.

Referenced by mkv_write_seekhead(), and put_ebml_id().

static void put_ebml_id ( ByteIOContext pb,
unsigned int  id 
) [static]

static void put_ebml_size_unknown ( ByteIOContext pb,
int  bytes 
) [static]

Write an EBML size meaning "unknown size".

Parameters:
bytes The number of bytes the size should occupy (maximum: 8).

Definition at line 105 of file matroskaenc.c.

Referenced by start_ebml_master().

static int ebml_num_size ( uint64_t  num  )  [static]

Calculate how many bytes are needed to represent a given number in EBML.

Definition at line 116 of file matroskaenc.c.

Referenced by mkv_blockgroup_size(), put_ebml_num(), and start_ebml_master().

static void put_ebml_num ( ByteIOContext pb,
uint64_t  num,
int  bytes 
) [static]

Write a number in EBML variable length format.

Parameters:
bytes The number of bytes that need to be used to write the number. If zero, any number of bytes can be used.

Definition at line 129 of file matroskaenc.c.

Referenced by end_ebml_master(), mkv_write_block(), mkv_write_seekhead(), put_ebml_binary(), put_ebml_float(), put_ebml_uint(), and put_ebml_void().

static void put_ebml_uint ( ByteIOContext pb,
unsigned int  elementid,
uint64_t  val 
) [static]

static void put_ebml_float ( ByteIOContext pb,
unsigned int  elementid,
double  val 
) [static]

Definition at line 159 of file matroskaenc.c.

Referenced by mkv_write_tracks(), and mkv_write_trailer().

static void put_ebml_binary ( ByteIOContext pb,
unsigned int  elementid,
const uint8_t *  buf,
int  size 
) [static]

Definition at line 166 of file matroskaenc.c.

Referenced by mkv_write_codecprivate(), mkv_write_trailer(), and put_ebml_string().

static void put_ebml_string ( ByteIOContext pb,
unsigned int  elementid,
const char *  str 
) [static]

Definition at line 174 of file matroskaenc.c.

Referenced by mkv_write_header(), and mkv_write_tracks().

static void put_ebml_void ( ByteIOContext pb,
uint64_t  size 
) [static]

Writes a void element of a given size.

Useful for reserving space in the file to be written to later.

Parameters:
size The number of bytes to reserve, which must be at least 2.

Definition at line 185 of file matroskaenc.c.

Referenced by mkv_start_seekhead(), mkv_write_header(), and mkv_write_seekhead().

static ebml_master start_ebml_master ( ByteIOContext pb,
unsigned int  elementid,
uint64_t  expectedsize 
) [static]

static void end_ebml_master ( ByteIOContext pb,
ebml_master  master 
) [static]

static void put_xiph_size ( ByteIOContext pb,
int  size 
) [static]

Definition at line 223 of file matroskaenc.c.

Referenced by put_flac_codecpriv(), and put_xiph_codecpriv().

static mkv_seekhead* mkv_start_seekhead ( ByteIOContext pb,
offset_t  segment_offset,
int  numelements 
) [static]

Initialize a mkv_seekhead element to be ready to index level 1 Matroska elements.

If a maximum number of elements is specified, enough space will be reserved at the current file location to write a seek head of that size.

Parameters:
segment_offset The absolute offset to the position in the file where the segment begins.
numelements The maximum number of elements that will be indexed by this seek head, 0 if unlimited.

Definition at line 242 of file matroskaenc.c.

Referenced by mkv_write_header().

static int mkv_add_seekhead_entry ( mkv_seekhead seekhead,
unsigned int  elementid,
uint64_t  filepos 
) [static]

static offset_t mkv_write_seekhead ( ByteIOContext pb,
mkv_seekhead seekhead 
) [static]

Write the seek head to the file and free it.

If a maximum number of elements was specified to mkv_start_seekhead(), the seek head will be written at the location reserved for it. Otherwise, it is written at the current location in the file.

Returns:
The file offset where the seekhead was written.

Definition at line 289 of file matroskaenc.c.

Referenced by mkv_write_trailer().

static mkv_cues* mkv_start_cues ( offset_t  segment_offset  )  [static]

Definition at line 328 of file matroskaenc.c.

Referenced by mkv_write_header().

static int mkv_add_cuepoint ( mkv_cues cues,
AVPacket pkt,
offset_t  cluster_pos 
) [static]

Definition at line 338 of file matroskaenc.c.

Referenced by mkv_write_packet().

static offset_t mkv_write_cues ( ByteIOContext pb,
mkv_cues cues,
int  num_tracks 
) [static]

Definition at line 354 of file matroskaenc.c.

Referenced by mkv_write_trailer().

static int put_xiph_codecpriv ( AVFormatContext s,
ByteIOContext pb,
AVCodecContext codec 
) [static]

Definition at line 389 of file matroskaenc.c.

Referenced by mkv_write_codecprivate().

static int put_flac_codecpriv ( AVFormatContext s,
ByteIOContext pb,
AVCodecContext codec 
) [static]

Definition at line 419 of file matroskaenc.c.

Referenced by mkv_write_codecprivate().

static void get_aac_sample_rates ( AVFormatContext s,
AVCodecContext codec,
int *  sample_rate,
int *  output_sample_rate 
) [static]

Definition at line 436 of file matroskaenc.c.

Referenced by mkv_write_tracks().

static int mkv_write_codecprivate ( AVFormatContext s,
ByteIOContext pb,
AVCodecContext codec,
int  native_id 
) [static]

Definition at line 467 of file matroskaenc.c.

Referenced by mkv_write_tracks().

static int mkv_write_tracks ( AVFormatContext s  )  [static]

Definition at line 510 of file matroskaenc.c.

Referenced by mkv_write_header().

static int mkv_write_header ( AVFormatContext s  )  [static]

Definition at line 613 of file matroskaenc.c.

static int mkv_block_size ( AVPacket pkt  )  [static]

Definition at line 686 of file matroskaenc.c.

Referenced by mkv_blockgroup_size(), and mkv_write_block().

static int mkv_blockgroup_size ( AVPacket pkt  )  [static]

Definition at line 692 of file matroskaenc.c.

Referenced by mkv_write_packet().

static void mkv_write_block ( AVFormatContext s,
unsigned int  blockid,
AVPacket pkt,
int  flags 
) [static]

Definition at line 703 of file matroskaenc.c.

Referenced by mkv_write_packet().

static int mkv_write_packet ( AVFormatContext s,
AVPacket pkt 
) [static]

Definition at line 719 of file matroskaenc.c.

static int mkv_write_trailer ( AVFormatContext s  )  [static]

Definition at line 761 of file matroskaenc.c.


Variable Documentation

Initial value:

 {
    "matroska",
    "Matroska File Format",
    "video/x-matroska",
    "mkv",
    sizeof(MatroskaMuxContext),
    CODEC_ID_MP2,
    CODEC_ID_MPEG4,
    mkv_write_header,
    mkv_write_packet,
    mkv_write_trailer,
    .codec_tag = (const AVCodecTag*[]){codec_bmp_tags, codec_wav_tags, 0},
    .subtitle_codec = CODEC_ID_TEXT,
}

Definition at line 801 of file matroskaenc.c.

Initial value:

 {
    "matroska",
    "Matroska File Format",
    "audio/x-matroska",
    "mka",
    sizeof(MatroskaMuxContext),
    CODEC_ID_MP2,
    CODEC_ID_NONE,
    mkv_write_header,
    mkv_write_packet,
    mkv_write_trailer,
    .codec_tag = (const AVCodecTag*[]){codec_wav_tags, 0},
}

Definition at line 816 of file matroskaenc.c.


Generated on Sat Dec 18 05:15:53 2010 for MythTV by  doxygen 1.5.5