From c1935537a671dea6b3112dbf8a93757eb3fc9e9f Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Thu, 27 Jun 2013 00:24:56 +0100 Subject: Hopefully fix problems with end-trim not working. --- ChangeLog | 4 ++++ src/lib/trimmer.cc | 23 ++++++++++++----------- src/lib/trimmer.h | 1 - wscript | 2 +- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index e0a8f4bbe..238ad8604 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2013-06-27 Carl Hetherington + + * Hopefully fix problems with end-trim not working. + 2013-06-24 Carl Hetherington * Version 0.103 released. 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 +#include #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 image, bool same, shared_ptr 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 image, bool same, shared_ptr 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/wscript b/wscript index e04cea069..a4d08d416 100644 --- a/wscript +++ b/wscript @@ -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: -- cgit v1.2.3