Thank you for the review. I have left the encoded value as 64 bits and split the patch into two in the v2 just sent: one for the decoder change in field size, and one for the encoder comments.
On Tue, 2019-10-01 at 14:25 -0300, James Almer wrote: > On 10/1/2019 2:05 PM, Raphaël Zumer wrote: > > Signed-off-by: Raphaël Zumer <rzu...@tebako.net> > > --- > > libavformat/ivfdec.c | 3 ++- > > libavformat/ivfenc.c | 5 +++-- > > 2 files changed, 5 insertions(+), 3 deletions(-) > > > > diff --git a/libavformat/ivfdec.c b/libavformat/ivfdec.c > > index 40ae464b76..2fdb6f5a04 100644 > > --- a/libavformat/ivfdec.c > > +++ b/libavformat/ivfdec.c > > @@ -53,7 +53,8 @@ static int read_header(AVFormatContext *s) > > st->codecpar->height = avio_rl16(s->pb); > > time_base.den = avio_rl32(s->pb); > > time_base.num = avio_rl32(s->pb); > > - st->duration = avio_rl64(s->pb); > > + st->duration = avio_rl32(s->pb); > > + avio_rl32(s->pb); // unused > > avio_skip(s->pb, 4); > > This part is good either way. > > > > > st->need_parsing = AVSTREAM_PARSE_HEADERS; > > > > diff --git a/libavformat/ivfenc.c b/libavformat/ivfenc.c > > index adf72117e9..e135a78213 100644 > > --- a/libavformat/ivfenc.c > > +++ b/libavformat/ivfenc.c > > @@ -53,7 +53,7 @@ static int ivf_write_header(AVFormatContext *s) > > avio_wl16(pb, par->height); > > avio_wl32(pb, s->streams[0]->time_base.den); > > avio_wl32(pb, s->streams[0]->time_base.num); > > - avio_wl64(pb, 0xFFFFFFFFFFFFFFFFULL); > > + avio_wl64(pb, 0xFFFFFFFFFFFFFFFFULL); // length is overwritten > > at the end of muxing > > > > return 0; > > } > > @@ -83,7 +83,8 @@ static int ivf_write_trailer(AVFormatContext *s) > > size_t end = avio_tell(pb); > > > > avio_seek(pb, 24, SEEK_SET); > > - avio_wl64(pb, ctx->frame_cnt * ctx->sum_delta_pts / (ctx- > > >frame_cnt - 1)); > > + // overwrite the "length" field (duration) > > + avio_wl32(pb, ctx->frame_cnt * ctx->sum_delta_pts / (ctx- > > >frame_cnt - 1)); > > The value in the unused field will be 0xFFFFFFFF after this change > instead of 0, since you're writing 32 bits as duration instead of 64 > where the high 32 bits (corresponding to the unused field) are > zeroed. > That means the ivf demuxer prior to this patch will read bogus > duration > values from ivf files created after this patch. > > Just leave the muxer as is. > > > avio_seek(pb, end, SEEK_SET); > > } > > > > > > _______________________________________________ > 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".