Don't crash if the first packet in a stream has AV_NOPTS_VALUE;
authorCarl Hetherington <cth@carlh.net>
Wed, 14 Oct 2020 19:24:57 +0000 (21:24 +0200)
committerCarl Hetherington <cth@carlh.net>
Wed, 14 Oct 2020 19:50:52 +0000 (21:50 +0200)
instead, assume it should be at timestamp 0.

Backported-from-commit: d7a3d94ec307a03ebe3fcf239ba991e9a3c1b8b8
Backported-from-branch: v2.15.x

src/lib/ffmpeg_decoder.cc

index f5af0628e213f031f845d728193c97da55943138..69f366aade4e86f0e704a8041d4f781686823ed6 100644 (file)
@@ -451,12 +451,14 @@ FFmpegDecoder::decode_audio_packet ()
                        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) *