diff options
author | David Conrad <lessen42@gmail.com> | 2007-09-05 00:24:03 +0000 |
---|---|---|
committer | David Conrad <lessen42@gmail.com> | 2007-09-05 00:24:03 +0000 |
commit | 4b8f58eea507e70fecc31717b909fc387e7a9ded (patch) | |
tree | 565e4085961be638d111da895d83fc25b9c46221 /libavformat/matroskaenc.c | |
parent | 80380a0f712aeedd84ee6be913307253b58012dd (diff) | |
download | ffmpeg-4b8f58eea507e70fecc31717b909fc387e7a9ded.tar.gz |
Write segment UID
Originally committed as revision 10337 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/matroskaenc.c')
-rw-r--r-- | libavformat/matroskaenc.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 703a05d734..5247c5350c 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -20,6 +20,7 @@ */ #include "avformat.h" +#include "random.h" #include "riff.h" #include "xiph.h" #include "matroska.h" @@ -61,6 +62,8 @@ typedef struct MatroskaMuxContext { mkv_seekhead *main_seekhead; mkv_seekhead *cluster_seekhead; mkv_cues *cues; + + AVRandomState rand_state; } MatroskaMuxContext; static void put_ebml_id(ByteIOContext *pb, unsigned int id) @@ -507,6 +510,9 @@ static int mkv_write_header(AVFormatContext *s) MatroskaMuxContext *mkv = s->priv_data; ByteIOContext *pb = &s->pb; offset_t ebml_header, segment_info; + int i; + + av_init_random(av_gettime(), &mkv->rand_state); ebml_header = start_ebml_master(pb, EBML_ID_HEADER); put_ebml_uint (pb, EBML_ID_EBMLVERSION , 1); @@ -536,11 +542,16 @@ static int mkv_write_header(AVFormatContext *s) if (strlen(s->title)) put_ebml_string(pb, MATROSKA_ID_TITLE, s->title); if (!(s->streams[0]->codec->flags & CODEC_FLAG_BITEXACT)) { + uint8_t segmentuid[16]; + for (i = 0; i < 16; i++) + segmentuid[i] = av_random(&mkv->rand_state); + put_ebml_string(pb, MATROSKA_ID_MUXINGAPP , LIBAVFORMAT_IDENT); put_ebml_string(pb, MATROSKA_ID_WRITINGAPP, LIBAVFORMAT_IDENT); put_ebml_date (pb, MATROSKA_ID_DATEUTC , av_gettime() ); + put_ebml_binary(pb, MATROSKA_ID_SEGMENTUID, segmentuid, 16); } - // XXX: segment UID + // reserve space for the duration mkv->duration = 0; mkv->duration_offset = url_ftell(pb); |