Wouldn't it be better to set the AVLFG in the MatroskaMuxContext in mkv_init and keep using it when needed ?
Then you can still update UIDs in the location you really need to create them. > On April 5, 2020 5:59 PM Andreas Rheinhardt <andreas.rheinha...@gmail.com> > wrote: > > > This commit reuses the random seed generated in mkv_init() (to determine > the TrackUIDs) for the SegmentUID in order to avoid a potentially > expensive call to av_get_random_seed(). > > Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@gmail.com> > --- > libavformat/matroskaenc.c | 19 +++++++++---------- > 1 file changed, 9 insertions(+), 10 deletions(-) > > diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c > index d2046193ee..b93c50cb01 100644 > --- a/libavformat/matroskaenc.c > +++ b/libavformat/matroskaenc.c > @@ -161,6 +161,8 @@ typedef struct MatroskaMuxContext { > int wrote_chapters; > > int allow_raw_vfw; > + > + uint32_t segment_uid[4]; > } MatroskaMuxContext; > > /** 2 bytes * 7 for EBML IDs, 7 1-byte EBML lengths, 6 1-byte uint, > @@ -1821,15 +1823,7 @@ static int mkv_write_header(AVFormatContext *s) > put_ebml_string(pb, MATROSKA_ID_WRITINGAPP, LIBAVFORMAT_IDENT); > > if (mkv->mode != MODE_WEBM) { > - uint32_t segment_uid[4]; > - AVLFG lfg; > - > - av_lfg_init(&lfg, av_get_random_seed()); > - > - for (i = 0; i < 4; i++) > - segment_uid[i] = av_lfg_get(&lfg); > - > - put_ebml_binary(pb, MATROSKA_ID_SEGMENTUID, segment_uid, 16); > + put_ebml_binary(pb, MATROSKA_ID_SEGMENTUID, mkv->segment_uid, > 16); > } > } else { > const char *ident = "Lavf"; > @@ -2661,9 +2655,14 @@ static int mkv_init(struct AVFormatContext *s) > return AVERROR(ENOMEM); > } > > - if (!(s->flags & AVFMT_FLAG_BITEXACT)) > + if (!(s->flags & AVFMT_FLAG_BITEXACT)) { > av_lfg_init(&c, av_get_random_seed()); > > + // Calculate the SegmentUID now in order not to waste our random > seed. > + for (i = 0; i < 4; i++) > + mkv->segment_uid[i] = av_lfg_get(&c); > + } > + > for (i = 0; i < s->nb_streams; i++) { > mkv_track *track = &mkv->tracks[i]; > > -- > 2.20.1 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".