[FFmpeg-cvslog] avformat/av1dec: fix return value on some code paths

James Almer git at videolan.org
Fri Aug 14 06:22:55 EEST 2020


ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Fri Aug 14 00:09:43 2020 -0300| [a762fd2c1b7fe4f0140ed297321b307f9527f929] | committer: James Almer

avformat/av1dec: fix return value on some code paths

If avio_read() returns a value of bytes read that's lower than the
expected, return an error instead. And when there are zero bytes in
the prefetch buffer, return 0 in order for the frame merge bsf to
drain all potentially buffered packets.

Missed by mistake when amending and committing 9a7bdb6d71.

Signed-off-by: James Almer <jamrial at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a762fd2c1b7fe4f0140ed297321b307f9527f929
---

 libavformat/av1dec.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavformat/av1dec.c b/libavformat/av1dec.c
index ee5b0fd0fc..0693e40ac1 100644
--- a/libavformat/av1dec.c
+++ b/libavformat/av1dec.c
@@ -411,7 +411,7 @@ static int obu_read_data(AVFormatContext *s, AVPacket *pkt, int len)
         ret = avio_read(s->pb, pkt->data + size, left);
         if (ret != left) {
             av_log(c, AV_LOG_ERROR, "Failed to read %d frome file\n", left);
-            return ret;
+            return ret < 0 ? ret : AVERROR_INVALIDDATA;
         }
     }
     return 0;
@@ -426,7 +426,7 @@ static int obu_get_packet(AVFormatContext *s, AVPacket *pkt)
 
     ret = obu_prefetch(s, header);
     if (!ret)
-        return AVERROR(EOF);
+        return 0;
 
     ret = read_obu_with_size(header, ret, &obu_size, &type);
     if (ret < 0) {



More information about the ffmpeg-cvslog mailing list