std::shared_ptr
[dcpomatic.git] / src / lib / ffmpeg.cc
index 8eb19816c0828b44b1dfc82bc030f19d37378ea5..11a332bdb80c300b5e91478899aa00a9fdb15bf5 100644 (file)
@@ -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"
@@ -47,14 +46,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<const FFmpegContent> c)
+FFmpeg::FFmpeg (std::shared_ptr<const FFmpegContent> c)
        : _ffmpeg_content (c)
        , _avio_buffer (0)
        , _avio_buffer_size (4096)
@@ -70,9 +69,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 +127,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 +140,7 @@ FFmpeg::setup_general ()
 
        optional<int> 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 +153,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 +200,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 +227,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 +250,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)