From: Carl Hetherington Date: Fri, 16 May 2014 11:32:04 +0000 (+0100) Subject: Merge master. X-Git-Tag: v2.0.48~821 X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=308488324dbc4d8b709d3fb1dc9fee0479346c21 Merge master. --- 308488324dbc4d8b709d3fb1dc9fee0479346c21 diff --cc ChangeLog index 662983a74,807130428..33b7e2e21 --- a/ChangeLog +++ b/ChangeLog @@@ -1,7 -1,51 +1,55 @@@ +2014-03-07 Carl Hetherington + + * Add subtitle view. + + 2014-05-16 Carl Hetherington + + * Version 1.69.8 released. + + 2014-05-16 Carl Hetherington + + * Fix various confusions in translations of abbreviated + channel names (Lc, Rc etc.) + + 2014-05-14 Carl Hetherington + + * Version 1.69.7 released. + + 2014-05-14 Carl Hetherington + + * Bump libdcp to remove checks on PCM MXF edit rates, + so we can generate strange ones in DCP-o-matic. + + 2014-05-13 Carl Hetherington + + * Version 1.69.6 released. + + 2014-05-13 Carl Hetherington + + * Remove artificial 100fps limit when using + "any" DCP frame rate. + + 2014-05-12 Carl Hetherington + + * Version 1.69.5 released. + + 2014-05-12 Carl Hetherington + + * Add option to use any DCP frame rate, rather than just + the "allowed" set. + + * Version 1.69.4 released. + + 2014-05-12 Carl Hetherington + + * Version 1.69.3 released. + + 2014-05-12 Carl Hetherington + + * Use libdcp::raw_convert instead of boost::lexical_cast and + LocaleGuard, hopefully to fix large numbers being written with + thousands separators on some locales. + 2014-05-10 Carl Hetherington * Version 1.69.2 released. diff --cc src/lib/audio_content.cc index d9e00ff14,1896c4d5c..e8fd4bbd3 --- a/src/lib/audio_content.cc +++ b/src/lib/audio_content.cc @@@ -18,6 -18,7 +18,7 @@@ */ #include -#include ++#include #include "audio_content.h" #include "analyse_audio_job.h" #include "job_manager.h" @@@ -30,8 -31,8 +31,8 @@@ using std::string; using std::vector; using boost::shared_ptr; - using boost::lexical_cast; using boost::dynamic_pointer_cast; -using libdcp::raw_convert; ++using dcp::raw_convert; int const AudioContentProperty::AUDIO_CHANNELS = 200; int const AudioContentProperty::AUDIO_LENGTH = 201; diff --cc src/lib/audio_mapping.cc index 969397b0b,b1810c973..496300b48 --- a/src/lib/audio_mapping.cc +++ b/src/lib/audio_mapping.cc @@@ -17,9 -17,9 +17,9 @@@ */ - #include #include #include -#include ++#include #include "audio_mapping.h" #include "util.h" @@@ -30,8 -30,8 +30,8 @@@ using std::pair using std::string; using std::min; using boost::shared_ptr; - using boost::lexical_cast; using boost::dynamic_pointer_cast; -using libdcp::raw_convert; ++using dcp::raw_convert; AudioMapping::AudioMapping () : _content_channels (0) @@@ -93,8 -93,8 +93,8 @@@ AudioMapping::AudioMapping (shared_ptr< for (list::const_iterator i = c.begin(); i != c.end(); ++i) { set ( (*i)->number_attribute ("Content"), - static_cast ((*i)->number_attribute ("DCP")), + static_cast ((*i)->number_attribute ("DCP")), - lexical_cast ((*i)->content ()) + raw_convert ((*i)->content ()) ); } } @@@ -120,9 -120,9 +120,9 @@@ AudioMapping::as_xml (xmlpp::Node* node for (int c = 0; c < _content_channels; ++c) { for (int d = 0; d < MAX_DCP_AUDIO_CHANNELS; ++d) { xmlpp::Element* t = node->add_child ("Gain"); - t->set_attribute ("Content", lexical_cast (c)); - t->set_attribute ("DCP", lexical_cast (d)); - t->add_child_text (lexical_cast (get (c, static_cast (d)))); + t->set_attribute ("Content", raw_convert (c)); + t->set_attribute ("DCP", raw_convert (d)); - t->add_child_text (raw_convert (get (c, static_cast (d)))); ++ t->add_child_text (raw_convert (get (c, static_cast (d)))); } } } diff --cc src/lib/colour_conversion.cc index e4a2a84bf,cd1a81b25..73ee72249 --- a/src/lib/colour_conversion.cc +++ b/src/lib/colour_conversion.cc @@@ -17,9 -17,9 +17,9 @@@ */ - #include #include -#include -#include +#include ++#include #include #include "config.h" #include "colour_conversion.h" @@@ -32,8 -32,8 +32,8 @@@ using std::string using std::cout; using std::vector; using boost::shared_ptr; - using boost::lexical_cast; using boost::optional; -using libdcp::raw_convert; ++using dcp::raw_convert; ColourConversion::ColourConversion () : input_gamma (2.4) diff --cc src/lib/config.cc index ca8d0bc53,40ae3971b..754346418 --- a/src/lib/config.cc +++ b/src/lib/config.cc @@@ -23,7 -23,8 +23,8 @@@ #include #include #include -#include -#include +#include ++#include #include #include "config.h" #include "server.h" @@@ -49,7 -50,7 +50,7 @@@ using boost::shared_ptr using boost::optional; using boost::algorithm::is_any_of; using boost::algorithm::split; -using libdcp::raw_convert; ++using dcp::raw_convert; Config* Config::_instance = 0; diff --cc src/lib/content.cc index 0c37d9386,1ec607d39..c4836cfa8 --- a/src/lib/content.cc +++ b/src/lib/content.cc @@@ -24,6 -20,7 +24,7 @@@ #include #include #include -#include ++#include #include "content.h" #include "util.h" #include "content_factory.h" @@@ -40,7 -37,7 +41,7 @@@ using std::list using std::cout; using std::vector; using boost::shared_ptr; - using boost::lexical_cast; -using libdcp::raw_convert; ++using dcp::raw_convert; int const ContentProperty::PATH = 400; int const ContentProperty::POSITION = 401; @@@ -123,9 -120,9 +124,9 @@@ Content::as_xml (xmlpp::Node* node) con node->add_child("Path")->add_child_text (i->string ()); } node->add_child("Digest")->add_child_text (_digest); - node->add_child("Position")->add_child_text (lexical_cast (_position.get ())); - node->add_child("TrimStart")->add_child_text (lexical_cast (_trim_start.get ())); - node->add_child("TrimEnd")->add_child_text (lexical_cast (_trim_end.get ())); - node->add_child("Position")->add_child_text (raw_convert (_position)); - node->add_child("TrimStart")->add_child_text (raw_convert (_trim_start)); - node->add_child("TrimEnd")->add_child_text (raw_convert (_trim_end)); ++ node->add_child("Position")->add_child_text (raw_convert (_position.get ())); ++ node->add_child("TrimStart")->add_child_text (raw_convert (_trim_start.get ())); ++ node->add_child("TrimEnd")->add_child_text (raw_convert (_trim_end.get ())); } void diff --cc src/lib/dci_metadata.cc index 27306a15e,ccdc1ee1c..2c6e43654 --- a/src/lib/dci_metadata.cc +++ b/src/lib/dci_metadata.cc @@@ -19,13 -19,14 +19,14 @@@ #include #include -#include ++#include #include "dci_metadata.h" #include "i18n.h" using std::string; - using boost::lexical_cast; using boost::shared_ptr; -using libdcp::raw_convert; ++using dcp::raw_convert; DCIMetadata::DCIMetadata (shared_ptr node) { diff --cc src/lib/dcp_video_frame.cc index 2b7a2e18f,1c12eb7fd..59f356a5a --- a/src/lib/dcp_video_frame.cc +++ b/src/lib/dcp_video_frame.cc @@@ -42,11 -42,13 +42,12 @@@ #include #include #include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include ++#include #include #include "film.h" #include "dcp_video_frame.h" @@@ -65,8 -67,8 +66,9 @@@ using std::string using std::stringstream; using std::cout; using boost::shared_ptr; -using libdcp::Size; -using libdcp::raw_convert; +using boost::lexical_cast; +using dcp::Size; ++using dcp::raw_convert; #define DCI_COEFFICENT (48.0 / 52.37) diff --cc src/lib/ffmpeg.cc index a98aa9828,7ecc811be..316b9614d --- a/src/lib/ffmpeg.cc +++ b/src/lib/ffmpeg.cc @@@ -22,6 -22,7 +22,7 @@@ extern "C" #include #include } -#include ++#include #include "ffmpeg.h" #include "ffmpeg_content.h" #include "exceptions.h" @@@ -33,7 -34,7 +34,7 @@@ using std::string using std::cout; using std::stringstream; using boost::shared_ptr; - using boost::lexical_cast; -using libdcp::raw_convert; ++using dcp::raw_convert; boost::mutex FFmpeg::_mutex; diff --cc src/lib/ffmpeg_content.cc index a51cb3de8,f810d53be..a374bcf3e --- a/src/lib/ffmpeg_content.cc +++ b/src/lib/ffmpeg_content.cc @@@ -152,7 -153,7 +153,7 @@@ FFmpegContent::as_xml (xmlpp::Node* nod } if (_first_video) { - node->add_child("FirstVideo")->add_child_text (lexical_cast (_first_video.get().get())); - node->add_child("FirstVideo")->add_child_text (raw_convert (_first_video.get ())); ++ node->add_child("FirstVideo")->add_child_text (raw_convert (_first_video.get().get())); } } @@@ -338,10 -370,10 +339,10 @@@ voi FFmpegAudioStream::as_xml (xmlpp::Node* root) const { FFmpegStream::as_xml (root); - root->add_child("FrameRate")->add_child_text (lexical_cast (frame_rate)); - root->add_child("Channels")->add_child_text (lexical_cast (channels)); + root->add_child("FrameRate")->add_child_text (raw_convert (frame_rate)); + root->add_child("Channels")->add_child_text (raw_convert (channels)); if (first_audio) { - root->add_child("FirstAudio")->add_child_text (lexical_cast (first_audio.get().get())); - root->add_child("FirstAudio")->add_child_text (raw_convert (first_audio.get ())); ++ root->add_child("FirstAudio")->add_child_text (raw_convert (first_audio.get().get())); } mapping.as_xml (root->add_child("Mapping")); } diff --cc src/lib/ffmpeg_content.h index 1ab0a92d0,6ab95d2fe..37746ac9d --- a/src/lib/ffmpeg_content.h +++ b/src/lib/ffmpeg_content.h @@@ -21,6 -21,6 +21,7 @@@ #define DCPOMATIC_FFMPEG_CONTENT_H #include ++#include #include "video_content.h" #include "audio_content.h" #include "subtitle_content.h" diff --cc src/lib/film.cc index 33cb30460,12a57753f..bdd650437 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@@ -27,14 -27,15 +27,15 @@@ #include #include #include -#include +#include #include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include ++#include #include "film.h" #include "job.h" #include "util.h" @@@ -77,8 -77,9 +77,9 @@@ using boost::to_upper_copy using boost::ends_with; using boost::starts_with; using boost::optional; -using libdcp::Size; -using libdcp::Signer; -using libdcp::raw_convert; +using dcp::Size; +using dcp::Signer; ++using dcp::raw_convert; /* 5 -> 6 * AudioMapping XML changed. diff --cc src/lib/server.cc index bf7541c33,0c5792ae0..6bcff7e6e --- a/src/lib/server.cc +++ b/src/lib/server.cc @@@ -27,9 -27,9 +27,9 @@@ #include #include #include - #include #include #include -#include ++#include #include "server.h" #include "util.h" #include "scaler.h" @@@ -56,8 -56,8 +56,8 @@@ using boost::thread using boost::bind; using boost::scoped_array; using boost::optional; - using boost::lexical_cast; -using libdcp::Size; -using libdcp::raw_convert; +using dcp::Size; ++using dcp::raw_convert; Server::Server (shared_ptr log, bool verbose) : _log (log) diff --cc src/lib/server_finder.cc index 1080d24c4,ed6016c67..de8a3852c --- a/src/lib/server_finder.cc +++ b/src/lib/server_finder.cc @@@ -18,6 -18,7 +18,7 @@@ */ #include -#include ++#include #include "server_finder.h" #include "exceptions.h" #include "util.h" @@@ -32,7 -33,7 +33,7 @@@ using std::vector using std::cout; using boost::shared_ptr; using boost::scoped_array; - using boost::lexical_cast; -using libdcp::raw_convert; ++using dcp::raw_convert; ServerFinder* ServerFinder::_instance = 0; diff --cc src/lib/sndfile_content.cc index 0cf65967f,fcdf88778..cad5eb8e7 --- a/src/lib/sndfile_content.cc +++ b/src/lib/sndfile_content.cc @@@ -18,6 -18,7 +18,7 @@@ */ #include -#include ++#include #include "sndfile_content.h" #include "sndfile_decoder.h" #include "film.h" @@@ -31,7 -32,9 +32,7 @@@ using std::string using std::stringstream; using std::cout; using boost::shared_ptr; - using boost::lexical_cast; -using libdcp::raw_convert; - -int const SndfileContentProperty::VIDEO_FRAME_RATE = 600; ++using dcp::raw_convert; SndfileContent::SndfileContent (shared_ptr f, boost::filesystem::path p) : Content (f, p) @@@ -132,9 -138,9 +133,9 @@@ SndfileContent::as_xml (xmlpp::Node* no Content::as_xml (node); AudioContent::as_xml (node); - node->add_child("AudioChannels")->add_child_text (lexical_cast (audio_channels ())); - node->add_child("AudioLength")->add_child_text (lexical_cast (audio_length().get ())); - node->add_child("AudioFrameRate")->add_child_text (lexical_cast (audio_frame_rate ())); + node->add_child("AudioChannels")->add_child_text (raw_convert (audio_channels ())); - node->add_child("AudioLength")->add_child_text (raw_convert (audio_length ())); - node->add_child("AudioFrameRate")->add_child_text (raw_convert (content_audio_frame_rate ())); ++ node->add_child("AudioLength")->add_child_text (raw_convert (audio_length().get ())); ++ node->add_child("AudioFrameRate")->add_child_text (raw_convert (audio_frame_rate ())); _audio_mapping.as_xml (node->add_child("AudioMapping")); } diff --cc src/lib/subrip_content.cc index eb9c67d9a,000000000..8f9c28e29 mode 100644,000000..100644 --- a/src/lib/subrip_content.cc +++ b/src/lib/subrip_content.cc @@@ -1,113 -1,0 +1,111 @@@ +/* + Copyright (C) 2014 Carl Hetherington + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#include "subrip_content.h" +#include "util.h" +#include "subrip.h" +#include "film.h" ++#include + +#include "i18n.h" + +using std::stringstream; +using std::string; +using std::cout; ++using dcp::raw_convert; +using boost::shared_ptr; +using boost::lexical_cast; + +SubRipContent::SubRipContent (shared_ptr film, boost::filesystem::path path) + : Content (film, path) + , SubtitleContent (film, path) +{ + +} + +SubRipContent::SubRipContent (shared_ptr film, shared_ptr node, int version) + : Content (film, node) + , SubtitleContent (film, node, version) + , _length (node->number_child ("Length")) +{ + +} + +void +SubRipContent::examine (boost::shared_ptr job) +{ + Content::examine (job); + SubRip s (shared_from_this ()); + + shared_ptr film = _film.lock (); + assert (film); + + DCPTime len (s.length (), film->active_frame_rate_change (position ())); + + boost::mutex::scoped_lock lm (_mutex); + _length = len; +} + +string +SubRipContent::summary () const +{ + return path_summary() + " " + _("[subtitles]"); +} + +string +SubRipContent::technical_summary () const +{ + return Content::technical_summary() + " - " + _("SubRip subtitles"); +} + +string +SubRipContent::information () const +{ + +} + +void +SubRipContent::as_xml (xmlpp::Node* node) const +{ - LocaleGuard lg; - + node->add_child("Type")->add_child_text ("SubRip"); + Content::as_xml (node); + SubtitleContent::as_xml (node); - node->add_child("Length")->add_child_text (lexical_cast (_length.get ())); ++ node->add_child("Length")->add_child_text (raw_convert (_length.get ())); +} + +DCPTime +SubRipContent::full_length () const +{ + /* XXX: this assumes that the timing of the SubRip file is appropriate + for the DCP's frame rate. + */ + return _length; +} + +string +SubRipContent::identifier () const +{ - LocaleGuard lg; - + stringstream s; + s << Content::identifier() - << "_" << subtitle_scale() - << "_" << subtitle_x_offset() - << "_" << subtitle_y_offset(); ++ << "_" << raw_convert (subtitle_scale()) ++ << "_" << raw_convert (subtitle_x_offset()) ++ << "_" << raw_convert (subtitle_y_offset()); + + return s.str (); +} diff --cc src/lib/subtitle_content.cc index 4c6e60192,0abb7d491..783c73e25 --- a/src/lib/subtitle_content.cc +++ b/src/lib/subtitle_content.cc @@@ -18,6 -18,7 +18,7 @@@ */ #include -#include ++#include #include "subtitle_content.h" #include "util.h" #include "exceptions.h" @@@ -26,10 -27,9 +27,10 @@@ using std::string; using std::vector; +using std::cout; using boost::shared_ptr; - using boost::lexical_cast; using boost::dynamic_pointer_cast; -using libdcp::raw_convert; ++using dcp::raw_convert; int const SubtitleContentProperty::SUBTITLE_X_OFFSET = 500; int const SubtitleContentProperty::SUBTITLE_Y_OFFSET = 501; diff --cc src/lib/update.cc index 019db8e76,34eaf385c..c7527ee49 --- a/src/lib/update.cc +++ b/src/lib/update.cc @@@ -22,6 -22,7 +22,7 @@@ #include #include #include -#include ++#include #include "update.h" #include "version.h" #include "ui_signaller.h" @@@ -32,9 -33,8 +33,9 @@@ using std::cout using std::min; using std::string; using std::stringstream; - using boost::lexical_cast; -using libdcp::raw_convert; ++using dcp::raw_convert; +/** Singleton instance */ UpdateChecker* UpdateChecker::_instance = 0; static size_t diff --cc src/lib/util.cc index 0eb14845d,a5111b7dc..14dfd1fa5 --- a/src/lib/util.cc +++ b/src/lib/util.cc @@@ -46,13 -45,13 +45,14 @@@ #include #include #include +#include #include #include -#include -#include -#include -#include -#include +#include +#include +#include +#include ++#include extern "C" { #include #include @@@ -101,9 -99,9 +101,9 @@@ using std::streampos using std::set_terminate; using boost::shared_ptr; using boost::thread; - using boost::lexical_cast; using boost::optional; -using libdcp::Size; -using libdcp::raw_convert; +using dcp::Size; ++using dcp::raw_convert; static boost::thread::id ui_thread; static boost::filesystem::path backtrace_file; @@@ -761,25 -814,44 +761,6 @@@ audio_channel_name (int c return channels[c]; } - LocaleGuard::LocaleGuard () - : _old (0) -FrameRateConversion::FrameRateConversion (float source, int dcp) - : skip (false) - , repeat (1) - , change_speed (false) --{ - char const * old = setlocale (LC_NUMERIC, 0); - if (fabs (source / 2.0 - dcp) < fabs (source - dcp)) { - /* The difference between source and DCP frame rate will be lower - (i.e. better) if we skip. - */ - skip = true; - } else if (fabs (source * 2 - dcp) < fabs (source - dcp)) { - /* The difference between source and DCP frame rate would be better - if we repeated each frame once; it may be better still if we - repeated more than once. Work out the required repeat. - */ - repeat = round (dcp / source); - } -- - if (old) { - _old = strdup (old); - if (strcmp (_old, "C")) { - setlocale (LC_NUMERIC, "C"); - change_speed = !about_equal (source * factor(), dcp); - - if (!skip && repeat == 1 && !change_speed) { - description = _("Content and DCP have the same rate.\n"); - } else { - if (skip) { - description = _("DCP will use every other frame of the content.\n"); - } else if (repeat == 2) { - description = _("Each content frame will be doubled in the DCP.\n"); - } else if (repeat > 2) { - description = String::compose (_("Each content frame will be repeated %1 more times in the DCP.\n"), repeat - 1); -- } - } - } -- - LocaleGuard::~LocaleGuard () - { - setlocale (LC_NUMERIC, _old); - free (_old); - if (change_speed) { - float const pc = dcp * 100 / (source * factor()); - description += String::compose (_("DCP will run at %1%% of the content speed.\n"), pc); - } - } --} -- bool valid_image_file (boost::filesystem::path f) { diff --cc src/lib/util.h index 8e65bbb54,e85abf402..58c2771b7 --- a/src/lib/util.h +++ b/src/lib/util.h @@@ -131,19 -164,8 +131,11 @@@ private int _timeout; }; - class LocaleGuard - { - public: - LocaleGuard (); - ~LocaleGuard (); - - private: - char* _old; - }; + extern int64_t video_frames_to_audio_frames (VideoContent::Frame v, float audio_sample_rate, float frames_per_second); +/** @class ScopedTemporary + * @brief A temporary file which is deleted when the ScopedTemporary object goes out of scope. + */ class ScopedTemporary { public: diff --cc src/lib/video_content.cc index 9edbc104a,783cddafa..bd24621f7 --- a/src/lib/video_content.cc +++ b/src/lib/video_content.cc @@@ -19,7 -19,8 +19,8 @@@ #include #include -#include -#include +#include ++#include #include "video_content.h" #include "video_examiner.h" #include "compose.hpp" @@@ -45,9 -46,9 +46,9 @@@ using std::setprecision using std::cout; using std::vector; using boost::shared_ptr; - using boost::lexical_cast; using boost::optional; using boost::dynamic_pointer_cast; -using libdcp::raw_convert; ++using dcp::raw_convert; vector VideoContentScale::_scales; @@@ -155,15 -156,15 +156,15 @@@ voi VideoContent::as_xml (xmlpp::Node* node) const { boost::mutex::scoped_lock lm (_mutex); - node->add_child("VideoLength")->add_child_text (lexical_cast (_video_length.get ())); - node->add_child("VideoWidth")->add_child_text (lexical_cast (_video_size.width)); - node->add_child("VideoHeight")->add_child_text (lexical_cast (_video_size.height)); - node->add_child("VideoFrameRate")->add_child_text (lexical_cast (_video_frame_rate)); - node->add_child("VideoFrameType")->add_child_text (lexical_cast (static_cast (_video_frame_type))); - node->add_child("LeftCrop")->add_child_text (boost::lexical_cast (_crop.left)); - node->add_child("RightCrop")->add_child_text (boost::lexical_cast (_crop.right)); - node->add_child("TopCrop")->add_child_text (boost::lexical_cast (_crop.top)); - node->add_child("BottomCrop")->add_child_text (boost::lexical_cast (_crop.bottom)); - node->add_child("VideoLength")->add_child_text (raw_convert (_video_length)); ++ node->add_child("VideoLength")->add_child_text (raw_convert (_video_length.get ())); + node->add_child("VideoWidth")->add_child_text (raw_convert (_video_size.width)); + node->add_child("VideoHeight")->add_child_text (raw_convert (_video_size.height)); + node->add_child("VideoFrameRate")->add_child_text (raw_convert (_video_frame_rate)); + node->add_child("VideoFrameType")->add_child_text (raw_convert (static_cast (_video_frame_type))); + node->add_child("LeftCrop")->add_child_text (raw_convert (_crop.left)); + node->add_child("RightCrop")->add_child_text (raw_convert (_crop.right)); + node->add_child("TopCrop")->add_child_text (raw_convert (_crop.top)); + node->add_child("BottomCrop")->add_child_text (raw_convert (_crop.bottom)); _scale.as_xml (node->add_child("Scale")); _colour_conversion.as_xml (node->add_child("ColourConversion")); } diff --cc src/wx/audio_mapping_view.cc index 937501086,c1f3e2067..ac85407a2 --- a/src/wx/audio_mapping_view.cc +++ b/src/wx/audio_mapping_view.cc @@@ -30,6 -26,6 +30,7 @@@ #include "audio_mapping_view.h" #include "wx_util.h" #include "audio_gain_dialog.h" ++#include using std::cout; using std::list; diff --cc test/ratio_test.cc index f5ac3ca64,f3cbb504f..c941248bf --- a/test/ratio_test.cc +++ b/test/ratio_test.cc @@@ -29,10 -25,10 +29,10 @@@ using std::ostream; --namespace libdcp { ++namespace dcp { ostream& -operator<< (ostream& s, libdcp::Size const & t) +operator<< (ostream& s, dcp::Size const & t) { s << t.width << "x" << t.height; return s;