Browse Source

avformat/avidec: Move packet skip after prefix and related checks

This fixes loosing packets
Fixes: big.avi

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
tags/n3.4
Michael Niedermayer 8 years ago
parent
commit
511e10f673
1 changed files with 12 additions and 13 deletions
  1. +12
    -13
      libavformat/avidec.c

+ 12
- 13
libavformat/avidec.c View File

@@ -1265,19 +1265,6 @@ start_sync:
}
}

if (!avi->dv_demux &&
((st->discard >= AVDISCARD_DEFAULT && size == 0) /* ||
// FIXME: needs a little reordering
(st->discard >= AVDISCARD_NONKEY &&
!(pkt->flags & AV_PKT_FLAG_KEY)) */
|| st->discard >= AVDISCARD_ALL)) {
if (!exit_early) {
ast->frame_offset += get_duration(ast, size);
avio_skip(pb, size);
goto start_sync;
}
}

if (d[2] == 'p' && d[3] == 'c' && size <= 4 * 256 + 4) {
int k = avio_r8(pb);
int last = (k + avio_r8(pb) - 1) & 0xFF;
@@ -1304,6 +1291,18 @@ start_sync:
ast->prefix_count = 0;
}

if (!avi->dv_demux &&
((st->discard >= AVDISCARD_DEFAULT && size == 0) /* ||
// FIXME: needs a little reordering
(st->discard >= AVDISCARD_NONKEY &&
!(pkt->flags & AV_PKT_FLAG_KEY)) */
|| st->discard >= AVDISCARD_ALL)) {

ast->frame_offset += get_duration(ast, size);
avio_skip(pb, size);
goto start_sync;
}

avi->stream_index = n;
ast->packet_size = size + 8;
ast->remaining = size;


Loading…
Cancel
Save