FFmpeg
|
#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/sha.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 |
Macros | |
#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 More... | |
#define | MAX_CUETRACKPOS_SIZE 22 |
per-cuepoint-track - 3 1-byte EBML IDs, 3 1-byte EBML sizes, 2 8-byte uint max More... | |
#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 More... | |
Typedefs | |
typedef struct ebml_master | ebml_master |
typedef struct mkv_seekhead_entry | mkv_seekhead_entry |
typedef struct mkv_seekhead | mkv_seekhead |
typedef struct MatroskaMuxContext | MatroskaMuxContext |
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". More... | |
static int | ebml_num_size (uint64_t num) |
Calculate how many bytes are needed to represent a given number in EBML. More... | |
static void | put_ebml_num (AVIOContext *pb, uint64_t num, int bytes) |
Write a number in EBML variable length format. More... | |
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. More... | |
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_seekhead * | mkv_start_seekhead (AVIOContext *pb, int64_t segment_offset, int numelements) |
Initialize a mkv_seekhead element to be ready to index level 1 Matroska elements. More... | |
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. More... | |
static mkv_cues * | mkv_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, mkv_track *tracks, 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 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_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) |
Variables | |
const AVCodecTag | additional_audio_tags [] |
const AVCodecTag | additional_video_tags [] |
Macro Definition 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 110 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 107 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 103 of file matroskaenc.c.
Referenced by mkv_start_seekhead(), and mkv_write_seekhead().
#define MODE_MATROSKAv2 0x01 |
Definition at line 78 of file matroskaenc.c.
Referenced by mkv_write_header().
#define MODE_WEBM 0x02 |
Definition at line 79 of file matroskaenc.c.
Referenced by mkv_write_header(), and mkv_write_tracks().
Typedef Documentation
typedef struct ebml_master ebml_master |
typedef struct MatroskaMuxContext MatroskaMuxContext |
typedef struct mkv_seekhead mkv_seekhead |
typedef struct mkv_seekhead_entry mkv_seekhead_entry |
Function Documentation
|
static |
Definition at line 1062 of file matroskaenc.c.
|
static |
Definition at line 113 of file matroskaenc.c.
Referenced by mkv_write_seekhead(), and put_ebml_id().
|
static |
Calculate how many bytes are needed to represent a given number in EBML.
Definition at line 141 of file matroskaenc.c.
Referenced by mkv_blockgroup_size(), put_ebml_num(), and start_ebml_master().
|
static |
Definition at line 237 of file matroskaenc.c.
Referenced by ass_get_duration(), mkv_write_attachments(), mkv_write_chapters(), mkv_write_cues(), mkv_write_header(), mkv_write_packet(), mkv_write_packet_internal(), mkv_write_seekhead(), mkv_write_simpletag(), mkv_write_srt_blocks(), mkv_write_tag(), mkv_write_tags(), mkv_write_tracks(), and mkv_write_trailer().
|
static |
Definition at line 455 of file matroskaenc.c.
Referenced by mkv_write_tracks().
|
static |
Definition at line 368 of file matroskaenc.c.
Referenced by mkv_write_packet_internal().
|
static |
Definition at line 286 of file matroskaenc.c.
Referenced by mkv_write_attachments(), mkv_write_chapters(), mkv_write_header(), mkv_write_tag(), mkv_write_tracks(), and mkv_write_trailer().
|
static |
Definition at line 1051 of file matroskaenc.c.
Referenced by ass_get_duration(), mkv_write_packet_internal(), and mkv_write_srt_blocks().
|
static |
Definition at line 1192 of file matroskaenc.c.
Referenced by mkv_write_packet(), and mkv_write_trailer().
|
static |
Definition at line 1362 of file matroskaenc.c.
|
static |
Definition at line 358 of file matroskaenc.c.
Referenced by mkv_write_header().
|
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 266 of file matroskaenc.c.
Referenced by mkv_write_header().
|
static |
Definition at line 855 of file matroskaenc.c.
Referenced by mkv_write_header().
|
static |
Definition at line 1122 of file matroskaenc.c.
Referenced by mkv_write_packet_internal(), and mkv_write_srt_blocks().
|
static |
Definition at line 715 of file matroskaenc.c.
Referenced by mkv_write_header().
|
static |
Definition at line 469 of file matroskaenc.c.
Referenced by mkv_write_tracks().
|
static |
Definition at line 387 of file matroskaenc.c.
Referenced by mkv_write_trailer().
|
static |
Definition at line 934 of file matroskaenc.c.
|
static |
Definition at line 1267 of file matroskaenc.c.
|
static |
Definition at line 1207 of file matroskaenc.c.
Referenced by mkv_write_packet(), and mkv_write_trailer().
|
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 314 of file matroskaenc.c.
Referenced by mkv_write_header(), and mkv_write_trailer().
|
static |
Definition at line 759 of file matroskaenc.c.
Referenced by mkv_write_tag().
|
static |
Definition at line 1176 of file matroskaenc.c.
Referenced by mkv_write_packet_internal().
|
static |
Definition at line 789 of file matroskaenc.c.
Referenced by mkv_write_tags().
|
static |
Definition at line 818 of file matroskaenc.c.
Referenced by mkv_write_header().
|
static |
Definition at line 537 of file matroskaenc.c.
Referenced by mkv_write_header().
|
static |
Definition at line 1311 of file matroskaenc.c.
|
static |
Definition at line 192 of file matroskaenc.c.
Referenced by mkv_write_attachments(), mkv_write_codecprivate(), mkv_write_header(), mkv_write_tracks(), and put_ebml_string().
|
static |
Definition at line 185 of file matroskaenc.c.
Referenced by mkv_write_tracks(), and mkv_write_trailer().
|
static |
Definition at line 118 of file matroskaenc.c.
Referenced by ass_get_duration(), mkv_write_block(), mkv_write_seekhead(), put_ebml_binary(), put_ebml_float(), put_ebml_uint(), put_ebml_void(), and start_ebml_master().
|
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 154 of file matroskaenc.c.
Referenced by ass_get_duration(), end_ebml_master(), mkv_write_block(), mkv_write_seekhead(), put_ebml_binary(), put_ebml_float(), put_ebml_uint(), and put_ebml_void().
|
static |
Write an EBML size meaning "unknown size".
- Parameters
-
bytes The number of bytes the size should occupy (maximum: 8).
Definition at line 130 of file matroskaenc.c.
Referenced by start_ebml_master().
|
static |
Definition at line 200 of file matroskaenc.c.
Referenced by mkv_write_attachments(), mkv_write_chapters(), mkv_write_header(), mkv_write_simpletag(), and mkv_write_tracks().
|
static |
Definition at line 173 of file matroskaenc.c.
Referenced by ass_get_duration(), mkv_write_attachments(), mkv_write_chapters(), mkv_write_cues(), mkv_write_header(), mkv_write_packet_internal(), mkv_write_seekhead(), mkv_write_srt_blocks(), mkv_write_tag(), and mkv_write_tracks().
|
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 211 of file matroskaenc.c.
Referenced by mkv_start_seekhead(), mkv_write_header(), and mkv_write_seekhead().
|
static |
Definition at line 427 of file matroskaenc.c.
Referenced by mkv_write_codecprivate().
|
static |
Definition at line 247 of file matroskaenc.c.
Referenced by put_xiph_codecpriv().
|
static |
Definition at line 1157 of file matroskaenc.c.
Referenced by mkv_write_srt_blocks().
|
static |
Definition at line 229 of file matroskaenc.c.
Referenced by ass_get_duration(), mkv_write_attachments(), mkv_write_chapters(), mkv_write_cues(), mkv_write_header(), mkv_write_packet_internal(), mkv_write_seekhead(), mkv_write_simpletag(), mkv_write_srt_blocks(), mkv_write_tag(), and mkv_write_tracks().
Variable Documentation
const AVCodecTag additional_audio_tags[] |
Definition at line 1378 of file matroskaenc.c.
const AVCodecTag additional_video_tags[] |
Definition at line 1395 of file matroskaenc.c.
Generated on Fri Dec 20 2024 06:56:14 for FFmpeg by 1.8.11