#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
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()).
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 ();
CinemaSoundProcessor::setup_cinema_sound_processors ();
AudioProcessor::setup_audio_processors ();
+ curl_global_init (CURL_GLOBAL_ALL);
+
ui_thread = boost::this_thread::get_id ();
}
return digester.get ();
}
-/** @param An arbitrary audio frame rate.
- * @return The appropriate DCP-approved frame rate (48kHz or 96kHz).
- */
-int
-dcp_audio_frame_rate (int fs)
-{
- if (fs <= 48000) {
- return 48000;
- }
-
- return 96000;
-}
-
/** Round a number up to the nearest multiple of another number.
* @param c Index.
* @param s Array of numbers to round, indexed by c.
return a - (a % t);
}
-/** @param n A number.
- * @param r Rounding `boundary' (must be a power of 2)
- * @return n rounded to the nearest r
- */
-int
-round_to (float n, int r)
-{
- DCPOMATIC_ASSERT (r == 1 || r == 2 || r == 4);
- return int (n + float(r) / 2) &~ (r - 1);
-}
-
/** Trip an assert if the caller is not in the UI thread */
void
ensure_ui_thread ()
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 *
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)
{