summaryrefslogtreecommitdiff
path: root/libavformat/nut.h
diff options
context:
space:
mode:
authorAndreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>2015-05-20 00:06:05 +0200
committerAndreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>2015-05-20 19:07:26 +0200
commit37e679881d364b6da817d829d35869d657218ab3 (patch)
tree10d2e98a4bd7f7a8913e447f3625f4f755c39795 /libavformat/nut.h
parentb6ca7bfc7c12356e9e33eeab0ee8bf7ec865b944 (diff)
nutdec: fix infinite resync loops
nut->last_syncpoint_pos doesn't necessarily change between resync attempts, so find_any_startcode can return the same startcode again. Thus remember where the last resync happened and don't try to resync before that. This can't be done locally in nut_read_packet, because this wouldn't prevent infinite resync loops, where after the resync a packet is returned and while reading a following packet the resync happens again. Reviewed-by: Michael Niedermayer <michaelni@gmx.at> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Diffstat (limited to 'libavformat/nut.h')
-rw-r--r--libavformat/nut.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/libavformat/nut.h b/libavformat/nut.h
index 943081caf6..0c678a51b9 100644
--- a/libavformat/nut.h
+++ b/libavformat/nut.h
@@ -102,6 +102,7 @@ typedef struct NUTContext {
unsigned int max_distance;
unsigned int time_base_count;
int64_t last_syncpoint_pos;
+ int64_t last_resync_pos;
int header_count;
AVRational *time_base;
struct AVTreeNode *syncpoints;