libavformat/matroskaenc.c File Reference

#include "avformat.h"
#include "internal.h"
#include "riff.h"
#include "isom.h"
#include "matroska.h"
#include "avc.h"
#include "flacenc.h"
#include "avlanguage.h"
#include "libavutil/samplefmt.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/intfloat.h"
#include "libavutil/mathematics.h"
#include "libavutil/random_seed.h"
#include "libavutil/lfg.h"
#include "libavutil/dict.h"
#include "libavutil/avstring.h"
#include "libavcodec/xiph.h"
#include "libavcodec/mpeg4audio.h"

Go to the source code of this file.

Data Structures

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

Defines

#define MODE_MATROSKAv2   0x01
#define MODE_WEBM   0x02
#define MAX_SEEKENTRY_SIZE   21
 2 bytes * 3 for EBML IDs, 3 1-byte EBML lengths, 8 bytes for 64 bit offset, 4 bytes for target EBML ID
#define MAX_CUETRACKPOS_SIZE   22
 per-cuepoint-track - 3 1-byte EBML IDs, 3 1-byte EBML sizes, 2 8-byte uint max
#define MAX_CUEPOINT_SIZE(num_tracks)   12 + MAX_CUETRACKPOS_SIZE*num_tracks
 per-cuepoint - 2 1-byte EBML IDs, 2 1-byte EBML sizes, 8-byte uint max

Functions

