ffmpeg: Fix integer overflow with cur_dts being AV_NOPTS_VALUE
authorMichael Niedermayer <michael@niedermayer.cc>
Wed, 11 Nov 2015 16:19:12 +0000 (17:19 +0100)
committerMichael Niedermayer <michael@niedermayer.cc>
Wed, 11 Nov 2015 16:46:19 +0000 (17:46 +0100)
Since de0e219a8aba72de201e85385c746cd1c04be1a2 cur_dts is sometimes invalid

ffmpeg.c

index 438175b..3341777 100644 (file)
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -3382,8 +3382,12 @@ static OutputStream *choose_output(void)
 
     for (i = 0; i < nb_output_streams; i++) {
         OutputStream *ost = output_streams[i];
-        int64_t opts = av_rescale_q(ost->st->cur_dts, ost->st->time_base,
+        int64_t opts = ost->st->cur_dts == AV_NOPTS_VALUE ? INT64_MIN :
+                       av_rescale_q(ost->st->cur_dts, ost->st->time_base,
                                     AV_TIME_BASE_Q);
+        if (ost->st->cur_dts == AV_NOPTS_VALUE)
+            av_log(NULL, AV_LOG_DEBUG, "cur_dts is invalid (this is harmless if it occurs once at the start per stream)\n");
+
         if (!ost->finished && opts < opts_min) {
             opts_min = opts;
             ost_min  = ost->unavailable ? NULL : ost;