Fix nonfunctional send-problem-report.
[dcpomatic.git] / src / lib / util.cc
index 3837aacc7ba0ace7314c30758bfb24be1d710626..81963e0aa5bdac0cb4f3ca31f9392d4845cd76cb 100644 (file)
 #include "md5_digester.h"
 #include "audio_processor.h"
 #include "safe_stringstream.h"
+#include "compose.hpp"
 #include <dcp/util.h>
-#include <dcp/signer.h>
 #include <dcp/picture_asset.h>
 #include <dcp/sound_asset.h>
 #include <dcp/subtitle_asset.h>
+extern "C" {
+#include <libavfilter/avfilter.h>
+#include <libavcodec/avcodec.h>
+}
+#include <curl/curl.h>
 #include <glib.h>
 #include <pangomm/init.h>
 #include <boost/algorithm/string.hpp>
-#include <boost/bind.hpp>
-#include <boost/lambda/lambda.hpp>
 #include <boost/thread.hpp>
 #include <boost/filesystem.hpp>
 #ifdef DCPOMATIC_WINDOWS
@@ -280,18 +283,10 @@ terminate ()
        abort();
 }
 
-/** Call the required functions to set up DCP-o-matic's static arrays, etc.
- *  Must be called from the UI thread, if there is one.
- */
 void
-dcpomatic_setup ()
+dcpomatic_setup_path_encoding ()
 {
 #ifdef DCPOMATIC_WINDOWS
-       boost::filesystem::path p = g_get_user_config_dir ();
-       p /= "backtrace.txt";
-       set_backtrace_file (p);
-       SetUnhandledExceptionFilter(exception_handler);
-
        /* Dark voodoo which, I think, gets boost::filesystem::path to
           correctly convert UTF-8 strings to paths, and also paths
           back to UTF-8 strings (on path::string()).
@@ -307,6 +302,20 @@ dcpomatic_setup ()
        std::locale::global (boost::locale::generator().generate (""));
        boost::filesystem::path::imbue (std::locale ());
 #endif
+}
+
+/** Call the required functions to set up DCP-o-matic's static arrays, etc.
+ *  Must be called from the UI thread, if there is one.
+ */
+void
+dcpomatic_setup ()
+{
+#ifdef DCPOMATIC_WINDOWS
+       boost::filesystem::path p = g_get_user_config_dir ();
+       p /= "backtrace.txt";
+       set_backtrace_file (p);
+       SetUnhandledExceptionFilter(exception_handler);
+#endif
 
        avfilter_register_all ();
 
@@ -332,6 +341,8 @@ dcpomatic_setup ()
        CinemaSoundProcessor::setup_cinema_sound_processors ();
        AudioProcessor::setup_audio_processors ();
 
+       curl_global_init (CURL_GLOBAL_ALL);
+
        ui_thread = boost::this_thread::get_id ();
 }
 
@@ -463,7 +474,7 @@ ensure_ui_thread ()
 string
 audio_channel_name (int c)
 {
-       DCPOMATIC_ASSERT (MAX_DCP_AUDIO_CHANNELS == 12);
+       DCPOMATIC_ASSERT (MAX_DCP_AUDIO_CHANNELS == 16);
 
        /// TRANSLATORS: these are the names of audio channels; Lfe (sub) is the low-frequency
        /// enhancement channel (sub-woofer).  HI is the hearing-impaired audio track and
@@ -481,6 +492,10 @@ audio_channel_name (int c)
                _("Right centre"),
                _("Left rear surround"),
                _("Right rear surround"),
+               _("D-BOX primary"),
+               _("D-BOX secondary"),
+               _("Unused"),
+               _("Unused")
        };
 
        return channels[c];
@@ -529,10 +544,10 @@ dcp::Size
 fit_ratio_within (float ratio, dcp::Size full_frame)
 {
        if (ratio < full_frame.ratio ()) {
-               return dcp::Size (rint (full_frame.height * ratio), full_frame.height);
+               return dcp::Size (lrintf (full_frame.height * ratio), full_frame.height);
        }
 
-       return dcp::Size (full_frame.width, rint (full_frame.width / ratio));
+       return dcp::Size (full_frame.width, lrintf (full_frame.width / ratio));
 }
 
 void *
@@ -545,22 +560,6 @@ wrapped_av_malloc (size_t s)
        return p;
 }
 
-FFmpegSubtitlePeriod
-subtitle_period (AVSubtitle const & sub)
-{
-       ContentTime const packet_time = ContentTime::from_seconds (static_cast<double> (sub.pts) / AV_TIME_BASE);
-
-       if (sub.end_display_time == static_cast<uint32_t> (-1)) {
-               /* End time is not known */
-               return FFmpegSubtitlePeriod (packet_time + ContentTime::from_seconds (sub.start_display_time / 1e3));
-       }
-
-       return FFmpegSubtitlePeriod (
-               packet_time + ContentTime::from_seconds (sub.start_display_time / 1e3),
-               packet_time + ContentTime::from_seconds (sub.end_display_time / 1e3)
-               );
-}
-
 map<string, string>
 split_get_request (string url)
 {