summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2020-10-14 21:24:57 +0200
committerCarl Hetherington <cth@carlh.net>2020-10-14 21:24:57 +0200
commitd7a3d94ec307a03ebe3fcf239ba991e9a3c1b8b8 (patch)
tree428abb26dae09ce2f4dd5a56cd0658ccda759e24
parent9a3df0a97b7962c00726447a75599e34c632cb2b (diff)
Don't crash if the first packet in a stream has AV_NOPTS_VALUE;
instead, assume it should be at timestamp 0.
-rw-r--r--src/lib/ffmpeg_decoder.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/lib/ffmpeg_decoder.cc b/src/lib/ffmpeg_decoder.cc
index 79fce3027..3c0f48804 100644
--- a/src/lib/ffmpeg_decoder.cc
+++ b/src/lib/ffmpeg_decoder.cc
@@ -469,12 +469,14 @@ DCPOMATIC_DISABLE_WARNINGS
shared_ptr<AudioBuffers> data = deinterleave_audio (*stream);
ContentTime ct;
- if (_frame->pts == AV_NOPTS_VALUE && _next_time[stream_index]) {
+ if (_frame->pts == AV_NOPTS_VALUE) {
/* In some streams we see not every frame coming through with a timestamp; for those
that have AV_NOPTS_VALUE we need to work out the timestamp ourselves. This is
particularly noticeable with TrueHD streams (see #1111).
*/
- ct = *_next_time[stream_index];
+ if (_next_time[stream_index]) {
+ ct = *_next_time[stream_index];
+ }
} else {
ct = ContentTime::from_seconds (
av_frame_get_best_effort_timestamp (_frame) *