summaryrefslogtreecommitdiff
path: root/src/lib/video_decoder.h
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2016-01-24 23:40:32 +0000
committerCarl Hetherington <cth@carlh.net>2016-01-24 23:40:32 +0000
commitd217a16d41dd71c921fa2155e068df7cca11f457 (patch)
tree94de8c703a5133c35a68b794b42673b3fdfdc832 /src/lib/video_decoder.h
parentaccc190af4322fb3d75eaa6958d1e80eef867aba (diff)
Stop trying to get frames from a video source when an attempt
to get an earlier frame has already failed because the decoder said it has no more data. Before this the VideoDecoder would repeatedly seek to try to get a frame which does not exist. This happens when the header of a file is wrong, it would seem; in the file that triggered the bug the header (as read by DoM or ffprobe) has a length of 137275 frames but the last frame in the file (according to DoM or ffprobe -show_frames) is 136207 (44.5s earlier).
Diffstat (limited to 'src/lib/video_decoder.h')
-rw-r--r--src/lib/video_decoder.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/lib/video_decoder.h b/src/lib/video_decoder.h
index 42cfc4906..af24b93bc 100644
--- a/src/lib/video_decoder.h
+++ b/src/lib/video_decoder.h
@@ -70,9 +70,12 @@ protected:
boost::shared_ptr<Image> _black_image;
boost::optional<ContentTime> _last_seek_time;
bool _last_seek_accurate;
-
/** true if this decoder should ignore all video; i.e. never produce any */
bool _ignore_video;
+ /** if set, this is a frame for which we got no data because the Decoder said
+ * it has no more to give.
+ */
+ boost::optional<Frame> _no_data_frame;
};
#endif