-extern int stride_lookup (int c, int const * stride);
-extern std::multimap<std::string, std::string> read_key_value (std::istream& s);
-extern int get_required_int (std::multimap<std::string, std::string> const & kv, std::string k);
-extern float get_required_float (std::multimap<std::string, std::string> const & kv, std::string k);
-extern std::string get_required_string (std::multimap<std::string, std::string> const & kv, std::string k);
-extern int get_optional_int (std::multimap<std::string, std::string> const & kv, std::string k);
-extern std::string get_optional_string (std::multimap<std::string, std::string> const & kv, std::string k);
-
-/** @class Socket
- * @brief A class to wrap a boost::asio::ip::tcp::socket with some things
- * that are useful for DVD-o-matic.
- *
- * This class wraps some things that I could not work out how to do with boost;
- * most notably, sync read/write calls with timeouts.
- */
-class Socket
-{
-public:
- Socket (int timeout = 30);
-
- /** @return Our underlying socket */
- boost::asio::ip::tcp::socket& socket () {
- return _socket;
- }
-
- void connect (boost::asio::ip::basic_resolver_entry<boost::asio::ip::tcp> const & endpoint);
-
- void write (uint32_t n);
- void write (uint8_t const * data, int size);
-
- void read (uint8_t* data, int size);
- uint32_t read_uint32 ();
-
-private:
- void check ();
-
- Socket (Socket const &);
-
- boost::asio::io_service _io_service;
- boost::asio::deadline_timer _deadline;
- boost::asio::ip::tcp::socket _socket;
- int _timeout;
-};
-
-/** @class AudioBuffers
- * @brief A class to hold multi-channel audio data in float format.
- */
-class AudioBuffers
-{
-public:
- AudioBuffers (int channels, int frames);
- AudioBuffers (AudioBuffers const &);
- ~AudioBuffers ();
-
- float** data () const {
- return _data;
- }
-
- float* data (int) const;
-
- int channels () const {
- return _channels;
- }
-
- int frames () const {
- return _frames;
- }
-
- void set_frames (int f);
-
- void make_silent ();
- void make_silent (int c);
-
- void copy_from (AudioBuffers* from, int frames_to_copy, int read_offset, int write_offset);
- void move (int from, int to, int frames);
-
-private:
- /** Number of channels */
- int _channels;
- /** Number of frames (where a frame is one sample across all channels) */
- int _frames;
- /** Number of frames that _data can hold */
- int _allocated_frames;
- /** Audio data (so that, e.g. _data[2][6] is channel 2, sample 6) */
- float** _data;
-};
-
-class AudioMapping
-{
-public:
- AudioMapping (int);
-
- boost::optional<libdcp::Channel> source_to_dcp (int c) const;
- boost::optional<int> dcp_to_source (libdcp::Channel c) const;
- int dcp_channels () const;
-
-private:
- int _source_channels;
-};
-
-extern int64_t video_frames_to_audio_frames (SourceFrame v, float audio_sample_rate, float frames_per_second);
-extern bool still_image_file (std::string);
-extern std::pair<std::string, int> cpu_info ();
-
+extern void* wrapped_av_malloc (size_t);
+extern void set_backtrace_file (boost::filesystem::path);
+extern std::map<std::string, std::string> split_get_request (std::string url);
+extern std::string video_asset_filename (boost::shared_ptr<dcp::PictureAsset> asset, int reel_index, int reel_count, boost::optional<std::string> content_summary);
+extern std::string audio_asset_filename (boost::shared_ptr<dcp::SoundAsset> asset, int reel_index, int reel_count, boost::optional<std::string> content_summary);
+extern float relaxed_string_to_float (std::string);
+extern std::string careful_string_filter (std::string);
+extern std::pair<int, int> audio_channel_types (std::list<int> mapped, int channels);
+extern boost::shared_ptr<AudioBuffers> remap (boost::shared_ptr<const AudioBuffers> input, int output_channels, AudioMapping map);
+extern Eyes increment_eyes (Eyes e);
+extern void checked_fread (void* ptr, size_t size, FILE* stream, boost::filesystem::path path);
+extern void checked_fwrite (void const * ptr, size_t size, FILE* stream, boost::filesystem::path path);
+extern size_t utf8_strlen (std::string s);
+extern std::string day_of_week_to_string (boost::gregorian::greg_weekday d);
+extern void emit_subtitle_image (ContentTimePeriod period, dcp::SubtitleImage sub, dcp::Size size, boost::shared_ptr<TextDecoder> decoder);
+#ifdef DCPOMATIC_VARIANT_SWAROOP
+extern boost::shared_ptr<dcp::CertificateChain> read_swaroop_chain (boost::filesystem::path path);
+extern void write_swaroop_chain (boost::shared_ptr<const dcp::CertificateChain> chain, boost::filesystem::path output);