Mercurial > libavformat.hg
changeset 2468:9f5ae944ea07 libavformat
Write segment UID
author | conrad |
---|---|
date | Wed, 05 Sep 2007 00:24:03 +0000 |
parents | 12ec768e5166 |
children | 335446056965 |
files | matroskaenc.c |
diffstat | 1 files changed, 12 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/matroskaenc.c Wed Sep 05 00:24:01 2007 +0000 +++ b/matroskaenc.c Wed Sep 05 00:24:03 2007 +0000 @@ -20,6 +20,7 @@ */ #include "avformat.h" +#include "random.h" #include "riff.h" #include "xiph.h" #include "matroska.h" @@ -61,6 +62,8 @@ 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 @@ 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 @@ 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);