Don't select video streams for which we have no codec; warn in log about streams...
authorCarl Hetherington <cth@carlh.net>
Thu, 1 Feb 2018 22:54:50 +0000 (22:54 +0000)
committerCarl Hetherington <cth@carlh.net>
Thu, 1 Feb 2018 22:54:50 +0000 (22:54 +0000)
ChangeLog
src/lib/ffmpeg.cc

index 572d612510024a93e49bb90c1bd04a82ac2354a0..029066de3641f079c62f562dd19c46279b390153 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2018-02-01  Carl Hetherington  <cth@carlh.net>
 
+       * Don't try to use video streams for which we have no codec (#1184).
+
        * Updated nl_NL translation from Rob van Nieuwkerk.
 
        * Version 2.11.47 released.
index 2038d6a8590f2e6df8a2d9c7301ac92251be05c4..ac179e1d62df8ffa0830056b36a39e09447d697e 100644 (file)
@@ -144,7 +144,7 @@ FFmpeg::setup_general ()
 
        for (uint32_t i = 0; i < _format_context->nb_streams; ++i) {
                AVStream* s = _format_context->streams[i];
-               if (s->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
+               if (s->codec->codec_type == AVMEDIA_TYPE_VIDEO && avcodec_find_decoder(s->codec->codec_id)) {
                        if (s->avg_frame_rate.num > 0 && s->avg_frame_rate.den > 0) {
                                /* This is definitely our video stream */
                                _video_stream = i;
@@ -215,9 +215,12 @@ FFmpeg::setup_decoders ()
                        if (avcodec_open2 (context, codec, &options) < 0) {
                                throw DecodeError (N_("could not open decoder"));
                        }
+               } else {
+                       shared_ptr<Log> log = _ffmpeg_log.lock ();
+                       if (log) {
+                               log->log (String::compose ("No codec found for stream %1", i), LogEntry::TYPE_WARNING);
+                       }
                }
-
-               /* We are silently ignoring any failures to find suitable decoders here */
        }
 }