avcodec_decode_video2 should return the number of bytes used if frame decompressed correctly the current gif decoder just returns the number of bytes of header part of one frame, not including the lzw compressed image data bytes, which should be included too
as one avpacket may contain multiple picture frame the following usecase will fail on the second call of decode function (nused is smaller than expected for gif animation) // pkt is a valid AVPacket from av_read_frame loop while (pkt.size > 0) { int nused = avcodec_decode_video2( ..... ); if (nused < 0) { // deocde error } ...... // process here ...... pkt.data += nused; pkt.size -= nused; } best wishes nihui At 2015-11-07 22:35:06, "Paul B Mahol" <one...@gmail.com> wrote: >On 11/7/15, Ni Hui <shuizhuyuan...@126.com> wrote: >> fix the return code value of avcodec_decode_video2 for gif decoding, which >> should be the consumed data length. >> >> --- >> libavcodec/gifdec.c | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/libavcodec/gifdec.c b/libavcodec/gifdec.c >> index 9f2e6eb..5bcb176 100644 >> --- a/libavcodec/gifdec.c >> +++ b/libavcodec/gifdec.c >> @@ -295,6 +295,8 @@ static int gif_read_image(GifState *s, AVFrame *frame) >> /* read the garbage data until end marker is found */ >> ff_lzw_decode_tail(s->lzw); >> >> + bytestream2_skipu(&s->gb, bytestream2_get_bytes_left(&s->gb)); >> + >> /* Graphic Control Extension's scope is single frame. >> * Remove its influence. */ >> s->transparent_color_index = -1; >> -- >> 2.4.1 >> >> >> _______________________________________________ >> ffmpeg-devel mailing list >> ffmpeg-devel@ffmpeg.org >> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel >> > >Are there files this actually fixes? _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel