Hack around no-trim altering the ends of encodes.
authorCarl Hetherington <cth@carlh.net>
Wed, 24 Apr 2013 00:18:49 +0000 (01:18 +0100)
committerCarl Hetherington <cth@carlh.net>
Wed, 24 Apr 2013 00:18:49 +0000 (01:18 +0100)
src/lib/trimmer.cc
src/lib/trimmer.h

index 39ec44fcb630d2eb250dc4bddeefd8078f3eb524..0746b74108d884cb2233924801f693e4614cbb50 100644 (file)
@@ -53,12 +53,19 @@ Trimmer::Trimmer (
                _audio_start = video_frames_to_audio_frames (_video_start, audio_sample_rate, frames_per_second);
                _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.
+       */
+       _no_trim = (_video_start == 0) && (_video_end == (video_length - video_trim_end));
 }
 
 void
 Trimmer::process_video (shared_ptr<const Image> image, bool same, shared_ptr<Subtitle> sub)
 {
-       if (_video_in >= _video_start && _video_in <= _video_end) {
+       if (_no_trim || (_video_in >= _video_start && _video_in <= _video_end)) {
                Video (image, same, sub);
        }
        
@@ -68,6 +75,11 @@ 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()) {
                _audio_in += audio->frames ();
index 45b3f149a3ed770840043e422c08179c1bc97db9..98a118fb27abe784366efecb64bf59b4204dda23 100644 (file)
@@ -36,4 +36,5 @@ private:
        int64_t _audio_start;
        int64_t _audio_end;
        int64_t _audio_in;
+       bool _no_trim;
 };