X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fffmpeg.cc;h=53829c5f2391919056b4248a368693b7fef1d640;hb=ad1ef39eda58b3a919ea3b7084401a0439409ec6;hp=5171166d5f0e9aeea6ea9ae60cbe5dd391cf79df;hpb=f508191f9d794e7762270d19a4211739470cfe0d;p=dcpomatic.git diff --git a/src/lib/ffmpeg.cc b/src/lib/ffmpeg.cc index 5171166d5..53829c5f2 100644 --- a/src/lib/ffmpeg.cc +++ b/src/lib/ffmpeg.cc @@ -24,6 +24,7 @@ #include "exceptions.h" #include "util.h" #include "log.h" +#include "dcpomatic_log.h" #include "ffmpeg_subtitle_stream.h" #include "ffmpeg_audio_stream.h" #include "digester.h" @@ -49,7 +50,6 @@ using boost::optional; using dcp::raw_convert; boost::mutex FFmpeg::_mutex; -boost::weak_ptr FFmpeg::_ffmpeg_log; FFmpeg::FFmpeg (boost::shared_ptr c) : _ffmpeg_content (c) @@ -97,14 +97,9 @@ FFmpeg::ffmpeg_log_callback (void* ptr, int level, const char* fmt, va_list vl) char line[1024]; static int prefix = 0; av_log_format_line (ptr, level, fmt, vl, line, sizeof (line), &prefix); - shared_ptr log = _ffmpeg_log.lock (); - if (log) { - string str (line); - boost::algorithm::trim (str); - log->log (String::compose ("FFmpeg: %1", str), LogEntry::TYPE_GENERAL); - } else { - cerr << line; - } + string str (line); + boost::algorithm::trim (str); + dcpomatic_log->log (String::compose ("FFmpeg: %1", str), LogEntry::TYPE_GENERAL); } void @@ -113,7 +108,6 @@ FFmpeg::setup_general () /* This might not work too well in some cases of multiple FFmpeg decoders, but it's probably good enough. */ - _ffmpeg_log = _ffmpeg_content->film()->log (); av_log_set_callback (FFmpeg::ffmpeg_log_callback); _file_group.set_paths (_ffmpeg_content->paths ()); @@ -128,6 +122,9 @@ FFmpeg::setup_general () */ av_dict_set (&options, "analyzeduration", raw_convert (5 * 60 * 1000000).c_str(), 0); av_dict_set (&options, "probesize", raw_convert (5 * 60 * 1000000).c_str(), 0); + if (_ffmpeg_content->decryption_key()) { + av_dict_set (&options, "decryption_key", _ffmpeg_content->decryption_key()->c_str(), 0); + } int e = avformat_open_input (&_format_context, 0, 0, &options); if (e < 0) { @@ -216,10 +213,7 @@ FFmpeg::setup_decoders () throw DecodeError (N_("could not open decoder")); } } else { - shared_ptr log = _ffmpeg_log.lock (); - if (log) { - log->log (String::compose ("No codec found for stream %1", i), LogEntry::TYPE_WARNING); - } + dcpomatic_log->log (String::compose ("No codec found for stream %1", i), LogEntry::TYPE_WARNING); } } }