Include audio mapping in the digest used to distinguish different
[dcpomatic.git] / src / lib / ffmpeg.cc
index b7ae04b069017d8404325939fdbbad8ba4108f26..7ecc811be879a5af330402829377c7697a7204c2 100644 (file)
@@ -21,11 +21,12 @@ extern "C" {
 #include <libavcodec/avcodec.h>
 #include <libavformat/avformat.h>
 #include <libswscale/swscale.h>
-#include <libpostproc/postprocess.h>
 }
+#include <libdcp/raw_convert.h>
 #include "ffmpeg.h"
 #include "ffmpeg_content.h"
 #include "exceptions.h"
+#include "util.h"
 
 #include "i18n.h"
 
@@ -33,7 +34,7 @@ using std::string;
 using std::cout;
 using std::stringstream;
 using boost::shared_ptr;
-using boost::lexical_cast;
+using libdcp::raw_convert;
 
 boost::mutex FFmpeg::_mutex;
 
@@ -85,7 +86,7 @@ FFmpeg::setup_general ()
        av_register_all ();
 
        _file_group.set_paths (_ffmpeg_content->paths ());
-       _avio_buffer = static_cast<uint8_t*> (av_malloc (_avio_buffer_size));
+       _avio_buffer = static_cast<uint8_t*> (wrapped_av_malloc (_avio_buffer_size));
        _avio_context = avio_alloc_context (_avio_buffer, _avio_buffer_size, 0, this, avio_read_wrapper, 0, avio_seek_wrapper);
        _format_context = avformat_alloc_context ();
        _format_context->pb = _avio_context;
@@ -94,8 +95,8 @@ FFmpeg::setup_general ()
        /* These durations are in microseconds, and represent how far into the content file
           we will look for streams.
        */
-       av_dict_set (&options, "analyzeduration", lexical_cast<string> (5 * 60 * 1e6).c_str(), 0);
-       av_dict_set (&options, "probesize", lexical_cast<string> (5 * 60 * 1e6).c_str(), 0);
+       av_dict_set (&options, "analyzeduration", raw_convert<string> (5 * 60 * 1000000).c_str(), 0);
+       av_dict_set (&options, "probesize", raw_convert<string> (5 * 60 * 1000000).c_str(), 0);
        
        if (avformat_open_input (&_format_context, 0, 0, &options) < 0) {
                throw OpenFileError (_ffmpeg_content->path(0).string ());