From: Carl Hetherington Date: Wed, 16 Jul 2014 10:14:54 +0000 (+0100) Subject: Merge master. X-Git-Tag: v2.0.48~721 X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=9e4c091e6ef0f79fab10664e95240de2f14e5702;hp=-c Merge master. --- 9e4c091e6ef0f79fab10664e95240de2f14e5702 diff --combined ChangeLog index 1f84ff13a,f96ba701e..68383d39d --- a/ChangeLog +++ b/ChangeLog @@@ -1,17 -1,21 +1,36 @@@ +2014-07-15 Carl Hetherington + + * A variety of changes were made on the 2.0 branch + but not documented in the ChangeLog. Most sigificantly: - ++ + - DCP import + - Creation of DCPs with proper XML subtitles + - Import of .srt and .xml subtitles + - Audio processing framework (with some basic processors). + +2014-03-07 Carl Hetherington + + * Add subtitle view. + + 2014-07-16 Carl Hetherington + + * Updates to de_DE from Carsten Kurz. + + * Limit allowed KDM types based on Interop/SMPTE setting + of DCP (#385). + + * Updates to fr_FR from Grégoire Ausina. + + 2014-07-14 Carl Hetherington + + * Bump libdcp to get a new version which writes + values to CPLs. + + 2014-07-10 Carl Hetherington + + * Version 1.72.2 released. ++>>>>>>> origin/master + 2014-07-10 Carl Hetherington * Try to fix corruption of KDM email setting in diff --combined cscript index 0c27e59fe,5ea5a4cfd..2ac5fea91 --- a/cscript +++ b/cscript @@@ -157,7 -157,7 +157,7 @@@ def make_control(debian_version, bits, def dependencies(target): return (('ffmpeg-cdist', '67dc770'), - ('libdcp', '009e07f')) + ('libdcp', '1.0')) def build(target, options): cmd = './waf configure --prefix=%s' % target.work_dir_cscript() @@@ -169,7 -169,10 +169,10 @@@ if target.version == 'unstable': cmd += ' --debian-unstable' elif target.distro == 'centos': - cmd += ' --target-centos' + if target.version == '6.5': + cmd += ' --target-centos-6 --disable-tests' + elif target.version == '7': + cmd += ' --target-centos-7' target.command(cmd) target.command('./waf') diff --combined platform/windows/wscript index 65989300b,9ae88ba87..19c204f62 --- a/platform/windows/wscript +++ b/platform/windows/wscript @@@ -103,15 -103,15 +103,15 @@@ File "%static_deps%/bin/libcurl-4.dll File "%static_deps%/bin/ssleay32.dll" File "%static_deps%/bin/libzip-2.dll" -File "%cdist_deps%/bin/asdcp-libdcp.dll" -File "%cdist_deps%/bin/kumu-libdcp.dll" +File "%cdist_deps%/bin/asdcp-libdcp-1.0.dll" +File "%cdist_deps%/bin/kumu-libdcp-1.0.dll" File "%cdist_deps%/bin/avcodec-55.dll" File "%cdist_deps%/bin/avfilter-4.dll" File "%cdist_deps%/bin/avformat-55.dll" File "%cdist_deps%/bin/avutil-52.dll" File "%cdist_deps%/bin/avdevice-55.dll" File "%cdist_deps%/bin/postproc-52.dll" -File "%cdist_deps%/bin/dcp.dll" +File "%cdist_deps%/bin/dcp-1.0.dll" File "%cdist_deps%/bin/libopenjpeg-1.dll" File "%cdist_deps%/bin/swresample-0.dll" File "%cdist_deps%/bin/swscale-2.dll" @@@ -132,26 -132,32 +132,32 @@@ SetOutPath "$INSTDIR\\locale\\fr\\LC_ME File "%binaries%/src/lib/mo/fr_FR/libdcpomatic.mo" File "%binaries%/src/wx/mo/fr_FR/libdcpomatic-wx.mo" File "%binaries%/src/tools/mo/fr_FR/dcpomatic.mo" + File "%static_deps%/share/locale/fr/LC_MESSAGES/wxstd.mo" SetOutPath "$INSTDIR\\locale\\it\\LC_MESSAGES" File "%binaries%/src/lib/mo/it_IT/libdcpomatic.mo" File "%binaries%/src/wx/mo/it_IT/libdcpomatic-wx.mo" File "%binaries%/src/tools/mo/it_IT/dcpomatic.mo" + File "%static_deps%/share/locale/it/LC_MESSAGES/wxstd.mo" SetOutPath "$INSTDIR\\locale\\es\\LC_MESSAGES" File "%binaries%/src/lib/mo/es_ES/libdcpomatic.mo" File "%binaries%/src/wx/mo/es_ES/libdcpomatic-wx.mo" File "%binaries%/src/tools/mo/es_ES/dcpomatic.mo" + File "%static_deps%/share/locale/es/LC_MESSAGES/wxstd.mo" SetOutPath "$INSTDIR\\locale\\sv\\LC_MESSAGES" File "%binaries%/src/lib/mo/sv_SE/libdcpomatic.mo" File "%binaries%/src/wx/mo/sv_SE/libdcpomatic-wx.mo" File "%binaries%/src/tools/mo/sv_SE/dcpomatic.mo" + File "%static_deps%/share/locale/sv/LC_MESSAGES/wxstd.mo" SetOutPath "$INSTDIR\\locale\\de\\LC_MESSAGES" File "%binaries%/src/lib/mo/de_DE/libdcpomatic.mo" File "%binaries%/src/wx/mo/de_DE/libdcpomatic-wx.mo" File "%binaries%/src/tools/mo/de_DE/dcpomatic.mo" + File "%static_deps%/share/locale/de/LC_MESSAGES/wxstd.mo" SetOutPath "$INSTDIR\\locale\\nl\\LC_MESSAGES" File "%binaries%/src/lib/mo/nl_NL/libdcpomatic.mo" File "%binaries%/src/wx/mo/nl_NL/libdcpomatic-wx.mo" File "%binaries%/src/tools/mo/nl_NL/dcpomatic.mo" + File "%static_deps%/share/locale/nl/LC_MESSAGES/wxstd.mo" WriteRegStr HKLM "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\DCP-o-matic" "DisplayName" "DCP-o-matic (remove only)" WriteRegStr HKLM "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\DCP-o-matic" "UninstallString" "$INSTDIR\\Uninstall.exe" diff --combined src/lib/wscript index 66a25be0a,6d563f255..7d74d462c --- a/src/lib/wscript +++ b/src/lib/wscript @@@ -7,39 -7,26 +7,39 @@@ sources = "" audio_buffers.cc audio_content.cc audio_decoder.cc + audio_filter.cc audio_mapping.cc + audio_processor.cc cinema.cc + cinema_sound_processor.cc colour_conversion.cc config.cc content.cc content_factory.cc + content_subtitle.cc cross.cc + dcp_content.cc dcp_content_type.cc - dcp_video_frame.cc - decoder.cc + dcp_decoder.cc + dcp_examiner.cc + dcp_subtitle_content.cc + dcp_subtitle_decoder.cc + dcp_video.cc + dcpomatic_time.cc dolby_cp750.cc encoder.cc + encoded_data.cc examine_content_job.cc exceptions.cc file_group.cc filter_graph.cc ffmpeg.cc + ffmpeg_audio_stream.cc ffmpeg_content.cc ffmpeg_decoder.cc ffmpeg_examiner.cc + ffmpeg_stream.cc + ffmpeg_subtitle_stream.cc film.cc filter.cc frame_rate_change.cc @@@ -50,33 -37,27 +50,33 @@@ image_examiner.cc image_proxy.cc isdcf_metadata.cc + j2k_image_proxy.cc job.cc job_manager.cc kdm.cc json_server.cc log.cc + magick_image_proxy.cc md5_digester.cc - piece.cc + mid_side_decoder.cc player.cc - player_video_frame.cc + player_video.cc playlist.cc ratio.cc + raw_image_proxy.cc + render_subtitles.cc resampler.cc scp_dcp_job.cc scaler.cc send_kdm_email_job.cc server.cc server_finder.cc + single_stream_audio_content.cc sndfile_content.cc sndfile_decoder.cc - sound_processor.cc - subtitle.cc + subrip.cc + subrip_content.cc + subrip_decoder.cc subtitle_content.cc subtitle_decoder.cc timer.cc @@@ -85,7 -66,6 +85,7 @@@ types.cc ui_signaller.cc update.cc + upmixer_a.cc util.cc video_content.cc video_decoder.cc @@@ -103,8 -83,8 +103,8 @@@ def build(bld) obj.uselib = """ AVCODEC AVUTIL AVFORMAT AVFILTER SWSCALE SWRESAMPLE BOOST_FILESYSTEM BOOST_THREAD BOOST_DATETIME BOOST_SIGNALS2 - SNDFILE OPENJPEG POSTPROC TIFF MAGICK SSH DCP CXML GLIB LZMA XMLPP - CURL ZIP QUICKMAIL XMLSEC + SNDFILE OPENJPEG POSTPROC TIFF MAGICK SSH DCP CXML GLIB LZMA XML++ - CURL ZIP QUICKMAIL PANGOMM CAIROMM ++ CURL ZIP QUICKMAIL PANGOMM CAIROMM XMLSEC """ if bld.env.TARGET_OSX: @@@ -116,7 -96,7 +116,7 @@@ obj.uselib += ' WINSOCK2 BFD DBGHELP IBERTY SHLWAPI MSWSOCK BOOST_LOCALE' obj.source += ' stack.cpp' if bld.env.BUILD_STATIC: - obj.uselib += ' XML++' + obj.uselib += ' XMLPP' obj.target = 'dcpomatic' diff --combined src/wx/about_dialog.cc index b8eecc90a,c5f2fa309..9c7857c1e --- a/src/wx/about_dialog.cc +++ b/src/wx/about_dialog.cc @@@ -1,5 -1,5 +1,5 @@@ /* - Copyright (C) 2013 Carl Hetherington + Copyright (C) 2013-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 @@@ -17,10 -17,6 +17,10 @@@ */ +/** @file src/wx/about_dialog.cc + * @brief The "about DCP-o-matic" dialogue box. + */ + #include #include #include "lib/version.h" @@@ -106,6 -102,7 +106,7 @@@ AboutDialog::AboutDialog (wxWindow* par translated_by.Add (wxT ("Theo Kooijmans")); translated_by.Add (wxT ("Max Aeschlimann")); translated_by.Add (wxT ("Carsten Kurz")); + translated_by.Add (wxT ("Grégoire Ausina")); add_section (_("Translated by"), translated_by); wxArrayString artwork_by; @@@ -213,10 -210,6 +214,10 @@@ SetSizerAndFit (overall_sizer); } +/** Add a section of credits. + * @param name Name of section. + * @param credits List of names. + */ void AboutDialog::add_section (wxString name, wxArrayString credits) { diff --combined src/wx/kdm_dialog.cc index 0fdb1fe50,a7af7978c..6ef630eff --- a/src/wx/kdm_dialog.cc +++ b/src/wx/kdm_dialog.cc @@@ -161,9 -161,11 +161,11 @@@ KDMDialog::KDMDialog (wxWindow* parent add_label_to_sizer (table, this, _("KDM type"), true); _type = new wxChoice (this, wxID_ANY); - _type->Append ("Modified Transitional 1"); - _type->Append ("DCI Any"); - _type->Append ("DCI Specific"); + _type->Append ("Modified Transitional 1", ((void *) libdcp::KDM::MODIFIED_TRANSITIONAL_1)); + if (!film->interop ()) { + _type->Append ("DCI Any", ((void *) libdcp::KDM::DCI_ANY)); + _type->Append ("DCI Specific", ((void *) libdcp::KDM::DCI_SPECIFIC)); + } table->Add (_type, 1, wxEXPAND); _type->SetSelection (0); @@@ -488,19 -490,10 +490,10 @@@ KDMDialog::write_to () cons return _write_to->GetValue (); } -libdcp::KDM::Formulation +dcp::Formulation KDMDialog::formulation () const { - switch (_type->GetSelection()) { - case 0: - return dcp::MODIFIED_TRANSITIONAL_1; - case 1: - return dcp::DCI_ANY; - case 2: - return dcp::DCI_SPECIFIC; - default: - assert (false); - } - return (libdcp::KDM::Formulation) reinterpret_cast (_type->GetClientData (_type->GetSelection())); ++ return (dcp::KDM::Formulation) reinterpret_cast (_type->GetClientData (_type->GetSelection())); } void diff --combined src/wx/wscript index 26c8b9304,8bf2451c2..719496ae7 --- a/src/wx/wscript +++ b/src/wx/wscript @@@ -15,14 -15,13 +15,14 @@@ sources = "" config_dialog.cc content_colour_conversion_dialog.cc content_menu.cc + content_panel.cc + content_sub_panel.cc isdcf_metadata_dialog.cc dir_picker_ctrl.cc dolby_certificate_dialog.cc doremi_certificate_dialog.cc download_certificate_dialog.cc film_editor.cc - film_editor_panel.cc film_viewer.cc filter_dialog.cc filter_editor.cc @@@ -39,7 -38,6 +39,7 @@@ server_dialog.cc servers_list_dialog.cc subtitle_panel.cc + subtitle_view.cc table_dialog.cc timecode.cc timeline.cc @@@ -69,6 -67,9 +69,9 @@@ def configure(conf) conf.env.LIB_WXWIDGETS.append('Xxf86vm') conf.env.LIB_WXWIDGETS.append('Xext') conf.env.LIB_WXWIDGETS.append('X11') + + if conf.env.TARGET_CENTOS_7: + conf.env.LIB_WXWIDGETS.append('Xxf86vm') conf.in_msg = 1 wx_version = conf.check_cfg(package='', path=conf.options.wx_config, args='--version').strip() diff --combined wscript index df839a96b,ef72a61e5..681654bb8 --- a/wscript +++ b/wscript @@@ -3,7 -3,7 +3,7 @@@ import o import sys APPNAME = 'dcpomatic' -VERSION = '1.72.2devel' +VERSION = '2.0.0devel' def options(opt): opt.load('compiler_cxx') @@@ -11,10 -11,12 +11,12 @@@ opt.add_option('--enable-debug', action='store_true', default=False, help='build with debugging information and without optimisation') opt.add_option('--disable-gui', action='store_true', default=False, help='disable building of GUI tools') + opt.add_option('--disable-tests', action='store_true', default=False, help='disable building of tests') opt.add_option('--target-windows', action='store_true', default=False, help='set up to do a cross-compile to make a Windows package') opt.add_option('--target-debian', action='store_true', default=False, help='set up to compile for a Debian/Ubuntu package') opt.add_option('--debian-unstable', action='store_true', default=False, help='add extra libraries to static-build correctly on Debian unstable') - opt.add_option('--target-centos', action='store_true', default=False, help='set up to compile for a Centos package') + opt.add_option('--target-centos-6', action='store_true', default=False, help='set up to compile for a Centos 6.5 package') + opt.add_option('--target-centos-7', action='store_true', default=False, help='set up to compile for a Centos 7 package') opt.add_option('--magickpp-config', action='store', default='Magick++-config', help='path to Magick++-config') opt.add_option('--wx-config', action='store', default='wx-config', help='path to wx-config') opt.add_option('--address-sanitizer', action='store_true', default=False, help='build with address sanitizer') @@@ -56,9 -58,9 +58,13 @@@ def dynamic_openjpeg(conf) conf.check_cfg(package='libopenjpeg', args='--cflags --libs', max_version='1.5.2', mandatory=True) def static_dcp(conf, static_boost, static_xmlpp, static_xmlsec, static_ssh): ++<<<<<<< HEAD + conf.check_cfg(package='libdcp-1.0', atleast_version='0.95', args='--cflags', uselib_store='DCP', mandatory=True) ++======= + conf.check_cfg(package='libdcp', atleast_version='0.96', args='--cflags', uselib_store='DCP', mandatory=True) ++>>>>>>> origin/master conf.env.DEFINES_DCP = [f.replace('\\', '') for f in conf.env.DEFINES_DCP] - conf.env.STLIB_DCP = ['dcp', 'asdcp-libdcp', 'kumu-libdcp'] + conf.env.STLIB_DCP = ['dcp-1.0', 'asdcp-libdcp-1.0', 'kumu-libdcp-1.0'] conf.env.LIB_DCP = ['glibmm-2.4', 'ssl', 'crypto', 'bz2', 'xslt'] if static_boost: @@@ -82,7 -84,7 +88,7 @@@ conf.env.LIB_DCP.append('ssh') def dynamic_dcp(conf): - conf.check_cfg(package='libdcp', atleast_version='0.95.0', args='--cflags --libs', uselib_store='DCP', mandatory=True) + conf.check_cfg(package='libdcp-1.0', atleast_version='0.92', args='--cflags --libs', uselib_store='DCP', mandatory=True) conf.env.DEFINES_DCP = [f.replace('\\', '') for f in conf.env.DEFINES_DCP] def dynamic_ssh(conf): @@@ -163,14 -165,16 +169,16 @@@ def configure(conf) # conf.options -> conf.env conf.env.TARGET_WINDOWS = conf.options.target_windows conf.env.DISABLE_GUI = conf.options.disable_gui + conf.env.DISABLE_TESTS = conf.options.disable_tests conf.env.TARGET_DEBIAN = conf.options.target_debian conf.env.DEBIAN_UNSTABLE = conf.options.debian_unstable - conf.env.TARGET_CENTOS = conf.options.target_centos + conf.env.TARGET_CENTOS_6 = conf.options.target_centos_6 + conf.env.TARGET_CENTOS_7 = conf.options.target_centos_7 conf.env.VERSION = VERSION conf.env.TARGET_OSX = sys.platform == 'darwin' conf.env.TARGET_LINUX = not conf.env.TARGET_WINDOWS and not conf.env.TARGET_OSX # true if we should build dcpomatic/libdcpomatic/libdcpomatic-wx statically - conf.env.BUILD_STATIC = conf.options.target_debian or conf.options.target_centos + conf.env.BUILD_STATIC = conf.options.target_debian or conf.options.target_centos_6 or conf.options.target_centos_7 if conf.options.install_prefix is None: conf.env.INSTALL_PREFIX = conf.env.PREFIX else: @@@ -218,8 -222,8 +226,8 @@@ # POSIX if conf.env.TARGET_LINUX or conf.env.TARGET_OSX: conf.env.append_value('CXXFLAGS', '-DDCPOMATIC_POSIX') - conf.env.append_value('CXXFLAGS', '-DPOSIX_LOCALE_PREFIX="%s/share/locale"' % conf.env['PREFIX']) - conf.env.append_value('CXXFLAGS', '-DPOSIX_ICON_PREFIX="%s/share/dcpomatic"' % conf.env['PREFIX']) + conf.env.append_value('CXXFLAGS', '-DPOSIX_LOCALE_PREFIX="%s/share/locale"' % conf.env['INSTALL_PREFIX']) + conf.env.append_value('CXXFLAGS', '-DPOSIX_ICON_PREFIX="%s/share/dcpomatic"' % conf.env['INSTALL_PREFIX']) boost_lib_suffix = '' boost_thread = 'boost_thread' conf.env.append_value('LINKFLAGS', '-pthread') @@@ -249,7 -253,7 +257,7 @@@ if conf.env.TARGET_DEBIAN: conf.check_cfg(package='libcxml', atleast_version='0.08', args='--cflags', uselib_store='CXML', mandatory=True) conf.env.STLIB_CXML = ['cxml'] - conf.check_cfg(package='libxml++-2.6', args='--cflags --libs', uselib_store='XML++', mandatory=True) + conf.check_cfg(package='libxml++-2.6', args='--cflags --libs', uselib_store='XMLPP', mandatory=True) conf.check_cfg(package='libcurl', args='--cflags --libs', uselib_store='CURL', mandatory=True) conf.env.STLIB_QUICKMAIL = ['quickmail'] static_ffmpeg(conf) @@@ -257,7 -261,8 +265,8 @@@ static_dcp(conf, False, False, False, False) dynamic_boost(conf, boost_lib_suffix, boost_thread) - if conf.env.TARGET_CENTOS: + if conf.env.TARGET_CENTOS_6: + # Centos 6.5's boost is too old, so we build a new version statically in the chroot conf.check_cfg(package='libcxml', atleast_version='0.08', args='--cflags --libs-only-L', uselib_store='CXML', mandatory=True) conf.env.STLIB_CXML = ['cxml', 'boost_filesystem'] conf.check_cfg(package='libcurl', args='--cflags --libs-only-L', uselib_store='CURL', mandatory=True) @@@ -270,8 -275,22 +279,22 @@@ static_dcp(conf, True, True, True, True) static_boost(conf, boost_lib_suffix) + if conf.env.TARGET_CENTOS_7: + # Centos 7's boost is ok so we link it dynamically + conf.check_cfg(package='libcxml', atleast_version='0.08', args='--cflags', uselib_store='CXML', mandatory=True) + conf.env.STLIB_CXML = ['cxml'] + conf.check_cfg(package='libcurl', args='--cflags --libs', uselib_store='CURL', mandatory=True) + conf.env.STLIB_QUICKMAIL = ['quickmail'] + conf.env.LIB_SSH = ['gssapi_krb5'] + conf.env.LIB_XMLPP = ['xml2'] + conf.env.LIB_XMLSEC = ['ltdl'] + static_ffmpeg(conf) + static_openjpeg(conf) + static_dcp(conf, False, True, True, True) + dynamic_boost(conf, boost_lib_suffix, boost_thread) + if conf.env.TARGET_WINDOWS: - conf.check_cfg(package='libxml++-2.6', args='--cflags --libs', uselib_store='XML++', mandatory=True) + conf.check_cfg(package='libxml++-2.6', args='--cflags --libs', uselib_store='XMLPP', mandatory=True) conf.check_cfg(package='libcurl', args='--cflags --libs', uselib_store='CURL', mandatory=True) conf.check_cxx(fragment=""" #include \n @@@ -288,9 -307,9 +311,9 @@@ dynamic_ssh(conf) # Not packaging; just a straight build - if not conf.env.TARGET_WINDOWS and not conf.env.TARGET_DEBIAN and not conf.env.TARGET_CENTOS: + if not conf.env.TARGET_WINDOWS and not conf.env.TARGET_DEBIAN and not conf.env.TARGET_CENTOS_6 and not conf.env.TARGET_CENTOS_7: conf.check_cfg(package='libcxml', atleast_version='0.08', args='--cflags --libs', uselib_store='CXML', mandatory=True) - conf.check_cfg(package='libxml++-2.6', args='--cflags --libs', uselib_store='XML++', mandatory=True) + conf.check_cfg(package='libxml++-2.6', args='--cflags --libs', uselib_store='XMLPP', mandatory=True) conf.check_cfg(package='libcurl', args='--cflags --libs', uselib_store='CURL', mandatory=True) dynamic_quickmail(conf) dynamic_boost(conf, boost_lib_suffix, boost_thread) @@@ -304,8 -323,6 +327,8 @@@ conf.check_cfg(package='glib-2.0', args='--cflags --libs', uselib_store='GLIB', mandatory=True) conf.check_cfg(package= '', path=conf.options.magickpp_config, args='--cppflags --cxxflags --libs', uselib_store='MAGICK', mandatory=True) conf.check_cfg(package='libzip', args='--cflags --libs', uselib_store='ZIP', mandatory=True) + conf.check_cfg(package='pangomm-1.4', args='--cflags --libs', uselib_store='PANGOMM', mandatory=True) + conf.check_cfg(package='cairomm-1.0', args='--cflags --libs', uselib_store='CAIROMM', mandatory=True) conf.check_cc(fragment=""" #include @@@ -325,13 -342,15 +348,15 @@@ conf.define('DATADIR', datadir) conf.recurse('src') - conf.recurse('test') + if not conf.env.DISABLE_TESTS: + conf.recurse('test') def build(bld): create_version_cc(VERSION, bld.env.CXXFLAGS) bld.recurse('src') - bld.recurse('test') + if not bld.env.DISABLE_TESTS: + bld.recurse('test') if bld.env.TARGET_WINDOWS: bld.recurse('platform/windows') if bld.env.TARGET_LINUX: @@@ -409,4 -428,4 +434,4 @@@ def pot_merge(bld) bld.recurse('src') def tags(bld): - os.system('etags src/lib/*.cc src/lib/*.h src/wx/*.cc src/wx/*.h src/tools/*.cc src/tools/*.h') + os.system('etags src/lib/*.cc src/lib/*.h src/wx/*.cc src/wx/*.h src/tools/*.cc src/tools/*.h test/*.cc')