1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
From 1f5593ff0a2d9fee94fe39aa52fb8a81d7383ebb Mon Sep 17 00:00:00 2001
From: John Stebbins <stebbins@jetheaddev.com>
Date: Wed, 11 Jan 2017 12:17:06 -0700
Subject: [PATCH] dv: Don't return EIO upon EOF
---
libavformat/dv.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/libavformat/dv.c b/libavformat/dv.c
index d4e5180..7e52e42 100644
--- a/libavformat/dv.c
+++ b/libavformat/dv.c
@@ -478,7 +478,7 @@ static int dv_read_header(AVFormatContext *s)
static int dv_read_packet(AVFormatContext *s, AVPacket *pkt)
{
- int size;
+ int size, result;
RawDVContext *c = s->priv_data;
size = avpriv_dv_get_packet(c->dv_demux, pkt);
@@ -487,7 +487,10 @@ static int dv_read_packet(AVFormatContext *s, AVPacket *pkt)
if (!c->dv_demux->sys)
return AVERROR(EIO);
size = c->dv_demux->sys->frame_size;
- if (avio_read(s->pb, c->buf, size) <= 0)
+ result = avio_read(s->pb, c->buf, size);
+ if (result == AVERROR_EOF)
+ return result;
+ if (result <= 0)
return AVERROR(EIO);
size = avpriv_dv_produce_packet(c->dv_demux, pkt, c->buf, size);
--
2.9.3
|