Andreas Rheinhardt: > An AVStream's codecpar is supposed to be filled by the caller before > avformat_write_header(); if the CodecParameters change, the caller > should signal this via packet side data, but not touch the AVStream's > codecpar. > > The FLAC muxer checks for packet side data containing updated extradata, > yet if nothing has arrived by the time the trailer is written, the > already written extradata is overwritten by the very same extradata > again, unless the output is unseekable, in which case a warning that the > FLAC header can't be rewritten is emitted. > > This commit changes this by only trying to rewrite the extradata if a > new streaminfo arrived via packet side data. Only then is a warning > emitted in case the output is unseekable. > > Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@gmail.com> > --- > libavformat/flacenc.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/libavformat/flacenc.c b/libavformat/flacenc.c > index 1aae0c97e0..42c1efec54 100644 > --- a/libavformat/flacenc.c > +++ b/libavformat/flacenc.c > @@ -331,8 +331,6 @@ static int flac_write_trailer(struct AVFormatContext *s) > AVIOContext *pb = s->pb; > int64_t file_size; > FlacMuxerContext *c = s->priv_data; > - uint8_t *streaminfo = c->streaminfo ? c->streaminfo : > - > s->streams[c->audio_stream_idx]->codecpar->extradata; > > if (c->waiting_pics) { > av_log(s, AV_LOG_WARNING, "No packets were sent for some of the " > @@ -340,14 +338,14 @@ static int flac_write_trailer(struct AVFormatContext *s) > flac_queue_flush(s); > } > > - if (!c->write_header || !streaminfo) > + if (!c->write_header || !c->streaminfo) > return 0; > > if (pb->seekable & AVIO_SEEKABLE_NORMAL) { > /* rewrite the STREAMINFO header block data */ > file_size = avio_tell(pb); > avio_seek(pb, 8, SEEK_SET); > - avio_write(pb, streaminfo, FLAC_STREAMINFO_SIZE); > + avio_write(pb, c->streaminfo, FLAC_STREAMINFO_SIZE); > avio_seek(pb, file_size, SEEK_SET); > } else { > av_log(s, AV_LOG_WARNING, "unable to rewrite FLAC header.\n"); > Will apply this tomorrow if there are no objections.
- Andreas _______________________________________________ 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".