avi: Spin out the logic to position to the next non-interleaved stream
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
This commit is contained in:
parent
cb49bb10ca
commit
5f3a081b42
@ -1094,21 +1094,9 @@ start_sync:
|
|||||||
return AVERROR_EOF;
|
return AVERROR_EOF;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int avi_read_packet(AVFormatContext *s, AVPacket *pkt)
|
static int ni_prepare_read(AVFormatContext *s)
|
||||||
{
|
{
|
||||||
AVIContext *avi = s->priv_data;
|
AVIContext *avi = s->priv_data;
|
||||||
AVIOContext *pb = s->pb;
|
|
||||||
int err;
|
|
||||||
|
|
||||||
if (CONFIG_DV_DEMUXER && avi->dv_demux) {
|
|
||||||
int size = avpriv_dv_get_packet(avi->dv_demux, pkt);
|
|
||||||
if (size >= 0)
|
|
||||||
return size;
|
|
||||||
else
|
|
||||||
goto resync;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (avi->non_interleaved) {
|
|
||||||
int best_stream_index = 0;
|
int best_stream_index = 0;
|
||||||
AVStream *best_st = NULL;
|
AVStream *best_st = NULL;
|
||||||
AVIStream *best_ast;
|
AVIStream *best_ast;
|
||||||
@ -1171,6 +1159,28 @@ static int avi_read_packet(AVFormatContext *s, AVPacket *pkt)
|
|||||||
best_ast->packet_size =
|
best_ast->packet_size =
|
||||||
best_ast->remaining = best_st->index_entries[i].size;
|
best_ast->remaining = best_st->index_entries[i].size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int avi_read_packet(AVFormatContext *s, AVPacket *pkt)
|
||||||
|
{
|
||||||
|
AVIContext *avi = s->priv_data;
|
||||||
|
AVIOContext *pb = s->pb;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
if (CONFIG_DV_DEMUXER && avi->dv_demux) {
|
||||||
|
int size = avpriv_dv_get_packet(avi->dv_demux, pkt);
|
||||||
|
if (size >= 0)
|
||||||
|
return size;
|
||||||
|
else
|
||||||
|
goto resync;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (avi->non_interleaved) {
|
||||||
|
err = ni_prepare_read(s);
|
||||||
|
if (err < 0)
|
||||||
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
resync:
|
resync:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user