static int ebml_id_size (unsigned int id)
static void put_ebml_id (AVIOContext *pb, unsigned int id)
static void put_ebml_size_unknown (AVIOContext *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 (AVIOContext *pb, uint64_t num, int bytes)
 Write a number in EBML variable length format.
static void put_ebml_uint (AVIOContext *pb, unsigned int elementid, uint64_t val)
static void put_ebml_float (AVIOContext *pb, unsigned int elementid, double val)
static void put_ebml_binary (AVIOContext *pb, unsigned int elementid, const void *buf, int size)
static void put_ebml_string (AVIOContext *pb, unsigned int elementid, const char *str)
static void put_ebml_void (AVIOContext *pb, uint64_t size)
 Write a void element of a given size.
static ebml_master start_ebml_master (AVIOContext *pb, unsigned int elementid, uint64_t expectedsize)
static void end_ebml_master (AVIOContext *pb, ebml_master master)
static void put_xiph_size (AVIOContext *pb, int size)
static mkv_seekheadmkv_start_seekhead (AVIOContext *pb, int64_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 int64_t mkv_write_seekhead (AVIOContext *pb, mkv_seekhead *seekhead)
 Write the seek head to the file and free it.
static mkv_cuesmkv_start_cues (int64_t segment_offset)
static int mkv_add_cuepoint (mkv_cues *cues, int stream, int64_t ts, int64_t cluster_pos)
static int64_t mkv_write_cues (AVIOContext *pb, mkv_cues *cues, int num_tracks)
static int put_xiph_codecpriv (AVFormatContext *s, AVIOContext *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, AVIOContext *pb, AVCodecContext *codec, int native_id, int qt_id)
static int mkv_write_tracks (AVFormatContext *s)
static int mkv_write_chapters (AVFormatContext *s)
static void mkv_write_simpletag (AVIOContext *pb, AVDictionaryEntry *t)
static int mkv_write_tag (AVFormatContext *s, AVDictionary *m, unsigned int elementid, unsigned int uid, ebml_master *tags)
static int mkv_write_tags (AVFormatContext *s)
static int mkv_write_attachments (AVFormatContext *s)
static int mkv_write_header (AVFormatContext *s)
static int mkv_blockgroup_size (int pkt_size)
static int ass_get_duration (const uint8_t *p)
static int mkv_write_ass_blocks (AVFormatContext *s, AVIOContext *pb, AVPacket *pkt)
static void mkv_write_block (AVFormatContext *s, AVIOContext *pb, unsigned int blockid, AVPacket *pkt, int flags)
static int srt_get_duration (uint8_t **buf)
static int mkv_write_srt_blocks (AVFormatContext *s, AVIOContext *pb, AVPacket *pkt)
static void mkv_flush_dynbuf (AVFormatContext *s)
static int mkv_write_packet_internal (AVFormatContext *s, AVPacket *pkt)
static int mkv_copy_packet (MatroskaMuxContext *mkv, const AVPacket *pkt)
static int mkv_write_packet (AVFormatContext *s, AVPacket *pkt)
static int mkv_write_trailer (AVFormatContext *s)
static int mkv_query_codec (enum AVCodecID codec_id, int std_compliance)


Define Documentation

#define MAX_CUEPOINT_SIZE ( num_tracks   )     12 + MAX_CUETRACKPOS_SIZE*num_tracks

per-cuepoint - 2 1-byte EBML IDs, 2 1-byte EBML sizes, 8-byte uint max

Definition at line 109 of file matroskaenc.c.

Referenced by mkv_write_cues().

#define MAX_CUETRACKPOS_SIZE   22

per-cuepoint-track - 3 1-byte EBML IDs, 3 1-byte EBML sizes, 2 8-byte uint max

Definition at line 106 of file matroskaenc.c.

Referenced by mkv_write_cues().

#define MAX_SEEKENTRY_SIZE   21

2 bytes * 3 for EBML IDs, 3 1-byte EBML lengths, 8 bytes for 64 bit offset, 4 bytes for target EBML ID

Definition at line 102 of file matroskaenc.c.

Referenced by mkv_start_seekhead(), and mkv_write_seekhead().

#define MODE_MATROSKAv2   0x01

Definition at line 76 of file matroskaenc.c.

Referenced by mkv_write_header().

#define MODE_WEBM   0x02

Definition at line 77 of file matroskaenc.c.

Referenced by mkv_write_header(), and mkv_write_tracks().


Function Documentation

static int ass_get_duration ( const uint8_t p  )  [static]

Definition at line 1008 of file matroskaenc.c.

Referenced by mkv_write_ass_blocks().

static int ebml_id_size ( unsigned int  id  )  [static]

Definition at line 112 of file matroskaenc.c.

Referenced by mkv_write_seekhead(), and put_ebml_id().

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 140 of file matroskaenc.c.

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

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

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

Definition at line 447 of file matroskaenc.c.

Referenced by mkv_write_tracks().

static int mkv_add_cuepoint ( mkv_cues cues,
int  stream,
int64_t  ts,
int64_t  cluster_pos 
) [static]

Definition at line 367 of file matroskaenc.c.

Referenced by mkv_write_packet_internal().

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

static int mkv_blockgroup_size ( int  pkt_size  )  [static]

static int mkv_copy_packet ( MatroskaMuxContext mkv,
const AVPacket pkt 
) [static]

Definition at line 1205 of file matroskaenc.c.

Referenced by mkv_write_packet().

static void mkv_flush_dynbuf ( AVFormatContext s  )  [static]

Definition at line 1136 of file matroskaenc.c.

Referenced by mkv_write_packet(), and mkv_write_trailer().

static int mkv_query_codec ( enum AVCodecID  codec_id,
int  std_compliance 
) [static]

Definition at line 1312 of file matroskaenc.c.

static mkv_cues* mkv_start_cues ( int64_t  segment_offset  )  [static]

Definition at line 357 of file matroskaenc.c.

Referenced by mkv_write_header().

static mkv_seekhead* mkv_start_seekhead ( AVIOContext pb,
int64_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 265 of file matroskaenc.c.

Referenced by mkv_write_header().

static int mkv_write_ass_blocks ( AVFormatContext s,
AVIOContext pb,
AVPacket pkt 
) [static]

Definition at line 1021 of file matroskaenc.c.

Referenced by mkv_write_packet_internal().

static int mkv_write_attachments ( AVFormatContext s  )  [static]

Definition at line 833 of file matroskaenc.c.

Referenced by mkv_write_header().

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

Definition at line 1066 of file matroskaenc.c.

Referenced by mkv_write_packet_internal(), and mkv_write_srt_blocks().

static int mkv_write_chapters ( AVFormatContext s  )  [static]

Definition at line 693 of file matroskaenc.c.

Referenced by mkv_write_header().

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

Definition at line 461 of file matroskaenc.c.

Referenced by mkv_write_tracks().

static int64_t mkv_write_cues ( AVIOContext pb,
mkv_cues cues,
int  num_tracks 
) [static]

Definition at line 386 of file matroskaenc.c.

Referenced by mkv_write_trailer().

static int mkv_write_header ( AVFormatContext s  )  [static]

Definition at line 895 of file matroskaenc.c.

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

Definition at line 1218 of file matroskaenc.c.

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

Definition at line 1151 of file matroskaenc.c.

Referenced by mkv_write_packet(), and mkv_write_trailer().

static int64_t mkv_write_seekhead ( AVIOContext 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, -1 if an error occurred.

Definition at line 313 of file matroskaenc.c.

Referenced by mkv_write_header(), and mkv_write_trailer().

static void mkv_write_simpletag ( AVIOContext pb,
AVDictionaryEntry t 
) [static]

Definition at line 737 of file matroskaenc.c.

Referenced by mkv_write_tag().

static int mkv_write_srt_blocks ( AVFormatContext s,
AVIOContext pb,
AVPacket pkt 
) [static]

Definition at line 1120 of file matroskaenc.c.

Referenced by mkv_write_packet_internal().

static int mkv_write_tag ( AVFormatContext s,
AVDictionary m,
unsigned int  elementid,
unsigned int  uid,
ebml_master tags 
) [static]

Definition at line 767 of file matroskaenc.c.

Referenced by mkv_write_tags().

static int mkv_write_tags ( AVFormatContext s  )  [static]

Definition at line 796 of file matroskaenc.c.

Referenced by mkv_write_header().

static int mkv_write_tracks ( AVFormatContext s  )  [static]

Definition at line 527 of file matroskaenc.c.

Referenced by mkv_write_header().

static int mkv_write_trailer ( AVFormatContext s  )  [static]

Definition at line 1260 of file matroskaenc.c.

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

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

Definition at line 184 of file matroskaenc.c.

Referenced by mkv_write_tracks(), and mkv_write_trailer().

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

static void put_ebml_num ( AVIOContext 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 153 of file matroskaenc.c.

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

static void put_ebml_size_unknown ( AVIOContext 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 129 of file matroskaenc.c.

Referenced by start_ebml_master().

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

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

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

Write 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 210 of file matroskaenc.c.

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

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

Definition at line 419 of file matroskaenc.c.

Referenced by mkv_write_codecprivate().

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

Definition at line 246 of file matroskaenc.c.

Referenced by put_xiph_codecpriv().

static int srt_get_duration ( uint8_t **  buf  )  [static]

Definition at line 1101 of file matroskaenc.c.

Referenced by mkv_write_srt_blocks().

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


Generated on Fri Oct 26 02:50:11 2012 for FFmpeg by  doxygen 1.5.8