X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fffmpeg.cc;h=85c65763f146e12ac31f1b18dea24b1ceac8c74c;hp=8eb19816c0828b44b1dfc82bc030f19d37378ea5;hb=a5d004b0773f633401528392fc28e66d70e13ac8;hpb=95c48153421b1a6e0d7ca6cf5e67cd7623c03dc7 diff --git a/src/lib/ffmpeg.cc b/src/lib/ffmpeg.cc index 8eb19816c..85c65763f 100644 --- a/src/lib/ffmpeg.cc +++ b/src/lib/ffmpeg.cc @@ -27,7 +27,6 @@ #include "dcpomatic_log.h" #include "ffmpeg_subtitle_stream.h" #include "ffmpeg_audio_stream.h" -#include "decrypted_ecinema_kdm.h" #include "digester.h" #include "compose.hpp" #include "config.h" @@ -38,7 +37,6 @@ extern "C" { #include } #include -#include #include #include "i18n.h" @@ -47,14 +45,14 @@ using std::string; using std::cout; using std::cerr; using std::vector; -using boost::shared_ptr; +using std::shared_ptr; using boost::optional; using dcp::raw_convert; using namespace dcpomatic; boost::mutex FFmpeg::_mutex; -FFmpeg::FFmpeg (boost::shared_ptr c) +FFmpeg::FFmpeg (std::shared_ptr c) : _ffmpeg_content (c) , _avio_buffer (0) , _avio_buffer_size (4096) @@ -70,9 +68,11 @@ FFmpeg::~FFmpeg () { boost::mutex::scoped_lock lm (_mutex); +DCPOMATIC_DISABLE_WARNINGS for (uint32_t i = 0; i < _format_context->nb_streams; ++i) { avcodec_close (_format_context->streams[i]->codec); } +DCPOMATIC_ENABLE_WARNINGS av_frame_free (&_frame); avformat_close_input (&_format_context); @@ -126,13 +126,6 @@ FFmpeg::setup_general () _format_context->pb = _avio_context; AVDictionary* options = 0; -#ifdef DCPOMATIC_VARIANT_SWAROOP - if (_ffmpeg_content->kdm()) { - DecryptedECinemaKDM kdm (_ffmpeg_content->kdm().get(), Config::instance()->decryption_chain()->key().get()); - av_dict_set (&options, "decryption_key", kdm.key().hex().c_str(), 0); - } -#endif - int e = avformat_open_input (&_format_context, 0, 0, &options); if (e < 0) { throw OpenFileError (_ffmpeg_content->path(0).string(), e, OpenFileError::READ); @@ -146,6 +139,7 @@ FFmpeg::setup_general () optional video_stream_undefined_frame_rate; +DCPOMATIC_DISABLE_WARNINGS 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 && avcodec_find_decoder(s->codec->codec_id)) { @@ -158,6 +152,7 @@ FFmpeg::setup_general () } } } +DCPOMATIC_ENABLE_WARNINGS /* Files from iTunes sometimes have two video streams, one with the avg_frame_rate.num and .den set to zero. Only use such a stream if there is no alternative. @@ -204,6 +199,7 @@ FFmpeg::setup_decoders () { boost::mutex::scoped_lock lm (_mutex); +DCPOMATIC_DISABLE_WARNINGS for (uint32_t i = 0; i < _format_context->nb_streams; ++i) { AVCodecContext* context = _format_context->streams[i]->codec; @@ -230,8 +226,10 @@ FFmpeg::setup_decoders () dcpomatic_log->log (String::compose ("No codec found for stream %1", i), LogEntry::TYPE_WARNING); } } +DCPOMATIC_ENABLE_WARNINGS } +DCPOMATIC_DISABLE_WARNINGS AVCodecContext * FFmpeg::video_codec_context () const { @@ -251,6 +249,7 @@ FFmpeg::subtitle_codec_context () const return _ffmpeg_content->subtitle_stream()->stream(_format_context)->codec; } +DCPOMATIC_ENABLE_WARNINGS int FFmpeg::avio_read (uint8_t* buffer, int const amount) @@ -314,7 +313,7 @@ FFmpeg::pts_offset (vector > audio_streams, option po = - first_video.get (); } - BOOST_FOREACH (shared_ptr i, audio_streams) { + for (auto i: audio_streams) { if (i->first_audio) { po = max (po, - i->first_audio.get ()); }