|
@@ -553,12 +553,17 @@ static int dv_read_packet(AVFormatContext *s, AVPacket *pkt) |
|
|
size = avpriv_dv_get_packet(c->dv_demux, pkt); |
|
|
size = avpriv_dv_get_packet(c->dv_demux, pkt); |
|
|
|
|
|
|
|
|
if (size < 0) { |
|
|
if (size < 0) { |
|
|
|
|
|
int ret; |
|
|
int64_t pos = avio_tell(s->pb); |
|
|
int64_t pos = avio_tell(s->pb); |
|
|
if (!c->dv_demux->sys) |
|
|
if (!c->dv_demux->sys) |
|
|
return AVERROR(EIO); |
|
|
return AVERROR(EIO); |
|
|
size = c->dv_demux->sys->frame_size; |
|
|
size = c->dv_demux->sys->frame_size; |
|
|
if (avio_read(s->pb, c->buf, size) <= 0) |
|
|
|
|
|
|
|
|
ret = avio_read(s->pb, c->buf, size); |
|
|
|
|
|
if (ret < 0) { |
|
|
|
|
|
return ret; |
|
|
|
|
|
} else if (ret == 0) { |
|
|
return AVERROR(EIO); |
|
|
return AVERROR(EIO); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
size = avpriv_dv_produce_packet(c->dv_demux, pkt, c->buf, size, pos); |
|
|
size = avpriv_dv_produce_packet(c->dv_demux, pkt, c->buf, size, pos); |
|
|
} |
|
|
} |
|
|