diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-06-27 17:08:01 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-06-27 17:08:01 +0100 |
| commit | 409db67a7e665c562b4c46035e6394263a93a7f6 (patch) | |
| tree | 6728640477cdaf0e734948c3128a2131694352a8 | |
| parent | 362068b534ffefcb87debd4d56b56645f3e25f21 (diff) | |
| parent | 4833c6d5dd49ecd768af5edad81823baa9c094ab (diff) | |
Merge branch 'master' of ssh://carlh.dnsalias.org/home/carl/git/dvdomatic
| -rw-r--r-- | ChangeLog | 12 | ||||
| -rw-r--r-- | debian/changelog | 12 | ||||
| -rw-r--r-- | src/lib/cross.cc | 2 | ||||
| -rw-r--r-- | src/lib/trimmer.cc | 23 | ||||
| -rw-r--r-- | src/lib/trimmer.h | 1 | ||||
| -rw-r--r-- | src/tools/wscript | 4 | ||||
| -rw-r--r-- | src/wx/wscript | 17 | ||||
| -rw-r--r-- | test/trimmer_test.cc | 15 | ||||
| -rw-r--r-- | wscript | 4 |
9 files changed, 72 insertions, 18 deletions
@@ -1,3 +1,15 @@ +2013-06-27 Carl Hetherington <cth@carlh.net> + + * Version 0.104 released. + +2013-06-27 Carl Hetherington <cth@carlh.net> + + * Hopefully fix problems with end-trim not working. + +2013-06-24 Carl Hetherington <cth@carlh.net> + + * Version 0.103 released. + 2013-06-20 Carl Hetherington <cth@carlh.net> * Version 0.102 released. diff --git a/debian/changelog b/debian/changelog index 8e83140f5..d12d73316 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,15 @@ +dvdomatic (0.104-1) UNRELEASED; urgency=low + + * New upstream release. + + -- Carl Hetherington <carl@houllier.lan> Thu, 27 Jun 2013 01:20:18 +0100 + +dvdomatic (0.103-1) UNRELEASED; urgency=low + + * New upstream release. + + -- Carl Hetherington <carl@houllier.lan> Mon, 24 Jun 2013 23:39:57 +0100 + dvdomatic (0.102-1) UNRELEASED; urgency=low * New upstream release. diff --git a/src/lib/cross.cc b/src/lib/cross.cc index 895fb0ac2..86146c1b1 100644 --- a/src/lib/cross.cc +++ b/src/lib/cross.cc @@ -154,7 +154,7 @@ run_ffprobe (boost::filesystem::path content, boost::filesystem::path out, share CloseHandle (process_info.hThread); CloseHandle (child_stderr_read); #else - string ffprobe = "ffprobe 2> \"" + content.string() + "\" 2> \"" + out.string(); + string ffprobe = "ffprobe \"" + content.string() + "\" 2> \"" + out.string() + "\""; log->log (String::compose ("Probing with %1", ffprobe)); system (ffprobe.c_str ()); #endif diff --git a/src/lib/trimmer.cc b/src/lib/trimmer.cc index b7afc9299..1ec9e2a5b 100644 --- a/src/lib/trimmer.cc +++ b/src/lib/trimmer.cc @@ -18,6 +18,7 @@ */ #include <boost/shared_ptr.hpp> +#include <stdint.h> #include "trimmer.h" using std::cout; @@ -55,18 +56,22 @@ Trimmer::Trimmer ( _audio_end = video_frames_to_audio_frames (_video_end, audio_sample_rate, frames_per_second); } - /* XXX: this is a hack; this flag means that no trim is happening at the end of the film, and I'm - using that to prevent audio trim being rounded to video trim, which breaks the current set - of regression tests. This could be removed if a) the regression tests are regenerated and b) - I can work out what DCP length should be. + /* XXX: this is a hack; if there is no trim at the end, set + the audio end point to infinity so that + shorter-video-than-audio does not trim audio (which breaks + the current set of regression tests). This could be + removed if a) the regression tests are regenerated and b) I + can work out what DCP length should be. */ - _no_trim = (_video_start == 0) && (_video_end == (video_length - video_trim_end)); + if (video_trim_end == 0) { + _audio_end = INT64_MAX; + } } void Trimmer::process_video (shared_ptr<const Image> image, bool same, shared_ptr<Subtitle> sub) { - if (_no_trim || (_video_in >= _video_start && _video_in <= _video_end)) { + if (_video_in >= _video_start && _video_in < _video_end) { Video (image, same, sub); } @@ -76,13 +81,9 @@ Trimmer::process_video (shared_ptr<const Image> image, bool same, shared_ptr<Sub void Trimmer::process_audio (shared_ptr<const AudioBuffers> audio) { - if (_no_trim) { - Audio (audio); - return; - } - int64_t offset = _audio_start - _audio_in; if (offset > audio->frames()) { + /* we haven't reached the start of the untrimmed section yet */ _audio_in += audio->frames (); return; } diff --git a/src/lib/trimmer.h b/src/lib/trimmer.h index 98a118fb2..45b3f149a 100644 --- a/src/lib/trimmer.h +++ b/src/lib/trimmer.h @@ -36,5 +36,4 @@ private: int64_t _audio_start; int64_t _audio_end; int64_t _audio_in; - bool _no_trim; }; diff --git a/src/tools/wscript b/src/tools/wscript index 13c5d7590..386aa452e 100644 --- a/src/tools/wscript +++ b/src/tools/wscript @@ -6,7 +6,7 @@ import i18n def build(bld): for t in ['makedcp', 'servomatic_cli', 'servomatictest']: obj = bld(features = 'cxx cxxprogram') - obj.uselib = 'BOOST_THREAD OPENJPEG DCP AVFORMAT AVFILTER AVCODEC AVUTIL SWSCALE POSTPROC CXML' + obj.uselib = 'BOOST_THREAD OPENJPEG DCP AVFORMAT AVFILTER AVCODEC AVUTIL SWSCALE POSTPROC CXML WXWIDGETS' obj.includes = ['..'] obj.use = ['libdvdomatic'] obj.source = '%s.cc' % t @@ -15,7 +15,7 @@ def build(bld): if not bld.env.DISABLE_GUI: for t in ['dvdomatic', 'dvdomatic_batch', 'servomatic_gui']: obj = bld(features = 'cxx cxxprogram') - obj.uselib = 'DCP OPENJPEG AVFORMAT AVFILTER AVCODEC AVUTIL SWSCALE POSTPROC CXML' + obj.uselib = 'DCP OPENJPEG AVFORMAT AVFILTER AVCODEC AVUTIL SWSCALE POSTPROC CXML WXWIDGETS' obj.includes = ['..'] obj.use = ['libdvdomatic', 'libdvdomatic-wx'] obj.source = '%s.cc' % t diff --git a/src/wx/wscript b/src/wx/wscript index 1c5e3b8cc..9213d7220 100644 --- a/src/wx/wscript +++ b/src/wx/wscript @@ -25,7 +25,22 @@ sources = """ """ def configure(conf): - conf.check_cfg(package = '', path = conf.options.wx_config, args = '--cppflags --cxxflags --libs', uselib_store = 'WXWIDGETS', mandatory = True) + conf.check_cfg(msg='Checking for wxWidgets', package='', path=conf.options.wx_config, + args='--cppflags --cxxflags --libs', + uselib_store='WXWIDGETS', mandatory=True) + + if conf.env.STATIC: + # wx-config returns its static libraries as full paths, without -l prefixes, which I think confuses + # check_cfg(), so it ends up putting these libraries before even the .cc file when linking. + # This hack works around that. + conf.env.STLIB_WXWIDGETS = ['wx_gtk2u_xrc-2.9', 'wx_gtk2u_qa-2.9', 'wx_baseu_net-2.9', 'wx_gtk2u_html-2.9', + 'wx_gtk2u_adv-2.9', 'wx_gtk2u_core-2.9', 'wx_baseu_xml-2.9', 'wx_baseu-2.9'] + + conf.in_msg = 1 + wx_version = conf.check_cfg(package='', path=conf.options.wx_config, args='--version').strip() + conf.im_msg = 0 + if wx_version != '2.9.4': + conf.fatal('wxwidgets version 2.9.4 is required; %s found' % wx_version) def build(bld): if bld.env.STATIC: diff --git a/test/trimmer_test.cc b/test/trimmer_test.cc index 605f7d1b2..ad2f2f6f5 100644 --- a/test/trimmer_test.cc +++ b/test/trimmer_test.cc @@ -20,12 +20,14 @@ using boost::shared_ptr; shared_ptr<const Image> trimmer_test_last_video; +int trimmer_test_video_frames = 0; shared_ptr<const AudioBuffers> trimmer_test_last_audio; void trimmer_test_video_helper (shared_ptr<const Image> image, bool, shared_ptr<Subtitle>) { trimmer_test_last_video = image; + ++trimmer_test_video_frames; } void @@ -92,4 +94,17 @@ BOOST_AUTO_TEST_CASE (trimmer_audio_test) BOOST_CHECK (trimmer_test_last_audio == 0); } +BOOST_AUTO_TEST_CASE (trim_end_test) +{ + Trimmer trimmer (shared_ptr<Log> (), 0, 75, 200, 48000, 25, 25); + + shared_ptr<SimpleImage> image (new SimpleImage (PIX_FMT_RGB24, libdcp::Size (256, 256), true)); + trimmer.Video.connect (bind (&trimmer_test_video_helper, _1, _2, _3)); + trimmer_test_video_frames = 0; + for (int i = 0; i < 200; ++i) { + trimmer.process_video (image, false, shared_ptr<Subtitle> ()); + } + + BOOST_CHECK_EQUAL (trimmer_test_video_frames, 125); +} @@ -3,7 +3,7 @@ import os import sys APPNAME = 'dvdomatic' -VERSION = '0.103pre' +VERSION = '0.105pre' def options(opt): opt.load('compiler_cxx') @@ -28,7 +28,7 @@ def configure(conf): conf.env.TARGET_OSX = sys.platform == 'darwin' conf.env.TARGET_LINUX = not conf.env.TARGET_WINDOWS and not conf.env.TARGET_OSX - conf.env.append_value('CXXFLAGS', ['-D__STDC_CONSTANT_MACROS', '-msse', '-mfpmath=sse', '-ffast-math', '-fno-strict-aliasing', + conf.env.append_value('CXXFLAGS', ['-D__STDC_CONSTANT_MACROS', '-D__STDC_LIMIT_MACROS', '-msse', '-mfpmath=sse', '-ffast-math', '-fno-strict-aliasing', '-Wall', '-Wno-attributes', '-Wextra']) if conf.env.TARGET_WINDOWS: |
