mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-26 19:01:44 +02:00
avformat/wtvdec: Forward errors when reading packet
wtvfile_read_packet did not abide by the requirements of an AVIOContext's read_packet-function: If it did not read anything, it returned zero, which currently leads to a warning in read_packet_wrapper in aviobuf.c. Said warning will be an av_assert2 as soon as FF_API_OLD_AVIO_EOF_0 is zero (probably the next major version bump). So instead forward the error code from the underlying protocol. This error/assert is triggered in the wtv-demux FATE test. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> Reviewed-by: Peter Ross <pross@xvid.org> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
b4a4aadfaf
commit
acbd950ed2
@ -71,7 +71,7 @@ static int wtvfile_read_packet(void *opaque, uint8_t *buf, int buf_size)
|
||||
{
|
||||
WtvFile *wf = opaque;
|
||||
AVIOContext *pb = wf->pb_filesystem;
|
||||
int nread = 0;
|
||||
int nread = 0, n = 0;
|
||||
|
||||
if (wf->error || pb->error)
|
||||
return -1;
|
||||
@ -80,7 +80,6 @@ static int wtvfile_read_packet(void *opaque, uint8_t *buf, int buf_size)
|
||||
|
||||
buf_size = FFMIN(buf_size, wf->length - wf->position);
|
||||
while(nread < buf_size) {
|
||||
int n;
|
||||
int remaining_in_sector = (1 << wf->sector_bits) - (wf->position & ((1 << wf->sector_bits) - 1));
|
||||
int read_request = FFMIN(buf_size - nread, remaining_in_sector);
|
||||
|
||||
@ -100,7 +99,7 @@ static int wtvfile_read_packet(void *opaque, uint8_t *buf, int buf_size)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nread;
|
||||
return nread ? nread : n;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user