Merge master; fix crash on new film.
authorCarl Hetherington <cth@carlh.net>
Fri, 26 Apr 2013 22:41:02 +0000 (23:41 +0100)
committerCarl Hetherington <cth@carlh.net>
Fri, 26 Apr 2013 22:41:02 +0000 (23:41 +0100)
54 files changed:
ChangeLog
builds/control-12.04-32
builds/control-12.04-64
builds/control-12.10-32
builds/control-12.10-64
cscript
debian/rules
src/lib/ab_transcoder.cc
src/lib/ab_transcoder.h
src/lib/analyse_audio_job.cc
src/lib/analyse_audio_job.h
src/lib/audio_sink.h
src/lib/audio_source.cc
src/lib/audio_source.h
src/lib/combiner.cc
src/lib/combiner.h
src/lib/delay_line.cc
src/lib/delay_line.h
src/lib/encoder.cc
src/lib/encoder.h
src/lib/gain.cc
src/lib/gain.h
src/lib/image.cc
src/lib/image.h
src/lib/matcher.cc
src/lib/matcher.h
src/lib/player.cc
src/lib/player.h
src/lib/po/es_ES.po
src/lib/po/fr_FR.po
src/lib/po/it_IT.po
src/lib/po/sv_SE.po
src/lib/transcoder.cc
src/lib/transcoder.h
src/lib/trimmer.cc
src/lib/trimmer.h
src/lib/util.cc
src/lib/util.h
src/lib/video_sink.h
src/lib/video_source.cc
src/lib/video_source.h
src/tools/dcpomatic_cli.cc
src/tools/po/es_ES.po
src/tools/po/fr_FR.po
src/tools/po/it_IT.po
src/tools/po/sv_SE.po
src/tools/servomatictest.cc
src/wx/film_viewer.cc
src/wx/film_viewer.h
src/wx/po/es_ES.po
src/wx/po/fr_FR.po
src/wx/po/it_IT.po
src/wx/po/sv_SE.po
test/test.cc

index ffbbcfb2d7554b82d9c009560b49ae7b59f91b82..c5df3d2cc34956f3e279cad2d90de2a24ec98dca 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2013-04-26  Carl Hetherington  <cth@carlh.net>
+
+       * Version 0.87 released.
+
+2013-04-26  Carl Hetherington  <cth@carlh.net>
+
+       * Make new trim options actually work (#121).
+
+2013-04-23  Carl Hetherington  <cth@carlh.net>
+
+       * Version 0.86 released.
+
+2013-04-23  Carl Hetherington  <cth@carlh.net>
+
+       * Version 0.85 released.
+
 2013-04-21  Carl Hetherington  <cth@carlh.net>
 
        * Version 0.84 released.
index d31a5e3844623f9343154bbd8a620fc24eef1e64..571beee510612921307009e578c4a7afe131b152 100644 (file)
@@ -13,3 +13,12 @@ Description: Generator of Digital Cinema Packages (DCPs)
   DCP-o-matic generates Digital Cinema Packages (DCPs) from video and audio
   files (such as those from DVDs or Blu-Rays) for presentation on DCI-compliant
   digital projectors.
+
+Package: dvdomatic-dbg
+Architecture: i386
+Section: debug
+Priority: extra
+Depends: ${dvdomatic:Depends}, ${misc:Depends}
+Description: debugging symbols for dvdomatic
+  This package contains the debugging symbols for dvdomatic.
+
index 5d41558b61f34dd9e208aa8b801c484d3131088e..77fbd9e8f47e7f56cd86f877cf565a70b908bd40 100644 (file)
@@ -13,3 +13,12 @@ Description: Generator of Digital Cinema Packages (DCPs)
   DCP-o-matic generates Digital Cinema Packages (DCPs) from video and audio
   files (such as those from DVDs or Blu-Rays) for presentation on DCI-compliant
   digital projectors.
+
+Package: dvdomatic-dbg
+Architecture: amd64
+Section: debug
+Priority: extra
+Depends: ${dvdomatic:Depends}, ${misc:Depends}
+Description: debugging symbols for dvdomatic
+  This package contains the debugging symbols for dvdomatic.
+
index 67933f2ed3e76b1743a29d1895901de758035d2b..80b024e46a1e183017a2c5de6ddc6555c3ce1bdf 100644 (file)
@@ -13,3 +13,11 @@ Description: Generator of Digital Cinema Packages (DCPs)
   DCP-o-matic generates Digital Cinema Packages (DCPs) from video and audio
   files (such as those from DVDs or Blu-Rays) for presentation on DCI-compliant
   digital projectors.
+
+Package: dvdomatic-dbg
+Architecture: i386
+Section: debug
+Priority: extra
+Depends: ${dvdomatic:Depends}, ${misc:Depends}
+Description: debugging symbols for dvdomatic
+  This package contains the debugging symbols for dvdomatic.
index cddf80007628ac5d45f4a0291bcbf06190762436..24e893c157e5e19340a4843aaac7a98b35e2c625 100644 (file)
@@ -13,3 +13,12 @@ Description: Generator of Digital Cinema Packages (DCPs)
   DCP-o-matic generates Digital Cinema Packages (DCPs) from video and audio
   files (such as those from DVDs or Blu-Rays) for presentation on DCI-compliant
   digital projectors.
+
+Package: dvdomatic-dbg
+Architecture: amd64
+Section: debug
+Priority: extra
+Depends: ${dvdomatic:Depends}, ${misc:Depends}
+Description: debugging symbols for dvdomatic
+  This package contains the debugging symbols for dvdomatic.
+
diff --git a/cscript b/cscript
index cd60162d94324d720a42ce05004672419182f044..92157a5813d4a9a122870146aabcc413f3830e91 100644 (file)
--- a/cscript
+++ b/cscript
@@ -56,7 +56,12 @@ def package(env, target, version):
         env.set('CDIST_CXXFLAGS', env.get('CXXFLAGS'))
         env.set('CDIST_PKG_CONFIG_PATH', env.get('PKG_CONFIG_PATH'))
         env.command('dpkg-buildpackage')
-        return os.path.abspath(glob.glob('../*.deb')[0])
+        
+        debs = []
+        for p in glob.glob('../*.deb'):
+            debs.append(os.path.abspath(p))
+
+        return debs
 
 def make_pot(env):
     env.command('./waf pot')
index 7f7da5530eddbb8d128f2ba9035454482dbe7844..17594701970869bd061c1f082cfdeb531c5607b0 100755 (executable)
@@ -14,7 +14,7 @@
 
 override_dh_auto_configure:
        LINKFLAGS=$(CDIST_LINKFLAGS) CXXFLAGS="$(CXXFLAGS) $(CDIST_CXXFLAGS)" PKG_CONFIG_PATH=$(CDIST_PKG_CONFIG_PATH) \
-                ./waf --nocache configure --prefix=/usr --static
+                ./waf --nocache configure --prefix=/usr --static --enable-debug
 
 override_dh_auto_build:
        ./waf --nocache build
@@ -22,3 +22,6 @@ override_dh_auto_build:
 override_dh_auto_install:
        ./waf --nocache install --destdir=debian/dcpomatic
 
+.PHONY: override_dh_strip
+override_dh_strip:
+       dh_strip --dbg-package=dvdomatic-dbg
index c6ccfdc67e268492a9cae8eca5de06f53c7b3daf..2e0d41e7de08f24c4bc83b6fb615cecf9cf9a0de 100644 (file)
@@ -29,6 +29,7 @@
 #include "delay_line.h"
 #include "gain.h"
 #include "combiner.h"
+#include "trimmer.h"
 
 /** @file src/ab_transcoder.cc
  *  @brief A transcoder which uses one Film for the left half of the screen, and a different one
@@ -62,14 +63,24 @@ ABTranscoder::ABTranscoder (shared_ptr<Film> a, shared_ptr<Film> b, shared_ptr<J
        _player_a->Video.connect (bind (&Combiner::process_video, _combiner, _1, _2, _3, _4));
        _player_b->Video.connect (bind (&Combiner::process_video_b, _combiner, _1, _2, _3, _4));
 
+       int const trim_start = _film_a->trim_type() == Film::ENCODE ? _film_a->trim_start() : 0;
+       int const trim_end = _film_a->trim_type() == Film::ENCODE ? _film_a->trim_end() : 0;
+       _trimmer.reset (new Trimmer (
+                               _film_a->log(), trim_start, trim_end, _film_a->content_length(),
+                               _film_a->audio_frame_rate(), _film_a->video_frame_rate(), _film_a->dcp_frame_rate()
+                               ));
+       
+
        _combiner->connect_video (_delay_line);
        _delay_line->connect_video (_matcher);
-       _matcher->connect_video (_encoder);
+       _matcher->connect_video (_trimmer);
+       _trimmer->connect_video (_encoder);
        
        _player_a->connect_audio (_delay_line);
        _delay_line->connect_audio (_matcher);
        _matcher->connect_audio (_gain);
-       _gain->connect_audio (_encoder);
+       _gain->connect_audio (_trimmer);
+       _trimmer->connect_audio (_encoder);
 }
 
 void
@@ -91,16 +102,11 @@ ABTranscoder::go ()
                        break;
                }
        }
-
-       if (_delay_line) {
-               _delay_line->process_end ();
-       }
-       if (_matcher) {
-               _matcher->process_end ();
-       }
-       if (_gain) {
-               _gain->process_end ();
-       }
+               
+       _delay_line->process_end ();
+       _matcher->process_end ();
+       _gain->process_end ();
+       _trimmer->process_end ();
        _encoder->process_end ();
 }
                            
index b1b01d724f7b4818400122c7347aafe8d9f0bcad..1fef66b8870a3ae72de2d8a645e056d656239350 100644 (file)
@@ -36,6 +36,7 @@ class DelayLine;
 class Gain;
 class Combiner;
 class Player;
+class Trimmer;
 
 /** @class ABTranscoder
  *  @brief A transcoder which uses one Film for the left half of the screen, and a different one
@@ -63,5 +64,6 @@ private:
        boost::shared_ptr<Matcher> _matcher;
        boost::shared_ptr<DelayLine> _delay_line;
        boost::shared_ptr<Gain> _gain;
+       boost::shared_ptr<Trimmer> _trimmer;
        boost::shared_ptr<Image> _image;
 };
index 50096d7c125f183d694d4534febbadb4f20f4739..f3c55b208db152bd866eed8a44f550ff2c20c957 100644 (file)
@@ -71,7 +71,7 @@ AnalyseAudioJob::run ()
 }
 
 void
-AnalyseAudioJob::audio (shared_ptr<AudioBuffers> b)
+AnalyseAudioJob::audio (shared_ptr<const AudioBuffers> b)
 {
        for (int i = 0; i < b->frames(); ++i) {
                for (int j = 0; j < b->channels(); ++j) {
index dc1e073ee15a031552dc3975572ad2c8d9f97b2b..5435e0a7cfb5401fe5efc2901ac367f7b23c1826 100644 (file)
@@ -31,7 +31,7 @@ public:
        void run ();
 
 private:
-       void audio (boost::shared_ptr<AudioBuffers>);
+       void audio (boost::shared_ptr<const AudioBuffers>);
 
        int64_t _done;
        int64_t _samples_per_point;
index ba4b772c8a66b02057d070e8d014473479d76604..ee39f9ee749bcdd90ff00c2954d1d79c6baf6336 100644 (file)
@@ -24,14 +24,14 @@ class AudioSink
 {
 public:
        /** Call with some audio data */
-       virtual void process_audio (boost::shared_ptr<AudioBuffers>) = 0;
+       virtual void process_audio (boost::shared_ptr<const AudioBuffers>) = 0;
 };
 
 class TimedAudioSink
 {
 public:
         /** Call with some audio data */
-        virtual void process_audio (boost::shared_ptr<AudioBuffers>, double t) = 0;
+        virtual void process_audio (boost::shared_ptr<const AudioBuffers>, double t) = 0;
 };
 
 #endif
index 3dd3027ab4650bd23fd4ef4fc8fd958438e5a7f4..32b3deccfa4a887384d7c834eb1d9d2bcf0c039b 100644 (file)
@@ -25,7 +25,7 @@ using boost::weak_ptr;
 using boost::bind;
 
 static void
-process_audio_proxy (weak_ptr<AudioSink> sink, shared_ptr<AudioBuffers> audio)
+process_audio_proxy (weak_ptr<AudioSink> sink, shared_ptr<const AudioBuffers> audio)
 {
        shared_ptr<AudioSink> p = sink.lock ();
        if (p) {
@@ -44,3 +44,9 @@ TimedAudioSource::connect_audio (shared_ptr<TimedAudioSink> s)
 {
        Audio.connect (bind (&TimedAudioSink::process_audio, s, _1, _2));
 }
+
+void
+TimedAudioSource::connect_audio (shared_ptr<AudioSink> s)
+{
+       Audio.connect (bind (&AudioSink::process_audio, s, _1));
+}
index dd248071651fbbc0e7c1b497e9cfcdf39c899970..c7f0a09ed762c438250e67394dc50ab33dcb0892 100644 (file)
@@ -35,7 +35,7 @@ class AudioSource
 {
 public:
        /** Emitted when some audio data is ready */
-       boost::signals2::signal<void (boost::shared_ptr<AudioBuffers>)> Audio;
+       boost::signals2::signal<void (boost::shared_ptr<const AudioBuffers>)> Audio;
 
        void connect_audio (boost::shared_ptr<AudioSink>);
 };
@@ -46,8 +46,9 @@ class TimedAudioSource
 {
 public:
        /** Emitted when some audio data is ready */
-       boost::signals2::signal<void (boost::shared_ptr<AudioBuffers>, double)> Audio;
+       boost::signals2::signal<void (boost::shared_ptr<const AudioBuffers>, double)> Audio;
 
+       void connect_audio (boost::shared_ptr<AudioSink>);
        void connect_audio (boost::shared_ptr<TimedAudioSink>);
 };
 
index 0a9eaf6b60bf8e12d2689ade030c7f16c50f0081..367cefa7f49fead4aa824798143fbf237dbeed74 100644 (file)
@@ -33,9 +33,9 @@ Combiner::Combiner (shared_ptr<Log> log)
  *  @param image Frame image.
  */
 void
-Combiner::process_video (shared_ptr<Image> image, bool, shared_ptr<Subtitle>, double)
+Combiner::process_video (shared_ptr<const Image> image, bool, shared_ptr<Subtitle>, double)
 {
-       _image = image;
+       _image.reset (new SimpleImage (image));
 }
 
 /** Process video for the right half of the frame.
@@ -43,22 +43,21 @@ Combiner::process_video (shared_ptr<Image> image, bool, shared_ptr<Subtitle>, do
  *  @param sub Subtitle (which will be put onto the whole frame)
  */
 void
-Combiner::process_video_b (shared_ptr<Image> image, bool, shared_ptr<Subtitle> sub, double t)
+Combiner::process_video_b (shared_ptr<const Image> image, bool, shared_ptr<Subtitle> sub, double t)
 {
        /* Copy the right half of this image into our _image */
        /* XXX: this should probably be in the Image class */
        for (int i = 0; i < image->components(); ++i) {
                int const line_size = image->line_size()[i];
                int const half_line_size = line_size / 2;
-               int const stride = image->stride()[i];
 
                uint8_t* p = _image->data()[i];
                uint8_t* q = image->data()[i];
                        
                for (int j = 0; j < image->lines (i); ++j) {
                        memcpy (p + half_line_size, q + half_line_size, half_line_size);
-                       p += stride;
-                       q += stride;
+                       p += _image->stride()[i];
+                       q += image->stride()[i];
                }
        }
 
index a8f1fa804e9bd1549e4dbb727875b71e3c353bcc..7ed316e26934cd663a0ab9ae92aa64d4ddca8952 100644 (file)
@@ -33,8 +33,8 @@ class Combiner : public TimedVideoProcessor
 public:
        Combiner (boost::shared_ptr<Log> log);
 
-       void process_video (boost::shared_ptr<Image> i, bool, boost::shared_ptr<Subtitle> s, double);
-       void process_video_b (boost::shared_ptr<Image> i, bool, boost::shared_ptr<Subtitle> s, double);
+       void process_video (boost::shared_ptr<const Image> i, bool, boost::shared_ptr<Subtitle> s, double);
+       void process_video_b (boost::shared_ptr<const Image> i, bool, boost::shared_ptr<Subtitle> s, double);
 
 private:
        /** The image that we are currently working on */
index 9e6baeba8131f0ebe671f0b9d3112466bfe1e5f8..b0180800a4625795823697c2dd5c9d1bfd2fcfff 100644 (file)
@@ -37,7 +37,7 @@ DelayLine::DelayLine (shared_ptr<Log> log, double seconds)
 }
 
 void
-DelayLine::process_audio (shared_ptr<AudioBuffers> data, double t)
+DelayLine::process_audio (shared_ptr<const AudioBuffers> data, double t)
 {
        if (_seconds > 0) {
                t += _seconds;
@@ -47,7 +47,7 @@ DelayLine::process_audio (shared_ptr<AudioBuffers> data, double t)
 }
 
 void
-DelayLine::process_video (boost::shared_ptr<Image> image, bool same, boost::shared_ptr<Subtitle> sub, double t)
+DelayLine::process_video (shared_ptr<const Image> image, bool same, boost::shared_ptr<Subtitle> sub, double t)
 {
        if (_seconds < 0) {
                t += _seconds;
index 90f1dcfa7b55b56fd1c42442d3b7fa0311a2fa56..781dce88a63938f611b76179029851eee0d6715c 100644 (file)
@@ -26,8 +26,8 @@ class DelayLine : public TimedAudioVideoProcessor
 public:
        DelayLine (boost::shared_ptr<Log> log, double);
        
-       void process_video (boost::shared_ptr<Image>, bool, boost::shared_ptr<Subtitle>, double);
-       void process_audio (boost::shared_ptr<AudioBuffers>, double);
+       void process_video (boost::shared_ptr<const Image>, bool, boost::shared_ptr<Subtitle>, double);
+       void process_audio (boost::shared_ptr<const AudioBuffers>, double);
 
 private:
        double _seconds;
index f56440dd7c1026bfb97f564410bb8c36512beac3..c1d1041ae539f9cdab1f087291eb2d8d7104abbb 100644 (file)
@@ -240,7 +240,7 @@ Encoder::frame_done ()
 }
 
 void
-Encoder::process_video (shared_ptr<Image> image, bool same, shared_ptr<Subtitle> sub)
+Encoder::process_video (shared_ptr<const Image> image, bool same, shared_ptr<Subtitle> sub)
 {
        FrameRateConversion frc (_film->video_frame_rate(), _film->dcp_frame_rate());
        
@@ -303,7 +303,7 @@ Encoder::process_video (shared_ptr<Image> image, bool same, shared_ptr<Subtitle>
 }
 
 void
-Encoder::process_audio (shared_ptr<AudioBuffers> data)
+Encoder::process_audio (shared_ptr<const AudioBuffers> data)
 {
 #if HAVE_SWRESAMPLE
        /* Maybe sample-rate convert */
@@ -342,7 +342,9 @@ Encoder::terminate_threads ()
        lock.unlock ();
 
        for (list<boost::thread *>::iterator i = _threads.begin(); i != _threads.end(); ++i) {
-               (*i)->join ();
+               if ((*i)->joinable ()) {
+                       (*i)->join ();
+               }
                delete *i;
        }
 }
index 56007fd485f0ba04f2c1c6adff61acba516bef81..f95d42661b1ed5d50442beed89c7238fa614f675 100644 (file)
@@ -73,10 +73,10 @@ public:
         *  @param same true if i is the same as the last time we were called.
         *  @param s A subtitle that should be on this frame, or 0.
         */
-       void process_video (boost::shared_ptr<Image> i, bool same, boost::shared_ptr<Subtitle> s);
+       void process_video (boost::shared_ptr<const Image> i, bool same, boost::shared_ptr<Subtitle> s);
 
        /** Call with some audio data */
-       void process_audio (boost::shared_ptr<AudioBuffers>);
+       void process_audio (boost::shared_ptr<const AudioBuffers>);
 
        /** Called when a processing run has finished */
        virtual void process_end ();
index df7011d2e8100a14e537234d9e6d6fb0e2fb8d57..ccd779d7154f1b9813fb8754ee67abacc19064cd 100644 (file)
@@ -30,7 +30,7 @@ Gain::Gain (shared_ptr<Log> log, float gain)
 }
 
 void
-Gain::process_audio (shared_ptr<AudioBuffers> b)
+Gain::process_audio (shared_ptr<const AudioBuffers> b)
 {
        if (_gain != 0) {
                float const linear_gain = pow (10, _gain / 20);
index d462e5aeee2471988d203cee7805c8c2f458c400..61fef5e85a8236eece5b94f4453b69745a781c9d 100644 (file)
@@ -24,7 +24,7 @@ class Gain : public AudioProcessor
 public:
        Gain (boost::shared_ptr<Log> log, float gain);
 
-       void process_audio (boost::shared_ptr<AudioBuffers>);
+       void process_audio (boost::shared_ptr<const AudioBuffers>);
 
 private:
        float _gain;
index 2355d22e5b959ab12af8c9f8bae144d781649315..1be41fecf880dffaaa5f8ddbfafd20ec5296e175 100644 (file)
@@ -509,7 +509,33 @@ SimpleImage::SimpleImage (SimpleImage const & other)
        allocate ();
 
        for (int i = 0; i < components(); ++i) {
-               memcpy (_data[i], other._data[i], _line_size[i] * lines(i));
+               uint8_t* p = _data[i];
+               uint8_t* q = other._data[i];
+               for (int j = 0; j < lines(i); ++j) {
+                       memcpy (p, q, _line_size[i]);
+                       p += stride()[i];
+                       q += other.stride()[i];
+               }
+       }
+}
+
+SimpleImage::SimpleImage (shared_ptr<const Image> other)
+       : Image (*other.get())
+{
+       _size = other->size ();
+       _aligned = true;
+
+       allocate ();
+
+       for (int i = 0; i < components(); ++i) {
+               assert(line_size()[i] == other->line_size()[i]);
+               uint8_t* p = _data[i];
+               uint8_t* q = other->data()[i];
+               for (int j = 0; j < lines(i); ++j) {
+                       memcpy (p, q, line_size()[i]);
+                       p += stride()[i];
+                       q += other->stride()[i];
+               }
        }
 }
 
index 1d7d75dfc9a32361541dd70d81d86feb59034dcc..de03d0e3f60485a8d316deb00cef21ad80bc92f7 100644 (file)
@@ -131,6 +131,7 @@ class SimpleImage : public Image
 public:
        SimpleImage (AVPixelFormat, libdcp::Size, bool);
        SimpleImage (SimpleImage const &);
+       SimpleImage (boost::shared_ptr<const Image>);
        SimpleImage& operator= (SimpleImage const &);
        ~SimpleImage ();
 
index edbb084de7ebd6e4a872cdaf3218a00ab5199d03..c56a563015b6eb617bf38535ff81be81c7cffeb0 100644 (file)
@@ -41,7 +41,7 @@ Matcher::Matcher (shared_ptr<Log> log, int sample_rate, float frames_per_second)
 }
 
 void
-Matcher::process_video (shared_ptr<Image> image, bool same, boost::shared_ptr<Subtitle> sub, double t)
+Matcher::process_video (shared_ptr<const Image> image, bool same, boost::shared_ptr<Subtitle> sub, double t)
 {
        _pixel_format = image->pixel_format ();
        _size = image->size ();
@@ -90,11 +90,15 @@ Matcher::process_video (shared_ptr<Image> image, bool same, boost::shared_ptr<Su
 }
 
 void
-Matcher::process_audio (shared_ptr<AudioBuffers> b, double t)
+Matcher::process_audio (shared_ptr<const AudioBuffers> b, double t)
 {
        _channels = b->channels ();
 
-       _log->log (String::compose ("Matcher audio @ %1 [video=%2, audio=%3, pending_audio=%4]", t, _video_frames, _audio_frames, _pending_audio.size()));
+       _log->log (String::compose (
+                          "Matcher audio (%1 frames) @ %2 [video=%3, audio=%4, pending_audio=%5]",
+                          b->frames(), t, _video_frames, _audio_frames, _pending_audio.size()
+                          )
+               );
 
        if (!_first_input) {
                _first_input = t;
@@ -198,8 +202,9 @@ void
 Matcher::repeat_last_video ()
 {
        if (!_last_image) {
-               _last_image.reset (new SimpleImage (_pixel_format.get(), _size.get(), true));
-               _last_image->make_black ();
+               shared_ptr<Image> im (new SimpleImage (_pixel_format.get(), _size.get(), true));
+               im->make_black ();
+               _last_image = im;
        }
 
        Video (_last_image, true, _last_subtitle);
index f54aa4b6a7c9c37815697fcd03c55b9936936353..41aa373a412cd51808dc5d7967e3c04640cc7a80 100644 (file)
@@ -25,8 +25,8 @@ class Matcher : public Processor, public TimedAudioSink, public TimedVideoSink,
 {
 public:
        Matcher (boost::shared_ptr<Log> log, int sample_rate, float frames_per_second);
-       void process_video (boost::shared_ptr<Image> i, bool, boost::shared_ptr<Subtitle> s, double);
-       void process_audio (boost::shared_ptr<AudioBuffers>, double);
+       void process_video (boost::shared_ptr<const Image> i, bool, boost::shared_ptr<Subtitle> s, double);
+       void process_audio (boost::shared_ptr<const AudioBuffers>, double);
        void process_end ();
 
 private:
@@ -43,19 +43,19 @@ private:
        boost::optional<int> _channels;
 
        struct AudioRecord {
-               AudioRecord (boost::shared_ptr<AudioBuffers> a, double t)
+               AudioRecord (boost::shared_ptr<const AudioBuffers> a, double t)
                        : audio (a)
                        , time (t)
                {}
                
-               boost::shared_ptr<AudioBuffers> audio;
+               boost::shared_ptr<const AudioBuffers> audio;
                double time;
        };
 
        std::list<AudioRecord> _pending_audio;
 
        boost::optional<double> _first_input;
-       boost::shared_ptr<Image> _last_image;
+       boost::shared_ptr<const Image> _last_image;
        boost::shared_ptr<Subtitle> _last_subtitle;
 
        bool _had_first_video;
index 7c75597eac352ea77179c9d28625ef35e7cff7de..09f1f55a32cdc3a909448d37642278d59b5961ea 100644 (file)
@@ -134,13 +134,13 @@ Player::set_progress (shared_ptr<Job> job)
 }
 
 void
-Player::process_video (shared_ptr<Image> i, bool same, shared_ptr<Subtitle> s, double t)
+Player::process_video (shared_ptr<const Image> i, bool same, shared_ptr<Subtitle> s, double t)
 {
        Video (i, same, s, _video_start[_video_decoder] + t);
 }
 
 void
-Player::process_audio (weak_ptr<const AudioContent> c, shared_ptr<AudioBuffers> b, double t)
+Player::process_audio (weak_ptr<const AudioContent> c, shared_ptr<const AudioBuffers> b, double t)
 {
        AudioMapping mapping = _film->audio_mapping ();
        if (!_audio_buffers) {
@@ -176,6 +176,10 @@ Player::seek (double t)
                _have_valid_decoders = true;
        }
 
+       if (_video_decoders.empty ()) {
+               return true;
+       }
+
        /* Find the decoder that contains this position */
        _video_decoder = 0;
        while (1) {
index 2069064d797d295c1a8dbaae09d2ae6061bbec5e..20b83bfdb7c2468e702409fbc500286937553ec5 100644 (file)
@@ -57,8 +57,8 @@ public:
        double last_video_time () const;
 
 private:
-       void process_video (boost::shared_ptr<Image> i, bool same, boost::shared_ptr<Subtitle> s, double);
-       void process_audio (boost::weak_ptr<const AudioContent>, boost::shared_ptr<AudioBuffers>, double);
+       void process_video (boost::shared_ptr<const Image> i, bool same, boost::shared_ptr<Subtitle> s, double);
+       void process_audio (boost::weak_ptr<const AudioContent>, boost::shared_ptr<const AudioBuffers>, double);
        void setup_decoders ();
        void playlist_changed ();
        void content_changed (boost::weak_ptr<Content>, int);
index 5c8d642e3365cc5908971181a6b72b98831e2ad0..7d2f8511e002314ab866778bcdcd18ccffd2b1a9 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LIBDCPOMATIC\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-09 11:14+0100\n"
+"POT-Creation-Date: 2013-04-22 15:06+0100\n"
 "PO-Revision-Date: 2013-04-02 19:10-0500\n"
 "Last-Translator: Manuel AC <manuel.acevedo@civantos.>\n"
 "Language-Team: Manuel AC <manuel.acevedo@civantos.com>\n"
@@ -25,10 +25,6 @@ msgstr "0%"
 msgid "1.19"
 msgstr "1.19"
 
-#: src/lib/format.cc:79
-msgid "1.33"
-msgstr "1.33"
-
 #: src/lib/format.cc:83
 msgid "1.375"
 msgstr "1.375"
@@ -58,6 +54,10 @@ msgstr "16:9 en Flat"
 msgid "3D denoiser"
 msgstr "reducción de ruido 3D"
 
+#: src/lib/format.cc:79
+msgid "4:3"
+msgstr ""
+
 #: src/lib/format.cc:87
 msgid "4:3 within Flat"
 msgstr "4:3 en Flat"
@@ -94,7 +94,7 @@ msgstr "Bicúbico"
 msgid "Bilinear"
 msgstr "Bilineal"
 
-#: src/lib/job.cc:302
+#: src/lib/job.cc:306
 msgid "Cancelled"
 msgstr ""
 
@@ -175,7 +175,7 @@ msgstr "Dolby CP750"
 msgid "Each source frame will be doubled in the DCP.\n"
 msgstr "Se doblará cada fotograma de la fuente en el DCP.\n"
 
-#: src/lib/job.cc:300
+#: src/lib/job.cc:304
 msgid "Error (%1)"
 msgstr "Error (%1)"
 
@@ -247,7 +247,7 @@ msgstr "Horizontal deblocking filter"
 msgid "Horizontal deblocking filter A"
 msgstr "Horizontal deblocking filter A"
 
-#: src/lib/job.cc:92 src/lib/job.cc:101
+#: src/lib/job.cc:96 src/lib/job.cc:105
 msgid ""
 "It is not known what caused this error.  The best idea is to report the "
 "problem to the DCP-o-matic mailing list (dcpomatic@carlh.net)"
@@ -301,7 +301,7 @@ msgstr "Motion compensating deinterlacer"
 msgid "Noise reduction"
 msgstr "Reducción de ruido"
 
-#: src/lib/job.cc:298
+#: src/lib/job.cc:302
 msgid "OK (ran for %1)"
 msgstr "OK (ejecución %1)"
 
@@ -373,7 +373,7 @@ msgstr "Temporal noise reducer"
 msgid "Test"
 msgstr "Test"
 
-#: src/lib/job.cc:77
+#: src/lib/job.cc:78
 msgid ""
 "The drive that the film is stored on is low in disc space.  Free some more "
 "space and try again."
@@ -393,11 +393,11 @@ msgstr "Codificar %1"
 msgid "Transitional"
 msgstr "Transitional"
 
-#: src/lib/job.cc:100
+#: src/lib/job.cc:104
 msgid "Unknown error"
 msgstr "Error desconocido"
 
-#: src/lib/ffmpeg_decoder.cc:396
+#: src/lib/ffmpeg_decoder.cc:388
 msgid "Unrecognised audio sample format (%1)"
 msgstr "Formato de audio desconocido (%1)"
 
@@ -425,7 +425,7 @@ msgstr "X"
 msgid "Yet Another Deinterlacing Filter"
 msgstr "Yet Another Deinterlacing Filter"
 
-#: src/lib/film.cc:263
+#: src/lib/film.cc:296
 msgid "cannot contain slashes"
 msgstr "no puede contener barras"
 
@@ -437,11 +437,11 @@ msgstr "tiempo de conexión agotado"
 msgid "connecting"
 msgstr "conectando"
 
-#: src/lib/film.cc:300
+#: src/lib/film.cc:333
 msgid "content"
 msgstr "contenido"
 
-#: src/lib/film.cc:304
+#: src/lib/film.cc:337
 msgid "content type"
 msgstr "tipo de contenido"
 
@@ -454,19 +454,19 @@ msgstr "copiando %1"
 msgid "could not create file %1"
 msgstr "No se pudo escribir el fichero remoto (%1)"
 
-#: src/lib/ffmpeg_decoder.cc:191
+#: src/lib/ffmpeg_decoder.cc:187
 msgid "could not find audio decoder"
 msgstr "no se encontró el decodificador de audio"
 
-#: src/lib/ffmpeg_decoder.cc:118
+#: src/lib/ffmpeg_decoder.cc:114
 msgid "could not find stream information"
 msgstr "no se pudo encontrar información del flujo"
 
-#: src/lib/ffmpeg_decoder.cc:210
+#: src/lib/ffmpeg_decoder.cc:206
 msgid "could not find subtitle decoder"
 msgstr "no se pudo encontrar decodificador de subtítutlos"
 
-#: src/lib/ffmpeg_decoder.cc:169
+#: src/lib/ffmpeg_decoder.cc:165
 msgid "could not find video decoder"
 msgstr "no se pudo encontrar decodificador de vídeo"
 
@@ -513,7 +513,7 @@ msgstr "los ficheros externos de sonido tienen duraciones diferentes"
 msgid "external audio files must be mono"
 msgstr "los ficheros externos de sonido deben ser mono"
 
-#: src/lib/film.cc:296
+#: src/lib/film.cc:329
 msgid "format"
 msgstr "formato"
 
@@ -549,7 +549,7 @@ msgstr ""
 msgid "multi-part subtitles not yet supported"
 msgstr "todavía no se soportan subtítulos en múltiples partes"
 
-#: src/lib/film.cc:263 src/lib/film.cc:308
+#: src/lib/film.cc:296 src/lib/film.cc:341
 msgid "name"
 msgstr "nombre"
 
@@ -563,7 +563,7 @@ msgstr "todavía no se soportan subtítulos que no son en mapas de bits"
 
 #. / TRANSLATORS: remaining here follows an amount of time that is remaining
 #. / on an operation.
-#: src/lib/job.cc:295
+#: src/lib/job.cc:299
 msgid "remaining"
 msgstr "pendiente"
 
@@ -575,14 +575,17 @@ msgstr "sRGB"
 msgid "seconds"
 msgstr "segundos"
 
-#: src/lib/film.cc:274
+#: src/lib/film.cc:307
 msgid "still"
 msgstr "imagen fija"
 
-#: src/lib/film.cc:274
+#: src/lib/film.cc:307
 msgid "video"
 msgstr "vídeo"
 
+#~ msgid "1.33"
+#~ msgstr "1.33"
+
 #~ msgid "Source scaled to 1.19:1"
 #~ msgstr "Fuente escalada a 1.19:1"
 
index af6890d97b1caab90ebd7245940620b35a31046d..7f3da788b2fc99389540b90b14fe107a380ba08f 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: DCP-o-matic FRENCH\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-09 11:14+0100\n"
+"POT-Creation-Date: 2013-04-22 15:06+0100\n"
 "PO-Revision-Date: 2013-03-20 00:39+0100\n"
 "Last-Translator: FreeDCP.net <freedcp.net@gmail.com>\n"
 "Language-Team: \n"
@@ -24,10 +24,6 @@ msgstr "0%"
 msgid "1.19"
 msgstr "1.19"
 
-#: src/lib/format.cc:79
-msgid "1.33"
-msgstr "1.33"
-
 #: src/lib/format.cc:83
 msgid "1.375"
 msgstr "1.375"
@@ -51,12 +47,16 @@ msgstr "16:9 dans Flat"
 #: src/lib/format.cc:115
 #, fuzzy
 msgid "16:9 within Scope"
-msgstr "16:9 dans Flat"
+msgstr "16:9 dans Scope"
 
 #: src/lib/filter.cc:88
 msgid "3D denoiser"
 msgstr "Débruitage 3D"
 
+#: src/lib/format.cc:79
+msgid "4:3"
+msgstr ""
+
 #: src/lib/format.cc:87
 msgid "4:3 within Flat"
 msgstr "4:3 dans Flat"
@@ -93,7 +93,7 @@ msgstr "Bicubique"
 msgid "Bilinear"
 msgstr "Bilinéaire"
 
-#: src/lib/job.cc:302
+#: src/lib/job.cc:306
 msgid "Cancelled"
 msgstr ""
 
@@ -173,7 +173,7 @@ msgstr "Dolby CP750"
 msgid "Each source frame will be doubled in the DCP.\n"
 msgstr "Chaque image source sera dupliquée dans le DCP.\n"
 
-#: src/lib/job.cc:300
+#: src/lib/job.cc:304
 msgid "Error (%1)"
 msgstr "Erreur (%1)"
 
@@ -245,7 +245,7 @@ msgstr "Filtre dé-bloc horizontal"
 msgid "Horizontal deblocking filter A"
 msgstr "Filtre dé-bloc horizontal"
 
-#: src/lib/job.cc:92 src/lib/job.cc:101
+#: src/lib/job.cc:96 src/lib/job.cc:105
 msgid ""
 "It is not known what caused this error.  The best idea is to report the "
 "problem to the DCP-o-matic mailing list (dcpomatic@carlh.net)"
@@ -299,7 +299,7 @@ msgstr "Désentrelaceur par compensation de mouvement"
 msgid "Noise reduction"
 msgstr "Réduction de bruit"
 
-#: src/lib/job.cc:298
+#: src/lib/job.cc:302
 msgid "OK (ran for %1)"
 msgstr "OK (processus %1)"
 
@@ -371,7 +371,7 @@ msgstr "Réduction de bruit temporel"
 msgid "Test"
 msgstr "Test"
 
-#: src/lib/job.cc:77
+#: src/lib/job.cc:78
 msgid ""
 "The drive that the film is stored on is low in disc space.  Free some more "
 "space and try again."
@@ -391,11 +391,11 @@ msgstr "Transcodage %1"
 msgid "Transitional"
 msgstr "Transitional"
 
-#: src/lib/job.cc:100
+#: src/lib/job.cc:104
 msgid "Unknown error"
 msgstr "Erreur inconnue"
 
-#: src/lib/ffmpeg_decoder.cc:396
+#: src/lib/ffmpeg_decoder.cc:388
 msgid "Unrecognised audio sample format (%1)"
 msgstr "Échantillonnage audio (%1) inconnu"
 
@@ -423,7 +423,7 @@ msgstr "X"
 msgid "Yet Another Deinterlacing Filter"
 msgstr "Un autre filtre de désentrelacement"
 
-#: src/lib/film.cc:263
+#: src/lib/film.cc:296
 msgid "cannot contain slashes"
 msgstr "slash interdit"
 
@@ -435,11 +435,11 @@ msgstr "temps de connexion expiré"
 msgid "connecting"
 msgstr "connexion"
 
-#: src/lib/film.cc:300
+#: src/lib/film.cc:333
 msgid "content"
 msgstr "contenu"
 
-#: src/lib/film.cc:304
+#: src/lib/film.cc:337
 msgid "content type"
 msgstr "type de contenu"
 
@@ -451,19 +451,19 @@ msgstr "copie de %1"
 msgid "could not create file %1"
 msgstr "Écriture vers fichier distant (%1) impossible"
 
-#: src/lib/ffmpeg_decoder.cc:191
+#: src/lib/ffmpeg_decoder.cc:187
 msgid "could not find audio decoder"
 msgstr "décodeur audio introuvable"
 
-#: src/lib/ffmpeg_decoder.cc:118
+#: src/lib/ffmpeg_decoder.cc:114
 msgid "could not find stream information"
 msgstr "information du flux introuvable"
 
-#: src/lib/ffmpeg_decoder.cc:210
+#: src/lib/ffmpeg_decoder.cc:206
 msgid "could not find subtitle decoder"
 msgstr "décodeur de sous-titre introuvable"
 
-#: src/lib/ffmpeg_decoder.cc:169
+#: src/lib/ffmpeg_decoder.cc:165
 msgid "could not find video decoder"
 msgstr "décodeur vidéo introuvable"
 
@@ -507,7 +507,7 @@ msgstr "Les fichiers audio externes ont des durées différentes"
 msgid "external audio files must be mono"
 msgstr "les fichiers audio externes doivent être en mono"
 
-#: src/lib/film.cc:296
+#: src/lib/film.cc:329
 msgid "format"
 msgstr "format"
 
@@ -543,7 +543,7 @@ msgstr ""
 msgid "multi-part subtitles not yet supported"
 msgstr "sous-titres en plusieurs parties non supportés"
 
-#: src/lib/film.cc:263 src/lib/film.cc:308
+#: src/lib/film.cc:296 src/lib/film.cc:341
 msgid "name"
 msgstr "nom"
 
@@ -557,7 +557,7 @@ msgstr "sous-titres non-bitmap non supportés actuellement"
 
 #. / TRANSLATORS: remaining here follows an amount of time that is remaining
 #. / on an operation.
-#: src/lib/job.cc:295
+#: src/lib/job.cc:299
 msgid "remaining"
 msgstr "restant"
 
@@ -569,14 +569,17 @@ msgstr "sRGB"
 msgid "seconds"
 msgstr "secondes"
 
-#: src/lib/film.cc:274
+#: src/lib/film.cc:307
 msgid "still"
 msgstr "fixe"
 
-#: src/lib/film.cc:274
+#: src/lib/film.cc:307
 msgid "video"
 msgstr "vidéo"
 
+#~ msgid "1.33"
+#~ msgstr "1.33"
+
 #~ msgid "Source scaled to 1.19:1"
 #~ msgstr "Source mise à l'échelle en 1.19:1"
 
index c1ca26ea3b06db351940152d7e145e1bf8ad1db1..1d7f57536f1a8143de1555a6a9b6763d7fd59ad7 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: IT VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-09 11:14+0100\n"
+"POT-Creation-Date: 2013-04-22 15:06+0100\n"
 "PO-Revision-Date: 2013-04-03 15:04+0100\n"
 "Last-Translator: Maci <macibro@gmail.com>\n"
 "Language-Team: \n"
@@ -25,10 +25,6 @@ msgstr "0%"
 msgid "1.19"
 msgstr "1.19"
 
-#: src/lib/format.cc:79
-msgid "1.33"
-msgstr "1.33"
-
 #: src/lib/format.cc:83
 msgid "1.375"
 msgstr "1.375"
@@ -58,6 +54,10 @@ msgstr "16:9 all'interno di Flat"
 msgid "3D denoiser"
 msgstr "Riduttore di rumore 3D"
 
+#: src/lib/format.cc:79
+msgid "4:3"
+msgstr ""
+
 #: src/lib/format.cc:87
 msgid "4:3 within Flat"
 msgstr "4:3 all'interno di  Flat"
@@ -94,7 +94,7 @@ msgstr "Bicubica"
 msgid "Bilinear"
 msgstr "Bilineare"
 
-#: src/lib/job.cc:302
+#: src/lib/job.cc:306
 msgid "Cancelled"
 msgstr "Cancellato"
 
@@ -173,7 +173,7 @@ msgstr "Dolby CP750"
 msgid "Each source frame will be doubled in the DCP.\n"
 msgstr "Ogni fotogramma del sorgente sarà raddoppiato nel DCP.\n"
 
-#: src/lib/job.cc:300
+#: src/lib/job.cc:304
 msgid "Error (%1)"
 msgstr "Errore (%1)"
 
@@ -245,7 +245,7 @@ msgstr "Filtro sblocco orizzontale"
 msgid "Horizontal deblocking filter A"
 msgstr "Filtro A sblocco orizzontale"
 
-#: src/lib/job.cc:92 src/lib/job.cc:101
+#: src/lib/job.cc:96 src/lib/job.cc:105
 msgid ""
 "It is not known what caused this error.  The best idea is to report the "
 "problem to the DCP-o-matic mailing list (dcpomatic@carlh.net)"
@@ -299,7 +299,7 @@ msgstr "Dinterlacciatore compensativo di movimento"
 msgid "Noise reduction"
 msgstr "Riduzione del rumore"
 
-#: src/lib/job.cc:298
+#: src/lib/job.cc:302
 msgid "OK (ran for %1)"
 msgstr "OK (procede al %1)"
 
@@ -371,7 +371,7 @@ msgstr "Riduttore temporale di rumore"
 msgid "Test"
 msgstr "Prova"
 
-#: src/lib/job.cc:77
+#: src/lib/job.cc:78
 msgid ""
 "The drive that the film is stored on is low in disc space.  Free some more "
 "space and try again."
@@ -391,11 +391,11 @@ msgstr "Transcodifica %1"
 msgid "Transitional"
 msgstr "Di transizione"
 
-#: src/lib/job.cc:100
+#: src/lib/job.cc:104
 msgid "Unknown error"
 msgstr "Errore sconosciuto"
 
-#: src/lib/ffmpeg_decoder.cc:396
+#: src/lib/ffmpeg_decoder.cc:388
 msgid "Unrecognised audio sample format (%1)"
 msgstr "Formato di campionamento audio non riconosciuto (%1)"
 
@@ -423,7 +423,7 @@ msgstr "X"
 msgid "Yet Another Deinterlacing Filter"
 msgstr "Altro filtro di deinterlacciamento"
 
-#: src/lib/film.cc:263
+#: src/lib/film.cc:296
 msgid "cannot contain slashes"
 msgstr "non può contenere barre"
 
@@ -435,11 +435,11 @@ msgstr "connessione scaduta"
 msgid "connecting"
 msgstr "mi sto connettendo"
 
-#: src/lib/film.cc:300
+#: src/lib/film.cc:333
 msgid "content"
 msgstr "contenuto"
 
-#: src/lib/film.cc:304
+#: src/lib/film.cc:337
 msgid "content type"
 msgstr "tipo di contenuto"
 
@@ -451,19 +451,19 @@ msgstr "copia %1"
 msgid "could not create file %1"
 msgstr "Non posso scrivere il file remoto (%1)"
 
-#: src/lib/ffmpeg_decoder.cc:191
+#: src/lib/ffmpeg_decoder.cc:187
 msgid "could not find audio decoder"
 msgstr "non riesco a trovare il decoder audio"
 
-#: src/lib/ffmpeg_decoder.cc:118
+#: src/lib/ffmpeg_decoder.cc:114
 msgid "could not find stream information"
 msgstr "non riesco a trovare informazioni sullo streaming"
 
-#: src/lib/ffmpeg_decoder.cc:210
+#: src/lib/ffmpeg_decoder.cc:206
 msgid "could not find subtitle decoder"
 msgstr "non riesco a trovare il decoder dei sottotitoli"
 
-#: src/lib/ffmpeg_decoder.cc:169
+#: src/lib/ffmpeg_decoder.cc:165
 msgid "could not find video decoder"
 msgstr "non riesco a trovare il decoder video"
 
@@ -507,7 +507,7 @@ msgstr "i files dell'audio esterno hanno durata diversa"
 msgid "external audio files must be mono"
 msgstr "i files dell'audio esterno devono essere mono"
 
-#: src/lib/film.cc:296
+#: src/lib/film.cc:329
 msgid "format"
 msgstr "formato"
 
@@ -543,7 +543,7 @@ msgstr "persa la regolazione richiesta %1"
 msgid "multi-part subtitles not yet supported"
 msgstr "sottotitoli multi-part non ancora supportati"
 
-#: src/lib/film.cc:263 src/lib/film.cc:308
+#: src/lib/film.cc:296 src/lib/film.cc:341
 msgid "name"
 msgstr "nome"
 
@@ -557,7 +557,7 @@ msgstr "sottotitoli non-bitmap non ancora supportati"
 
 #. / TRANSLATORS: remaining here follows an amount of time that is remaining
 #. / on an operation.
-#: src/lib/job.cc:295
+#: src/lib/job.cc:299
 msgid "remaining"
 msgstr "restano"
 
@@ -569,14 +569,17 @@ msgstr "sRGB"
 msgid "seconds"
 msgstr "secondi"
 
-#: src/lib/film.cc:274
+#: src/lib/film.cc:307
 msgid "still"
 msgstr "ancora"
 
-#: src/lib/film.cc:274
+#: src/lib/film.cc:307
 msgid "video"
 msgstr "video"
 
+#~ msgid "1.33"
+#~ msgstr "1.33"
+
 #~ msgid "Source scaled to 1.19:1"
 #~ msgstr "Sorgente scalato a 1.19:1"
 
index f89874e35e9b952399a227c4f8999a2bbec2d025..ff86e23af926d175446fbe5258a912ddbaf6cbfd 100644 (file)
@@ -7,10 +7,11 @@ msgid ""
 msgstr ""
 "Project-Id-Version: DCP-o-matic\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-09 11:14+0100\n"
+"POT-Creation-Date: 2013-04-22 15:06+0100\n"
 "PO-Revision-Date: 2013-04-10 15:35+0100\n"
 "Last-Translator: Adam Klotblixt <adam.klotblixt@gmail.com>\n"
 "Language-Team: \n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -24,10 +25,6 @@ msgstr "0%"
 msgid "1.19"
 msgstr "1,19"
 
-#: src/lib/format.cc:79
-msgid "1.33"
-msgstr "1,33"
-
 #: src/lib/format.cc:83
 msgid "1.375"
 msgstr "1,375"
@@ -56,6 +53,10 @@ msgstr "16:9 innanför Scope"
 msgid "3D denoiser"
 msgstr "3D brusreducering"
 
+#: src/lib/format.cc:79
+msgid "4:3"
+msgstr ""
+
 #: src/lib/format.cc:87
 msgid "4:3 within Flat"
 msgstr "4:3 innanför Flat"
@@ -92,7 +93,7 @@ msgstr "Bikubisk"
 msgid "Bilinear"
 msgstr "Bilinjär"
 
-#: src/lib/job.cc:302
+#: src/lib/job.cc:306
 msgid "Cancelled"
 msgstr "Avbruten"
 
@@ -172,7 +173,7 @@ msgstr "Dolby CP750"
 msgid "Each source frame will be doubled in the DCP.\n"
 msgstr "Varje bild från källan kommer att användas två gånger i DCPn.\n"
 
-#: src/lib/job.cc:300
+#: src/lib/job.cc:304
 msgid "Error (%1)"
 msgstr "Fel (%1)"
 
@@ -244,7 +245,7 @@ msgstr "Filter för horisontal kantighetsutjämning"
 msgid "Horizontal deblocking filter A"
 msgstr "Filter för horisontal kantighetsutjämning A"
 
-#: src/lib/job.cc:92 src/lib/job.cc:101
+#: src/lib/job.cc:96 src/lib/job.cc:105
 msgid ""
 "It is not known what caused this error.  The best idea is to report the "
 "problem to the DCP-o-matic mailing list (dcpomatic@carlh.net)"
@@ -298,7 +299,7 @@ msgstr "Rörelsekompenserande avflätare"
 msgid "Noise reduction"
 msgstr "Brusreducering"
 
-#: src/lib/job.cc:298
+#: src/lib/job.cc:302
 msgid "OK (ran for %1)"
 msgstr "OK (kördes %1)"
 
@@ -370,7 +371,7 @@ msgstr "Temporal brusreducering"
 msgid "Test"
 msgstr "Test"
 
-#: src/lib/job.cc:77
+#: src/lib/job.cc:78
 msgid ""
 "The drive that the film is stored on is low in disc space.  Free some more "
 "space and try again."
@@ -390,12 +391,12 @@ msgstr "Konvertera %1"
 msgid "Transitional"
 msgstr "Övergångsklipp"
 
-#: src/lib/job.cc:100
+#: src/lib/job.cc:104
 msgid "Unknown error"
 msgstr "Okänt fel"
 
 # Svengelska
-#: src/lib/ffmpeg_decoder.cc:396
+#: src/lib/ffmpeg_decoder.cc:388
 #, fuzzy
 msgid "Unrecognised audio sample format (%1)"
 msgstr "Okänt audio-sampelformat (%1)"
@@ -425,7 +426,7 @@ msgstr "X"
 msgid "Yet Another Deinterlacing Filter"
 msgstr "Yet Another Deinterlacing Filter"
 
-#: src/lib/film.cc:263
+#: src/lib/film.cc:296
 msgid "cannot contain slashes"
 msgstr "får inte innehålla snedstreck"
 
@@ -439,11 +440,11 @@ msgstr "uppkopplingen tajmade ur"
 msgid "connecting"
 msgstr "kopplar upp"
 
-#: src/lib/film.cc:300
+#: src/lib/film.cc:333
 msgid "content"
 msgstr "innehåll"
 
-#: src/lib/film.cc:304
+#: src/lib/film.cc:337
 msgid "content type"
 msgstr "innehållstyp"
 
@@ -455,19 +456,19 @@ msgstr "kopierar %1"
 msgid "could not create file %1"
 msgstr "kunde inte skapa fil %1"
 
-#: src/lib/ffmpeg_decoder.cc:191
+#: src/lib/ffmpeg_decoder.cc:187
 msgid "could not find audio decoder"
 msgstr "kunde inte hitta audio-avkodare"
 
-#: src/lib/ffmpeg_decoder.cc:118
+#: src/lib/ffmpeg_decoder.cc:114
 msgid "could not find stream information"
 msgstr "kunde inte hitta information om strömmen"
 
-#: src/lib/ffmpeg_decoder.cc:210
+#: src/lib/ffmpeg_decoder.cc:206
 msgid "could not find subtitle decoder"
 msgstr "kunde inte hitta undertext-avkodare"
 
-#: src/lib/ffmpeg_decoder.cc:169
+#: src/lib/ffmpeg_decoder.cc:165
 msgid "could not find video decoder"
 msgstr "kunde inte hitta video-avkodare"
 
@@ -511,7 +512,7 @@ msgstr "externa audio-filer har olika längder"
 msgid "external audio files must be mono"
 msgstr "externa audio-filer måste vara mono"
 
-#: src/lib/film.cc:296
+#: src/lib/film.cc:329
 msgid "format"
 msgstr "format"
 
@@ -547,7 +548,7 @@ msgstr "saknad nödvändig inställning %1"
 msgid "multi-part subtitles not yet supported"
 msgstr "undertexter i flera delar stöds inte ännu"
 
-#: src/lib/film.cc:263 src/lib/film.cc:308
+#: src/lib/film.cc:296 src/lib/film.cc:341
 msgid "name"
 msgstr "namn"
 
@@ -561,7 +562,7 @@ msgstr "icke-rastergrafiska undertexter stöds inte ännu"
 
 #. / TRANSLATORS: remaining here follows an amount of time that is remaining
 #. / on an operation.
-#: src/lib/job.cc:295
+#: src/lib/job.cc:299
 msgid "remaining"
 msgstr "återstående tid"
 
@@ -573,14 +574,17 @@ msgstr "sRGB"
 msgid "seconds"
 msgstr "sekunder"
 
-#: src/lib/film.cc:274
+#: src/lib/film.cc:307
 msgid "still"
 msgstr "stillbild"
 
-#: src/lib/film.cc:274
+#: src/lib/film.cc:307
 msgid "video"
 msgstr "video"
 
+#~ msgid "1.33"
+#~ msgstr "1,33"
+
 #~ msgid "Source scaled to 1.19:1"
 #~ msgstr "Källan skalad till 1,19:1"
 
index ea3f27ad8f94f10175e1b6e81237b5e1d6059c12..2e33931bd50872cc5edbb16c274af19e336a5bb1 100644 (file)
@@ -35,6 +35,7 @@
 #include "video_decoder.h"
 #include "audio_decoder.h"
 #include "player.h"
+#include "trimmer.h"
 
 using std::string;
 using boost::shared_ptr;
@@ -54,18 +55,27 @@ Transcoder::Transcoder (shared_ptr<Film> f, shared_ptr<Job> j)
        _delay_line.reset (new DelayLine (f->log(), f->audio_delay() * f->audio_frame_rate() / 1000));
        _gain.reset (new Gain (f->log(), f->audio_gain()));
 
+       int const trim_start = f->trim_type() == Film::ENCODE ? f->trim_start() : 0;
+       int const trim_end = f->trim_type() == Film::ENCODE ? f->trim_end() : 0;
+       _trimmer.reset (new Trimmer (
+                               f->log(), trim_start, trim_end, f->content_length(),
+                               f->audio_frame_rate(), f->video_frame_rate(), f->dcp_frame_rate()
+                               ));
+       
        if (!f->with_subtitles ()) {
                _player->disable_subtitles ();
        }
 
        _player->connect_video (_delay_line);
        _delay_line->connect_video (_matcher);
-       _matcher->connect_video (_encoder);
+       _matcher->connect_video (_trimmer);
+       _trimmer->connect_video (_encoder);
        
        _player->connect_audio (_delay_line);
        _delay_line->connect_audio (_matcher);
        _matcher->connect_audio (_gain);
-       _gain->connect_audio (_encoder);
+       _gain->connect_audio (_trimmer);
+       _trimmer->connect_audio (_encoder);
 }
 
 void
@@ -80,7 +90,9 @@ Transcoder::go ()
        }
 
        _delay_line->process_end ();
-       _matcher->process_end ();
+       if (_matcher) {
+               _matcher->process_end ();
+       }
        _gain->process_end ();
        _encoder->process_end ();
 }
index ecc8ebf629a2b245a4c9b0ae22862aebed3fe96b..97ecaabfc2a54b9ff48ae7dd8d7640da59fd489c 100644 (file)
@@ -31,6 +31,7 @@ class VideoFilter;
 class Gain;
 class DelayLine;
 class Player;
+class Trimmer;
 
 /** @class Transcoder
  *
@@ -58,4 +59,5 @@ protected:
        boost::shared_ptr<Matcher> _matcher;
        boost::shared_ptr<DelayLine> _delay_line;
        boost::shared_ptr<Gain> _gain;
+       boost::shared_ptr<Trimmer> _trimmer;
 };
index 68364e50ad91f8dbbbd4a8e6792b933d439bb32f..b7afc9299452708e6a3f4d96e44a6dc070199225 100644 (file)
@@ -28,7 +28,8 @@ using boost::shared_ptr;
 Trimmer::Trimmer (
        shared_ptr<Log> log,
        int video_trim_start,
-       int video_trim_end, int video_length,
+       int video_trim_end,
+       int video_length,
        int audio_sample_rate,
        float frames_per_second,
        int dcp_frames_per_second
@@ -53,12 +54,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<Image> image, bool same, shared_ptr<Subtitle> sub)
+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);
        }
        
@@ -66,8 +74,13 @@ Trimmer::process_video (shared_ptr<Image> image, bool same, shared_ptr<Subtitle>
 }
 
 void
-Trimmer::process_audio (shared_ptr<AudioBuffers> audio)
+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 ();
@@ -91,8 +104,10 @@ Trimmer::process_audio (shared_ptr<AudioBuffers> audio)
        _audio_in += audio->frames ();
        
        if (offset != 0 || length != audio->frames ()) {
-               audio->move (offset, 0, length);
-               audio->set_frames (length);
+               shared_ptr<AudioBuffers> copy (new AudioBuffers (audio));
+               copy->move (offset, 0, length);
+               copy->set_frames (length);
+               audio = copy;
        }
        
        Audio (audio);
index ff7e9514d1e1d13e5bcda9cb1a13b1e3895ed781..98a118fb27abe784366efecb64bf59b4204dda23 100644 (file)
@@ -24,8 +24,8 @@ class Trimmer : public AudioVideoProcessor
 public:
        Trimmer (boost::shared_ptr<Log>, int, int, int, int, float, int);
 
-       void process_video (boost::shared_ptr<Image> i, bool, boost::shared_ptr<Subtitle> s);
-       void process_audio (boost::shared_ptr<AudioBuffers>);
+       void process_video (boost::shared_ptr<const Image> i, bool, boost::shared_ptr<Subtitle> s);
+       void process_audio (boost::shared_ptr<const AudioBuffers>);
 
 private:
        friend class trimmer_test;
@@ -36,4 +36,5 @@ private:
        int64_t _audio_start;
        int64_t _audio_end;
        int64_t _audio_in;
+       bool _no_trim;
 };
index 56932720c24a1c1f777a21cd11f08641e2918368..ec1fd47bd7f03bdca133d791b6201d824f252cab 100644 (file)
@@ -83,9 +83,10 @@ using std::pair;
 using boost::shared_ptr;
 using boost::thread;
 using boost::lexical_cast;
+using boost::optional;
 using libdcp::Size;
 
-thread::id ui_thread;
+boost::thread::id ui_thread;
 
 /** Convert some number of seconds to a string representation
  *  in hours, minutes and seconds.
@@ -105,9 +106,9 @@ seconds_to_hms (int s)
        stringstream hms;
        hms << h << N_(":");
        hms.width (2);
-       hms << setfill ('0') << m << N_(":");
+       hms << std::setfill ('0') << m << N_(":");
        hms.width (2);
-       hms << setfill ('0') << s;
+       hms << std::setfill ('0') << s;
 
        return hms.str ();
 }
@@ -203,7 +204,7 @@ stacktrace (ostream& out, int levels)
      
        if (strings) {
                for (i = 0; i < size && (levels == 0 || i < size_t(levels)); i++) {
-                       out << N_("  ") << demangle (strings[i]) << endl;
+                       out << N_("  ") << demangle (strings[i]) << "\n";
                }
                
                free (strings);
@@ -356,7 +357,7 @@ md5_digest (void const * data, int size)
        
        stringstream s;
        for (int i = 0; i < MD5_DIGEST_LENGTH; ++i) {
-               s << hex << setfill('0') << setw(2) << ((int) digest[i]);
+               s << std::hex << std::setfill('0') << std::setw(2) << ((int) digest[i]);
        }
 
        return s.str ();
@@ -368,14 +369,14 @@ md5_digest (void const * data, int size)
 string
 md5_digest (boost::filesystem::path file)
 {
-       ifstream f (file.string().c_str(), ios::binary);
+       ifstream f (file.string().c_str(), std::ios::binary);
        if (!f.good ()) {
                throw OpenFileError (file.string());
        }
        
-       f.seekg (0, ios::end);
+       f.seekg (0, std::ios::end);
        int bytes = f.tellg ();
-       f.seekg (0, ios::beg);
+       f.seekg (0, std::ios::beg);
 
        int const buffer_size = 64 * 1024;
        char buffer[buffer_size];
@@ -394,7 +395,7 @@ md5_digest (boost::filesystem::path file)
 
        stringstream s;
        for (int i = 0; i < MD5_DIGEST_LENGTH; ++i) {
-               s << hex << setfill('0') << setw(2) << ((int) digest[i]);
+               s << std::hex << std::setfill('0') << std::setw(2) << ((int) digest[i]);
        }
 
        return s.str ();
@@ -459,8 +460,8 @@ best_dcp_frame_rate (float source_fps)
        }
 
        /* Pick the best one, bailing early if we hit an exact match */
-       float error = numeric_limits<float>::max ();
-       boost::optional<FrameRateCandidate> best;
+       float error = std::numeric_limits<float>::max ();
+       optional<FrameRateCandidate> best;
        list<FrameRateCandidate>::iterator i = candidates.begin();
        while (i != candidates.end()) {
                
@@ -769,6 +770,21 @@ AudioBuffers::AudioBuffers (AudioBuffers const & other)
        }
 }
 
+/* XXX: it's a shame that this is a copy-and-paste of the above;
+   probably fixable with c++0x.
+*/
+AudioBuffers::AudioBuffers (boost::shared_ptr<const AudioBuffers> other)
+       : _channels (other->_channels)
+       , _frames (other->_frames)
+       , _allocated_frames (other->_frames)
+{
+       _data = new float*[_channels];
+       for (int i = 0; i < _channels; ++i) {
+               _data[i] = new float[_frames];
+               memcpy (_data[i], other->_data[i], _frames * sizeof (float));
+       }
+}
+
 /** AudioBuffers destructor */
 AudioBuffers::~AudioBuffers ()
 {
@@ -871,7 +887,7 @@ AudioBuffers::move (int from, int to, int frames)
 
 /** Add data from from `from', `from_channel' to our channel `to_channel' */
 void
-AudioBuffers::accumulate (shared_ptr<AudioBuffers> from, int from_channel, int to_channel)
+AudioBuffers::accumulate (shared_ptr<const AudioBuffers> from, int from_channel, int to_channel)
 {
        int const N = frames ();
        assert (from->frames() == N);
index 02cc742aa52f62a8fac1a467d1c7a44b310f8625..0edfe2076b3bd8ce80f6077df102d1b3d2564f17 100644 (file)
@@ -159,6 +159,7 @@ class AudioBuffers
 public:
        AudioBuffers (int channels, int frames);
        AudioBuffers (AudioBuffers const &);
+       AudioBuffers (boost::shared_ptr<const AudioBuffers>);
        ~AudioBuffers ();
 
        float** data () const {
@@ -182,7 +183,7 @@ public:
 
        void copy_from (AudioBuffers* from, int frames_to_copy, int read_offset, int write_offset);
        void move (int from, int to, int frames);
-       void accumulate (boost::shared_ptr<AudioBuffers>, int, int);
+       void accumulate (boost::shared_ptr<const AudioBuffers>, int, int);
 
 private:
        /** Number of channels */
index 167d3980eb020531457f8240ddc99803483f3343..6239bc557ab68ac43b28f356372404a21566109b 100644 (file)
@@ -34,7 +34,7 @@ public:
         *  @param same true if i is the same as last time we were called.
         *  @param s A subtitle that should be on this frame, or 0.
         */
-       virtual void process_video (boost::shared_ptr<Image> i, bool same, boost::shared_ptr<Subtitle> s) = 0;
+       virtual void process_video (boost::shared_ptr<const Image> i, bool same, boost::shared_ptr<Subtitle> s) = 0;
 };
 
 class TimedVideoSink
@@ -46,7 +46,7 @@ public:
         *  @param s A subtitle that should be on this frame, or 0.
         *  @param t Source timestamp.
         */
-       virtual void process_video (boost::shared_ptr<Image> i, bool same, boost::shared_ptr<Subtitle> s, double t) = 0;
+       virtual void process_video (boost::shared_ptr<const Image> i, bool same, boost::shared_ptr<Subtitle> s, double t) = 0;
 };
 
 #endif
index ccb76f02018a45268ed74d22d1d3b344b53cfea5..2de4db68d75657a55a2a05f49a0a86914781f908 100644 (file)
@@ -25,7 +25,7 @@ using boost::weak_ptr;
 using boost::bind;
 
 static void
-process_video_proxy (weak_ptr<VideoSink> sink, shared_ptr<Image> i, bool same, shared_ptr<Subtitle> s)
+process_video_proxy (weak_ptr<VideoSink> sink, shared_ptr<const Image> i, bool same, shared_ptr<Subtitle> s)
 {
        shared_ptr<VideoSink> p = sink.lock ();
        if (p) {
@@ -47,3 +47,11 @@ TimedVideoSource::connect_video (shared_ptr<TimedVideoSink> s)
 {
        Video.connect (bind (&TimedVideoSink::process_video, s, _1, _2, _3, _4));
 }
+
+void
+TimedVideoSource::connect_video (shared_ptr<VideoSink> s)
+{
+       Video.connect (bind (&VideoSink::process_video, s, _1, _2, _3));
+}
+
+       
index d2aa045a715e858fa8854fc22a2ccda098aa7908..9b4c9b4a2040db794a94b179da4e2c46dcdb7dc8 100644 (file)
@@ -45,7 +45,7 @@ public:
         *  Second parameter is true if the image is the same as the last one that was emitted.
         *  Third parameter is either 0 or a subtitle that should be on this frame.
         */
-       boost::signals2::signal<void (boost::shared_ptr<Image>, bool, boost::shared_ptr<Subtitle>)> Video;
+       boost::signals2::signal<void (boost::shared_ptr<const Image>, bool, boost::shared_ptr<Subtitle>)> Video;
 
        void connect_video (boost::shared_ptr<VideoSink>);
 };
@@ -63,8 +63,9 @@ public:
         *  Third parameter is either 0 or a subtitle that should be on this frame.
         *  Fourth parameter is the source timestamp of this frame.
         */
-       boost::signals2::signal<void (boost::shared_ptr<Image>, bool, boost::shared_ptr<Subtitle>, double)> Video;
+       boost::signals2::signal<void (boost::shared_ptr<const Image>, bool, boost::shared_ptr<Subtitle>, double)> Video;
 
+       void connect_video (boost::shared_ptr<VideoSink>);
        void connect_video (boost::shared_ptr<TimedVideoSink>);
 };
 
index e2e1874c4eb21461b8af9153b1dc84bddadbd33a..86c3cf4b14881a3268a96758d9716242af373362 100644 (file)
@@ -64,7 +64,7 @@ main (int argc, char* argv[])
        bool test_mode = false;
        bool progress = true;
        bool no_remote = false;
-       int log_level = 1;
+       int log_level = 0;
 
        int option_index = 0;
        while (1) {
index d35f104c6d2d79c683796eacc632aa0226810b5f..346aa2b39d1ea2137cba34740f9980c82698e01e 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: DCPOMATIC\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-09 11:14+0100\n"
+"POT-Creation-Date: 2013-04-22 15:06+0100\n"
 "PO-Revision-Date: 2013-03-23 21:08-0500\n"
 "Last-Translator: Manuel AC <manuel.acevedo@civantos.>\n"
 "Language-Team: Manuel AC <manuel.acevedo@civantos.com>\n"
index ef2246992ceee39f118ebba1a20f2f1e50f8fc32..8ce305ccf8b66073c27892d6d64ff5da41001be4 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: DCP-o-matic FRENCH\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-09 11:14+0100\n"
+"POT-Creation-Date: 2013-04-22 15:06+0100\n"
 "PO-Revision-Date: 2013-03-13 22:33+0100\n"
 "Last-Translator: \n"
 "Language-Team: \n"
index 998f700591f82061ef8334da827f95cfe95b255c..13732129bb159802ca0eb15f200a7ce6ff09dd3f 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: IT VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-09 11:14+0100\n"
+"POT-Creation-Date: 2013-04-22 15:06+0100\n"
 "PO-Revision-Date: 2013-04-03 13:00+0100\n"
 "Last-Translator: Maci <macibro@gmail.com>\n"
 "Language-Team: \n"
index 4765c2d98f908c6b8590a1d71b0e47fe12a2e924..69706d6479563932ca4cf325de84f006cbe85de5 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: DCP-o-matic\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-09 11:14+0100\n"
+"POT-Creation-Date: 2013-04-22 15:06+0100\n"
 "PO-Revision-Date: 2013-04-09 10:12+0100\n"
 "Last-Translator: Adam Klotblixt <adam.klotblixt@gmail.com>\n"
 "Language-Team: \n"
index 42cc76871fb2f4dfc8b8337a341f3ddf44995787..af176ac18e6b02ea011cc526bd3a4a581b49e128 100644 (file)
@@ -46,7 +46,7 @@ static shared_ptr<FileLog> log_ (new FileLog ("servomatictest.log"));
 static int frame = 0;
 
 void
-process_video (shared_ptr<Image> image, bool, shared_ptr<Subtitle> sub)
+process_video (shared_ptr<const Image> image, bool, shared_ptr<Subtitle> sub)
 {
        shared_ptr<DCPVideoFrame> local (
                new DCPVideoFrame (
index e742a3e41b7ce9757f476fcd95abb1e4e7ccc97b..e9a1a574be01477b884e34a5eeb05e30684edbcc 100644 (file)
@@ -300,7 +300,7 @@ FilmViewer::raw_to_display ()
                return;
        }
 
-       shared_ptr<Image> input = _raw_frame;
+       shared_ptr<const Image> input = _raw_frame;
 
        pair<string, string> const s = Filter::ffmpeg_strings (_film->filters());
        if (!s.second.empty ()) {
@@ -392,7 +392,7 @@ FilmViewer::check_play_state ()
 }
 
 void
-FilmViewer::process_video (shared_ptr<Image> image, bool, shared_ptr<Subtitle> sub, double t)
+FilmViewer::process_video (shared_ptr<const Image> image, bool, shared_ptr<Subtitle> sub, double t)
 {
        _raw_frame = image;
        _raw_sub = sub;
index 814a095af374753ac17a596651e9397211b0b5e0..02d862ca0c42472dd8cefb6de594b116725e6a68 100644 (file)
@@ -67,7 +67,7 @@ private:
        void slider_moved (wxScrollEvent &);
        void play_clicked (wxCommandEvent &);
        void timer (wxTimerEvent &);
-       void process_video (boost::shared_ptr<Image>, bool, boost::shared_ptr<Subtitle>, double);
+       void process_video (boost::shared_ptr<const Image>, bool, boost::shared_ptr<Subtitle>, double);
        void calculate_sizes ();
        void check_play_state ();
        void update_from_raw ();
@@ -91,9 +91,9 @@ private:
        wxToggleButton* _play_button;
        wxTimer _timer;
 
-       boost::shared_ptr<Image> _raw_frame;
+       boost::shared_ptr<const Image> _raw_frame;
        boost::shared_ptr<Subtitle> _raw_sub;
-       boost::shared_ptr<Image> _display_frame;
+       boost::shared_ptr<const Image> _display_frame;
        /* The x offset at which we display the actual film content; this corresponds
           to the film's padding converted to our coordinates.
        */
index abb6b780f17b42fd9547d2cc179b35ce1c66dbb5..a193325e6c09ad55d08e2602b90ff4a875d114a2 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: libdcpomatic-wx\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-09 11:14+0100\n"
+"POT-Creation-Date: 2013-04-22 15:06+0100\n"
 "PO-Revision-Date: 2013-04-02 19:08-0500\n"
 "Last-Translator: Manuel AC <manuel.acevedo@civantos.>\n"
 "Language-Team: Manuel AC <manuel.acevedo@civantos.com>\n"
@@ -17,7 +17,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 1.5.5\n"
 
-#: src/wx/film_editor.cc:445
+#: src/wx/film_editor.cc:449
 msgid "%"
 msgstr "%"
 
@@ -25,7 +25,7 @@ msgstr "%"
 msgid "(restart DCP-o-matic to see language changes)"
 msgstr ""
 
-#: src/wx/film_editor.cc:1269
+#: src/wx/film_editor.cc:1276
 msgid "1 channel"
 msgstr "1 canal"
 
@@ -41,11 +41,11 @@ msgstr "Añadir"
 msgid "Audio"
 msgstr "Audio"
 
-#: src/wx/film_editor.cc:381
+#: src/wx/film_editor.cc:385
 msgid "Audio Delay"
 msgstr "Retardo del audio"
 
-#: src/wx/film_editor.cc:369
+#: src/wx/film_editor.cc:373
 msgid "Audio Gain"
 msgstr "Ganancia del audio"
 
@@ -53,7 +53,7 @@ msgstr "Ganancia del audio"
 msgid "Audio Language (e.g. EN)"
 msgstr "Idioma del audio (ej. ES)"
 
-#: src/wx/film_editor.cc:820
+#: src/wx/film_editor.cc:824
 #, c-format
 msgid "Audio will be resampled from %dHz to %dHz\n"
 msgstr ""
@@ -63,7 +63,7 @@ msgstr ""
 msgid "Bad setting for %s (%s)"
 msgstr "Configuración erronea para %s (%s)"
 
-#: src/wx/film_editor.cc:288
+#: src/wx/film_editor.cc:292
 msgid "Bottom crop"
 msgstr "Recortar abajo"
 
@@ -75,7 +75,7 @@ msgstr "Explorar..."
 msgid "But I have to use fader"
 msgstr "pero tengo que usar el fader a"
 
-#: src/wx/film_editor.cc:374
+#: src/wx/film_editor.cc:378
 msgid "Calculate..."
 msgstr "Calcular..."
 
@@ -87,7 +87,7 @@ msgstr ""
 msgid "Channels"
 msgstr "Canales"
 
-#: src/wx/film_editor.cc:325
+#: src/wx/film_editor.cc:329
 msgid "Colour look-up table"
 msgstr "Tabla de referencia de colores"
 
@@ -99,7 +99,7 @@ msgstr "Contenido"
 msgid "Content Type"
 msgstr "Tipo de contenido"
 
-#: src/wx/film_viewer.cc:415
+#: src/wx/film_viewer.cc:451
 #, c-format
 msgid "Could not decode video for view (%s)"
 msgstr "No se pudo decodificar el vídeo para mostrarlo (%s)"
@@ -109,12 +109,12 @@ msgstr "No se pudo decodificar el vídeo para mostrarlo (%s)"
 msgid "Could not make DCP: %s"
 msgstr "No se pudo crear el DCP: %s"
 
-#: src/wx/film_viewer.cc:107
+#: src/wx/film_viewer.cc:125
 #, c-format
 msgid "Could not open content file (%s)"
 msgstr "No se pudo abrir el fichero (%s)"
 
-#: src/wx/film_editor.cc:509
+#: src/wx/film_editor.cc:513
 #, c-format
 msgid "Could not set content: %s"
 msgstr "No se pudo establecer el contenido: %s"
@@ -123,7 +123,7 @@ msgstr "No se pudo establecer el contenido: %s"
 msgid "Create in folder"
 msgstr "Crear en carpeta"
 
-#: src/wx/film_editor.cc:1363
+#: src/wx/film_editor.cc:1371
 #, c-format
 msgid "Cropped to %dx%d (%.2f:1)\n"
 msgstr ""
@@ -178,7 +178,7 @@ msgid "Edit"
 msgstr "Editar"
 
 #: src/wx/config_dialog.cc:103 src/wx/config_dialog.cc:122
-#: src/wx/film_editor.cc:308
+#: src/wx/film_editor.cc:312
 msgid "Edit..."
 msgstr "Editar..."
 
@@ -186,7 +186,7 @@ msgstr "Editar..."
 msgid "Encoding Servers"
 msgstr "Servidores de codificación"
 
-#: src/wx/film_editor.cc:176
+#: src/wx/film_editor.cc:171
 msgid "End"
 msgstr "Fin"
 
@@ -206,11 +206,11 @@ msgstr "Propiedades de la película"
 msgid "Film name"
 msgstr "Nombre de la película"
 
-#: src/wx/film_editor.cc:303 src/wx/filter_dialog.cc:32
+#: src/wx/film_editor.cc:307 src/wx/filter_dialog.cc:32
 msgid "Filters"
 msgstr "Filtros"
 
-#: src/wx/film_editor.cc:268
+#: src/wx/film_editor.cc:272
 msgid "Format"
 msgstr "Formato"
 
@@ -234,7 +234,7 @@ msgstr "Gb"
 msgid "Host name or IP address"
 msgstr "Nombre o dirección IP"
 
-#: src/wx/film_editor.cc:1273
+#: src/wx/film_editor.cc:1280
 msgid "Hz"
 msgstr "Hz"
 
@@ -246,19 +246,19 @@ msgstr "Quiero reproducir con el fader a"
 msgid "IP address"
 msgstr "Dirección IP"
 
-#: src/wx/film_editor.cc:335
+#: src/wx/film_editor.cc:339
 msgid "JPEG2000 bandwidth"
 msgstr "Ancho de banda JPEG2000"
 
-#: src/wx/film_editor.cc:273
+#: src/wx/film_editor.cc:277
 msgid "Left crop"
 msgstr "Recorte izquierda"
 
-#: src/wx/film_editor.cc:164
+#: src/wx/film_editor.cc:159
 msgid "Length"
 msgstr "Longitud"
 
-#: src/wx/film_editor.cc:339
+#: src/wx/film_editor.cc:343
 msgid "MBps"
 msgstr "MBps"
 
@@ -274,7 +274,7 @@ msgstr "Nombre"
 msgid "New Film"
 msgstr "Nueva película"
 
-#: src/wx/film_editor.cc:305 src/wx/film_editor.cc:667
+#: src/wx/film_editor.cc:309 src/wx/film_editor.cc:671
 msgid "None"
 msgstr "Ninguno"
 
@@ -282,11 +282,7 @@ msgstr "Ninguno"
 msgid "Original Frame Rate"
 msgstr "Velocidad original"
 
-#: src/wx/film_editor.cc:159
-msgid "Original Size"
-msgstr "Tamaño original"
-
-#: src/wx/film_editor.cc:1352
+#: src/wx/film_editor.cc:1360
 #, c-format
 msgid "Original video is %dx%d (%.2f:1)\n"
 msgstr ""
@@ -295,7 +291,7 @@ msgstr ""
 msgid "Package Type (e.g. OV)"
 msgstr "Tipo de paquete (ej. OV)"
 
-#: src/wx/film_editor.cc:1384
+#: src/wx/film_editor.cc:1392
 #, c-format
 msgid "Padded with black to %dx%d (%.2f:1)\n"
 msgstr ""
@@ -304,7 +300,7 @@ msgstr ""
 msgid "Peak"
 msgstr "Pico"
 
-#: src/wx/film_viewer.cc:54
+#: src/wx/film_viewer.cc:58
 msgid "Play"
 msgstr "Reproducir"
 
@@ -332,7 +328,7 @@ msgstr "Escalador de referencia para A/B"
 msgid "Remove"
 msgstr "Quitar"
 
-#: src/wx/film_editor.cc:278
+#: src/wx/film_editor.cc:282
 msgid "Right crop"
 msgstr "Recorte derecha"
 
@@ -340,16 +336,16 @@ msgstr "Recorte derecha"
 msgid "Running"
 msgstr "Ejecutando"
 
-#: src/wx/film_editor.cc:1376
+#: src/wx/film_editor.cc:1384
 #, c-format
 msgid "Scaled to %dx%d (%.2f:1)\n"
 msgstr ""
 
-#: src/wx/film_editor.cc:315
+#: src/wx/film_editor.cc:319
 msgid "Scaler"
 msgstr "Escalador"
 
-#: src/wx/film_editor.cc:407
+#: src/wx/film_editor.cc:411
 msgid "Select Audio File"
 msgstr "Seleccionar fichero de audio"
 
@@ -365,7 +361,7 @@ msgstr "Servidor"
 msgid "Set language"
 msgstr ""
 
-#: src/wx/film_editor.cc:364
+#: src/wx/film_editor.cc:368
 msgid "Show Audio..."
 msgstr "Mostrar audio..."
 
@@ -373,7 +369,7 @@ msgstr "Mostrar audio..."
 msgid "Smoothing"
 msgstr "Suavizado"
 
-#: src/wx/film_editor.cc:173
+#: src/wx/film_editor.cc:168
 msgid "Start"
 msgstr "Inicio"
 
@@ -385,11 +381,11 @@ msgstr "Estudio (ej. TCF)"
 msgid "Subtitle Language (e.g. FR)"
 msgstr "Idioma del subtítulo (ej. EN)"
 
-#: src/wx/film_editor.cc:432
+#: src/wx/film_editor.cc:436
 msgid "Subtitle Offset"
 msgstr "Desplazamiento del subtítulo"
 
-#: src/wx/film_editor.cc:441
+#: src/wx/film_editor.cc:445
 msgid "Subtitle Scale"
 msgstr "Escala del subtítulo"
 
@@ -433,14 +429,19 @@ msgstr "Hilos a utilizar para la codificación en esta máquina"
 msgid "Time"
 msgstr "Tiempo"
 
-#: src/wx/film_editor.cc:283
+#: src/wx/film_editor.cc:287
 msgid "Top crop"
 msgstr "Recortar arriba"
 
-#: src/wx/film_editor.cc:171
+#: src/wx/film_editor.cc:166
 msgid "Trim frames"
 msgstr "Recortar fotogramas"
 
+#: src/wx/film_editor.cc:179
+#, fuzzy
+msgid "Trim method"
+msgstr "Recortar fotogramas"
+
 #: src/wx/film_editor.cc:125
 msgid "Trust content's header"
 msgstr "Confiar en la cabecera del contenido"
@@ -457,11 +458,11 @@ msgstr "Usar el nombre DCI"
 msgid "Use best"
 msgstr "Usar la mejor"
 
-#: src/wx/film_editor.cc:391
+#: src/wx/film_editor.cc:395
 msgid "Use content's audio"
 msgstr "Usar el audio del contenido"
 
-#: src/wx/film_editor.cc:401
+#: src/wx/film_editor.cc:405
 msgid "Use external audio"
 msgstr "Usar audio externo"
 
@@ -469,11 +470,11 @@ msgstr "Usar audio externo"
 msgid "Video"
 msgstr "Vídeo"
 
-#: src/wx/film_editor.cc:424
+#: src/wx/film_editor.cc:428
 msgid "With Subtitles"
 msgstr "Con subtítulos"
 
-#: src/wx/film_editor.cc:1271
+#: src/wx/film_editor.cc:1278
 msgid "channels"
 msgstr "canales"
 
@@ -481,20 +482,28 @@ msgstr "canales"
 msgid "counting..."
 msgstr "contando..."
 
-#: src/wx/film_editor.cc:373
+#: src/wx/film_editor.cc:377
 msgid "dB"
 msgstr "dB"
 
-#: src/wx/film_editor.cc:696 src/wx/film_editor.cc:699
+#: src/wx/film_editor.cc:212
+msgid "encode all frames and play the subset"
+msgstr ""
+
+#: src/wx/film_editor.cc:213
+msgid "encode only the subset"
+msgstr ""
+
+#: src/wx/film_editor.cc:694 src/wx/film_editor.cc:697
 msgid "frames"
 msgstr "fotogramas"
 
 #. / TRANSLATORS: this is an abbreviation for milliseconds, the unit of time
-#: src/wx/film_editor.cc:386
+#: src/wx/film_editor.cc:390
 msgid "ms"
 msgstr "ms"
 
-#: src/wx/film_editor.cc:436
+#: src/wx/film_editor.cc:440
 msgid "pixels"
 msgstr ""
 
@@ -506,3 +515,6 @@ msgstr "s"
 #: src/wx/properties_dialog.cc:62 src/wx/properties_dialog.cc:63
 msgid "unknown"
 msgstr "desconocido"
+
+#~ msgid "Original Size"
+#~ msgstr "Tamaño original"
index 2aac7114cb3ece6297a2365fdd9d0296ec7931f0..36ae4a9252727678ed8e53a57c20177d451764c1 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: DCP-o-matic FRENCH\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-09 11:14+0100\n"
+"POT-Creation-Date: 2013-04-22 15:06+0100\n"
 "PO-Revision-Date: 2013-03-20 00:34+0100\n"
 "Last-Translator: FreeDCP.net <freedcp.net@gmail.com>\n"
 "Language-Team: \n"
@@ -16,7 +16,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: src/wx/film_editor.cc:445
+#: src/wx/film_editor.cc:449
 msgid "%"
 msgstr "%"
 
@@ -24,7 +24,7 @@ msgstr "%"
 msgid "(restart DCP-o-matic to see language changes)"
 msgstr ""
 
-#: src/wx/film_editor.cc:1269
+#: src/wx/film_editor.cc:1276
 msgid "1 channel"
 msgstr "1 canal"
 
@@ -40,11 +40,11 @@ msgstr "Ajouter"
 msgid "Audio"
 msgstr "Audio"
 
-#: src/wx/film_editor.cc:381
+#: src/wx/film_editor.cc:385
 msgid "Audio Delay"
 msgstr "Délai audio"
 
-#: src/wx/film_editor.cc:369
+#: src/wx/film_editor.cc:373
 msgid "Audio Gain"
 msgstr "Gain audio"
 
@@ -52,7 +52,7 @@ msgstr "Gain audio"
 msgid "Audio Language (e.g. EN)"
 msgstr "Langue audio (ex. FR)"
 
-#: src/wx/film_editor.cc:820
+#: src/wx/film_editor.cc:824
 #, c-format
 msgid "Audio will be resampled from %dHz to %dHz\n"
 msgstr ""
@@ -62,7 +62,7 @@ msgstr ""
 msgid "Bad setting for %s (%s)"
 msgstr "Mauvais paramètre pour %s (%s)"
 
-#: src/wx/film_editor.cc:288
+#: src/wx/film_editor.cc:292
 msgid "Bottom crop"
 msgstr "Découpe bas"
 
@@ -74,7 +74,7 @@ msgstr "Parcourir..."
 msgid "But I have to use fader"
 msgstr "Je souhaite utiliser ce volume"
 
-#: src/wx/film_editor.cc:374
+#: src/wx/film_editor.cc:378
 msgid "Calculate..."
 msgstr "Calcul..."
 
@@ -86,7 +86,7 @@ msgstr "Annuler"
 msgid "Channels"
 msgstr "Canaux"
 
-#: src/wx/film_editor.cc:325
+#: src/wx/film_editor.cc:329
 msgid "Colour look-up table"
 msgstr "Espace colorimétrique"
 
@@ -98,7 +98,7 @@ msgstr "Contenu"
 msgid "Content Type"
 msgstr "Type de Contenu"
 
-#: src/wx/film_viewer.cc:415
+#: src/wx/film_viewer.cc:451
 #, c-format
 msgid "Could not decode video for view (%s)"
 msgstr "Décodage de la vidéo pour visualisation impossible (%s)"
@@ -108,12 +108,12 @@ msgstr "Décodage de la vidéo pour visualisation impossible (%s)"
 msgid "Could not make DCP: %s"
 msgstr "Impossible de créer le DCP : %s"
 
-#: src/wx/film_viewer.cc:107
+#: src/wx/film_viewer.cc:125
 #, c-format
 msgid "Could not open content file (%s)"
 msgstr "Ouverture du contenu impossible (%s)"
 
-#: src/wx/film_editor.cc:509
+#: src/wx/film_editor.cc:513
 #, c-format
 msgid "Could not set content: %s"
 msgstr "Sélectionner du contenu impossible : %s"
@@ -122,7 +122,7 @@ msgstr "Sélectionner du contenu impossible : %s"
 msgid "Create in folder"
 msgstr "Créer dans le dossier"
 
-#: src/wx/film_editor.cc:1363
+#: src/wx/film_editor.cc:1371
 #, c-format
 msgid "Cropped to %dx%d (%.2f:1)\n"
 msgstr ""
@@ -177,7 +177,7 @@ msgid "Edit"
 msgstr "Édition"
 
 #: src/wx/config_dialog.cc:103 src/wx/config_dialog.cc:122
-#: src/wx/film_editor.cc:308
+#: src/wx/film_editor.cc:312
 msgid "Edit..."
 msgstr "Éditer..."
 
@@ -185,7 +185,7 @@ msgstr "Éditer..."
 msgid "Encoding Servers"
 msgstr "Serveurs d'encodage"
 
-#: src/wx/film_editor.cc:176
+#: src/wx/film_editor.cc:171
 msgid "End"
 msgstr "Fin"
 
@@ -205,11 +205,11 @@ msgstr "Propriétés du film"
 msgid "Film name"
 msgstr "Nom du Film"
 
-#: src/wx/film_editor.cc:303 src/wx/filter_dialog.cc:32
+#: src/wx/film_editor.cc:307 src/wx/filter_dialog.cc:32
 msgid "Filters"
 msgstr "Filtres"
 
-#: src/wx/film_editor.cc:268
+#: src/wx/film_editor.cc:272
 msgid "Format"
 msgstr "Format"
 
@@ -233,7 +233,7 @@ msgstr "Gb"
 msgid "Host name or IP address"
 msgstr "Nom de l'hôte ou adresse IP"
 
-#: src/wx/film_editor.cc:1273
+#: src/wx/film_editor.cc:1280
 msgid "Hz"
 msgstr "Hz"
 
@@ -245,19 +245,19 @@ msgstr "Je veux le jouer à ce volume"
 msgid "IP address"
 msgstr "Adresse IP"
 
-#: src/wx/film_editor.cc:335
+#: src/wx/film_editor.cc:339
 msgid "JPEG2000 bandwidth"
 msgstr "Qualité JPEG2000"
 
-#: src/wx/film_editor.cc:273
+#: src/wx/film_editor.cc:277
 msgid "Left crop"
 msgstr "Découpe gauche"
 
-#: src/wx/film_editor.cc:164
+#: src/wx/film_editor.cc:159
 msgid "Length"
 msgstr "Longueur / durée"
 
-#: src/wx/film_editor.cc:339
+#: src/wx/film_editor.cc:343
 msgid "MBps"
 msgstr "MBps"
 
@@ -273,7 +273,7 @@ msgstr "Nom"
 msgid "New Film"
 msgstr "Nouveau Film"
 
-#: src/wx/film_editor.cc:305 src/wx/film_editor.cc:667
+#: src/wx/film_editor.cc:309 src/wx/film_editor.cc:671
 msgid "None"
 msgstr "Aucun"
 
@@ -281,11 +281,7 @@ msgstr "Aucun"
 msgid "Original Frame Rate"
 msgstr "Cadence d'images originale"
 
-#: src/wx/film_editor.cc:159
-msgid "Original Size"
-msgstr "Taille Originale"
-
-#: src/wx/film_editor.cc:1352
+#: src/wx/film_editor.cc:1360
 #, c-format
 msgid "Original video is %dx%d (%.2f:1)\n"
 msgstr ""
@@ -294,7 +290,7 @@ msgstr ""
 msgid "Package Type (e.g. OV)"
 msgstr "Type de paquet (ex. OV)"
 
-#: src/wx/film_editor.cc:1384
+#: src/wx/film_editor.cc:1392
 #, c-format
 msgid "Padded with black to %dx%d (%.2f:1)\n"
 msgstr ""
@@ -303,7 +299,7 @@ msgstr ""
 msgid "Peak"
 msgstr "Crête"
 
-#: src/wx/film_viewer.cc:54
+#: src/wx/film_viewer.cc:58
 msgid "Play"
 msgstr "Lecture"
 
@@ -331,7 +327,7 @@ msgstr "Échelle de référence pour A/B"
 msgid "Remove"
 msgstr "Supprimer"
 
-#: src/wx/film_editor.cc:278
+#: src/wx/film_editor.cc:282
 msgid "Right crop"
 msgstr "Découpe droite"
 
@@ -339,16 +335,16 @@ msgstr "Découpe droite"
 msgid "Running"
 msgstr "Progression"
 
-#: src/wx/film_editor.cc:1376
+#: src/wx/film_editor.cc:1384
 #, c-format
 msgid "Scaled to %dx%d (%.2f:1)\n"
 msgstr ""
 
-#: src/wx/film_editor.cc:315
+#: src/wx/film_editor.cc:319
 msgid "Scaler"
 msgstr "Mise à l'échelle"
 
-#: src/wx/film_editor.cc:407
+#: src/wx/film_editor.cc:411
 msgid "Select Audio File"
 msgstr "Sélectionner le fichier son"
 
@@ -364,7 +360,7 @@ msgstr "Serveur"
 msgid "Set language"
 msgstr ""
 
-#: src/wx/film_editor.cc:364
+#: src/wx/film_editor.cc:368
 msgid "Show Audio..."
 msgstr "Analyser le son..."
 
@@ -372,7 +368,7 @@ msgstr "Analyser le son..."
 msgid "Smoothing"
 msgstr "Lissage"
 
-#: src/wx/film_editor.cc:173
+#: src/wx/film_editor.cc:168
 msgid "Start"
 msgstr "Début"
 
@@ -384,11 +380,11 @@ msgstr "Studio (ex. TCF)"
 msgid "Subtitle Language (e.g. FR)"
 msgstr "Langue de sous-titres (ex. FR)"
 
-#: src/wx/film_editor.cc:432
+#: src/wx/film_editor.cc:436
 msgid "Subtitle Offset"
 msgstr "Décalage du sous-titre"
 
-#: src/wx/film_editor.cc:441
+#: src/wx/film_editor.cc:445
 msgid "Subtitle Scale"
 msgstr "Taille du sous-titre"
 
@@ -432,14 +428,18 @@ msgstr "Nombre de processus à utiliser sur cet hôte"
 msgid "Time"
 msgstr "Durée"
 
-#: src/wx/film_editor.cc:283
+#: src/wx/film_editor.cc:287
 msgid "Top crop"
 msgstr "Découpe haut"
 
-#: src/wx/film_editor.cc:171
+#: src/wx/film_editor.cc:166
 msgid "Trim frames"
 msgstr "Images coupées"
 
+#: src/wx/film_editor.cc:179
+msgid "Trim method"
+msgstr "Méthod de découpage"
+
 #: src/wx/film_editor.cc:125
 msgid "Trust content's header"
 msgstr "Faire confiance à l'en-tête"
@@ -456,11 +456,11 @@ msgstr "Utiliser le nom DCI"
 msgid "Use best"
 msgstr "Automatique"
 
-#: src/wx/film_editor.cc:391
+#: src/wx/film_editor.cc:395
 msgid "Use content's audio"
 msgstr "Utiliser le son intégré"
 
-#: src/wx/film_editor.cc:401
+#: src/wx/film_editor.cc:405
 msgid "Use external audio"
 msgstr "Utiliser une source audio externe"
 
@@ -468,11 +468,11 @@ msgstr "Utiliser une source audio externe"
 msgid "Video"
 msgstr "Vidéo"
 
-#: src/wx/film_editor.cc:424
+#: src/wx/film_editor.cc:428
 msgid "With Subtitles"
 msgstr "Avec sous-titres"
 
-#: src/wx/film_editor.cc:1271
+#: src/wx/film_editor.cc:1278
 msgid "channels"
 msgstr "canaux"
 
@@ -480,20 +480,28 @@ msgstr "canaux"
 msgid "counting..."
 msgstr "calcul..."
 
-#: src/wx/film_editor.cc:373
+#: src/wx/film_editor.cc:377
 msgid "dB"
 msgstr "dB"
 
-#: src/wx/film_editor.cc:696 src/wx/film_editor.cc:699
+#: src/wx/film_editor.cc:212
+msgid "encode all frames and play the subset"
+msgstr "encoder toutes les images mais lire seulement la sélection"
+
+#: src/wx/film_editor.cc:213
+msgid "encode only the subset"
+msgstr "encoder seulement la sélection"
+
+#: src/wx/film_editor.cc:694 src/wx/film_editor.cc:697
 msgid "frames"
 msgstr "images"
 
 #. / TRANSLATORS: this is an abbreviation for milliseconds, the unit of time
-#: src/wx/film_editor.cc:386
+#: src/wx/film_editor.cc:390
 msgid "ms"
 msgstr "ms"
 
-#: src/wx/film_editor.cc:436
+#: src/wx/film_editor.cc:440
 msgid "pixels"
 msgstr ""
 
@@ -505,3 +513,6 @@ msgstr "s"
 #: src/wx/properties_dialog.cc:62 src/wx/properties_dialog.cc:63
 msgid "unknown"
 msgstr "inconnu"
+
+#~ msgid "Original Size"
+#~ msgstr "Taille Originale"
index 7b06495e83959caddcc26491fc06aa905c72af7f..f53c40b977f8938fb4105c3dc4afeb382a80e4ba 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: IT VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-09 11:14+0100\n"
+"POT-Creation-Date: 2013-04-22 15:06+0100\n"
 "PO-Revision-Date: 2013-04-03 12:37+0100\n"
 "Last-Translator: Maci <macibro@gmail.com>\n"
 "Language-Team: \n"
@@ -17,7 +17,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 1.5.5\n"
 
-#: src/wx/film_editor.cc:445
+#: src/wx/film_editor.cc:449
 msgid "%"
 msgstr "%"
 
@@ -25,7 +25,7 @@ msgstr "%"
 msgid "(restart DCP-o-matic to see language changes)"
 msgstr "(riavviare DCP-o-matic per vedere i cambiamenti di lingua)"
 
-#: src/wx/film_editor.cc:1269
+#: src/wx/film_editor.cc:1276
 msgid "1 channel"
 msgstr "Canale 1"
 
@@ -41,11 +41,11 @@ msgstr "Aggiungi"
 msgid "Audio"
 msgstr "Audio"
 
-#: src/wx/film_editor.cc:381
+#: src/wx/film_editor.cc:385
 msgid "Audio Delay"
 msgstr "Ritardo dell'audio"
 
-#: src/wx/film_editor.cc:369
+#: src/wx/film_editor.cc:373
 msgid "Audio Gain"
 msgstr "Guadagno dell'audio"
 
@@ -53,7 +53,7 @@ msgstr "Guadagno dell'audio"
 msgid "Audio Language (e.g. EN)"
 msgstr "Lingua dell'audio (es. EN)"
 
-#: src/wx/film_editor.cc:820
+#: src/wx/film_editor.cc:824
 #, c-format
 msgid "Audio will be resampled from %dHz to %dHz\n"
 msgstr ""
@@ -63,7 +63,7 @@ msgstr ""
 msgid "Bad setting for %s (%s)"
 msgstr "Valore sbagliato per %s (%s)"
 
-#: src/wx/film_editor.cc:288
+#: src/wx/film_editor.cc:292
 msgid "Bottom crop"
 msgstr "Taglio in basso"
 
@@ -75,7 +75,7 @@ msgstr "Sfoglia..."
 msgid "But I have to use fader"
 msgstr "Ma dovrò riprodurre con il fader a"
 
-#: src/wx/film_editor.cc:374
+#: src/wx/film_editor.cc:378
 msgid "Calculate..."
 msgstr "Calcola..."
 
@@ -87,7 +87,7 @@ msgstr "Annulla"
 msgid "Channels"
 msgstr "Canali"
 
-#: src/wx/film_editor.cc:325
+#: src/wx/film_editor.cc:329
 msgid "Colour look-up table"
 msgstr "Tabella per ricerca del colore"
 
@@ -99,7 +99,7 @@ msgstr "Contenuto"
 msgid "Content Type"
 msgstr "Tipo di contenuto"
 
-#: src/wx/film_viewer.cc:415
+#: src/wx/film_viewer.cc:451
 #, c-format
 msgid "Could not decode video for view (%s)"
 msgstr "Non posso decodificare il video per guardarlo (%s)"
@@ -109,12 +109,12 @@ msgstr "Non posso decodificare il video per guardarlo (%s)"
 msgid "Could not make DCP: %s"
 msgstr "Non posso creare il DCP: %s"
 
-#: src/wx/film_viewer.cc:107
+#: src/wx/film_viewer.cc:125
 #, c-format
 msgid "Could not open content file (%s)"
 msgstr "Non posso aprire il file del contenuto (%s)"
 
-#: src/wx/film_editor.cc:509
+#: src/wx/film_editor.cc:513
 #, c-format
 msgid "Could not set content: %s"
 msgstr "Non posso regolare il contenuto: %s"
@@ -123,7 +123,7 @@ msgstr "Non posso regolare il contenuto: %s"
 msgid "Create in folder"
 msgstr "Crea nella cartella"
 
-#: src/wx/film_editor.cc:1363
+#: src/wx/film_editor.cc:1371
 #, c-format
 msgid "Cropped to %dx%d (%.2f:1)\n"
 msgstr ""
@@ -178,7 +178,7 @@ msgid "Edit"
 msgstr "Modifica"
 
 #: src/wx/config_dialog.cc:103 src/wx/config_dialog.cc:122
-#: src/wx/film_editor.cc:308
+#: src/wx/film_editor.cc:312
 msgid "Edit..."
 msgstr "Modifica..."
 
@@ -186,7 +186,7 @@ msgstr "Modifica..."
 msgid "Encoding Servers"
 msgstr "Servers di codifica"
 
-#: src/wx/film_editor.cc:176
+#: src/wx/film_editor.cc:171
 msgid "End"
 msgstr "Fine"
 
@@ -206,11 +206,11 @@ msgstr "Proprietà del film"
 msgid "Film name"
 msgstr "Nome del film"
 
-#: src/wx/film_editor.cc:303 src/wx/filter_dialog.cc:32
+#: src/wx/film_editor.cc:307 src/wx/filter_dialog.cc:32
 msgid "Filters"
 msgstr "Filtri"
 
-#: src/wx/film_editor.cc:268
+#: src/wx/film_editor.cc:272
 msgid "Format"
 msgstr "Formato"
 
@@ -234,7 +234,7 @@ msgstr "Gb"
 msgid "Host name or IP address"
 msgstr "Nome dell'Host o indirizzo IP"
 
-#: src/wx/film_editor.cc:1273
+#: src/wx/film_editor.cc:1280
 msgid "Hz"
 msgstr "Hz"
 
@@ -246,19 +246,19 @@ msgstr "Sto usando il fader a"
 msgid "IP address"
 msgstr "Indirizzo IP"
 
-#: src/wx/film_editor.cc:335
+#: src/wx/film_editor.cc:339
 msgid "JPEG2000 bandwidth"
 msgstr "Banda passante JPEG2000"
 
-#: src/wx/film_editor.cc:273
+#: src/wx/film_editor.cc:277
 msgid "Left crop"
 msgstr "Taglio a sinistra"
 
-#: src/wx/film_editor.cc:164
+#: src/wx/film_editor.cc:159
 msgid "Length"
 msgstr "Lunghezza"
 
-#: src/wx/film_editor.cc:339
+#: src/wx/film_editor.cc:343
 msgid "MBps"
 msgstr "MBps"
 
@@ -274,7 +274,7 @@ msgstr "Nome"
 msgid "New Film"
 msgstr "Nuovo Film"
 
-#: src/wx/film_editor.cc:305 src/wx/film_editor.cc:667
+#: src/wx/film_editor.cc:309 src/wx/film_editor.cc:671
 msgid "None"
 msgstr "Nessuno"
 
@@ -282,11 +282,7 @@ msgstr "Nessuno"
 msgid "Original Frame Rate"
 msgstr "Frequenza fotogrammi originale"
 
-#: src/wx/film_editor.cc:159
-msgid "Original Size"
-msgstr "Dimensione Originale"
-
-#: src/wx/film_editor.cc:1352
+#: src/wx/film_editor.cc:1360
 #, c-format
 msgid "Original video is %dx%d (%.2f:1)\n"
 msgstr ""
@@ -295,7 +291,7 @@ msgstr ""
 msgid "Package Type (e.g. OV)"
 msgstr "Tipo di Package (es. OV)"
 
-#: src/wx/film_editor.cc:1384
+#: src/wx/film_editor.cc:1392
 #, c-format
 msgid "Padded with black to %dx%d (%.2f:1)\n"
 msgstr ""
@@ -304,7 +300,7 @@ msgstr ""
 msgid "Peak"
 msgstr "Picco"
 
-#: src/wx/film_viewer.cc:54
+#: src/wx/film_viewer.cc:58
 msgid "Play"
 msgstr "Riproduci"
 
@@ -332,7 +328,7 @@ msgstr "Scalatura di riferimento A/B"
 msgid "Remove"
 msgstr "Rimuovi"
 
-#: src/wx/film_editor.cc:278
+#: src/wx/film_editor.cc:282
 msgid "Right crop"
 msgstr "Taglio a destra"
 
@@ -340,16 +336,16 @@ msgstr "Taglio a destra"
 msgid "Running"
 msgstr "In corso"
 
-#: src/wx/film_editor.cc:1376
+#: src/wx/film_editor.cc:1384
 #, c-format
 msgid "Scaled to %dx%d (%.2f:1)\n"
 msgstr ""
 
-#: src/wx/film_editor.cc:315
+#: src/wx/film_editor.cc:319
 msgid "Scaler"
 msgstr "Scaler"
 
-#: src/wx/film_editor.cc:407
+#: src/wx/film_editor.cc:411
 msgid "Select Audio File"
 msgstr "Seleziona file audio"
 
@@ -365,7 +361,7 @@ msgstr "Server"
 msgid "Set language"
 msgstr "Seleziona la lingua"
 
-#: src/wx/film_editor.cc:364
+#: src/wx/film_editor.cc:368
 msgid "Show Audio..."
 msgstr "Mostra Audio..."
 
@@ -373,7 +369,7 @@ msgstr "Mostra Audio..."
 msgid "Smoothing"
 msgstr "Levigatura"
 
-#: src/wx/film_editor.cc:173
+#: src/wx/film_editor.cc:168
 msgid "Start"
 msgstr "Inizio"
 
@@ -385,11 +381,11 @@ msgstr "Studio (es. TCF)"
 msgid "Subtitle Language (e.g. FR)"
 msgstr "Lingua dei Sottotitoli (es. FR)"
 
-#: src/wx/film_editor.cc:432
+#: src/wx/film_editor.cc:436
 msgid "Subtitle Offset"
 msgstr "Sfalsamento dei Sottotitoli"
 
-#: src/wx/film_editor.cc:441
+#: src/wx/film_editor.cc:445
 msgid "Subtitle Scale"
 msgstr "Scala dei Sottotitoli"
 
@@ -433,14 +429,19 @@ msgstr "Threads da usare per codificare su questo host"
 msgid "Time"
 msgstr "Tempo"
 
-#: src/wx/film_editor.cc:283
+#: src/wx/film_editor.cc:287
 msgid "Top crop"
 msgstr "Taglio in alto"
 
-#: src/wx/film_editor.cc:171
+#: src/wx/film_editor.cc:166
 msgid "Trim frames"
 msgstr "Taglia fotogrammi"
 
+#: src/wx/film_editor.cc:179
+#, fuzzy
+msgid "Trim method"
+msgstr "Taglia fotogrammi"
+
 #: src/wx/film_editor.cc:125
 msgid "Trust content's header"
 msgstr "Conferma l'intestazione del contenuto"
@@ -457,11 +458,11 @@ msgstr "Usa nome DCI"
 msgid "Use best"
 msgstr "Usa la migliore"
 
-#: src/wx/film_editor.cc:391
+#: src/wx/film_editor.cc:395
 msgid "Use content's audio"
 msgstr "Usa l'audio del contenuto"
 
-#: src/wx/film_editor.cc:401
+#: src/wx/film_editor.cc:405
 msgid "Use external audio"
 msgstr "Usa l'audio esterno"
 
@@ -469,11 +470,11 @@ msgstr "Usa l'audio esterno"
 msgid "Video"
 msgstr "Video"
 
-#: src/wx/film_editor.cc:424
+#: src/wx/film_editor.cc:428
 msgid "With Subtitles"
 msgstr "Con Sottotitoli"
 
-#: src/wx/film_editor.cc:1271
+#: src/wx/film_editor.cc:1278
 msgid "channels"
 msgstr "canali"
 
@@ -481,20 +482,28 @@ msgstr "canali"
 msgid "counting..."
 msgstr "conteggio..."
 
-#: src/wx/film_editor.cc:373
+#: src/wx/film_editor.cc:377
 msgid "dB"
 msgstr "dB"
 
-#: src/wx/film_editor.cc:696 src/wx/film_editor.cc:699
+#: src/wx/film_editor.cc:212
+msgid "encode all frames and play the subset"
+msgstr ""
+
+#: src/wx/film_editor.cc:213
+msgid "encode only the subset"
+msgstr ""
+
+#: src/wx/film_editor.cc:694 src/wx/film_editor.cc:697
 msgid "frames"
 msgstr "fotogrammi"
 
 #. / TRANSLATORS: this is an abbreviation for milliseconds, the unit of time
-#: src/wx/film_editor.cc:386
+#: src/wx/film_editor.cc:390
 msgid "ms"
 msgstr "ms"
 
-#: src/wx/film_editor.cc:436
+#: src/wx/film_editor.cc:440
 msgid "pixels"
 msgstr ""
 
@@ -506,3 +515,6 @@ msgstr "s"
 #: src/wx/properties_dialog.cc:62 src/wx/properties_dialog.cc:63
 msgid "unknown"
 msgstr "sconosciuto"
+
+#~ msgid "Original Size"
+#~ msgstr "Dimensione Originale"
index 96fafadebf3be3f1b27b99ebe82bf08b1d41afcf..9ed7ee2bee987350af06f5b6d379008fcbb41abd 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: DCP-o-matic\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-09 11:14+0100\n"
+"POT-Creation-Date: 2013-04-22 15:06+0100\n"
 "PO-Revision-Date: 2013-04-09 10:13+0100\n"
 "Last-Translator: Adam Klotblixt <adam.klotblixt@gmail.com>\n"
 "Language-Team: \n"
@@ -17,7 +17,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 1.5.5\n"
 
-#: src/wx/film_editor.cc:445
+#: src/wx/film_editor.cc:449
 msgid "%"
 msgstr "%"
 
@@ -25,7 +25,7 @@ msgstr "%"
 msgid "(restart DCP-o-matic to see language changes)"
 msgstr "(starta om DCP-o-matic för att se språkändringar)"
 
-#: src/wx/film_editor.cc:1269
+#: src/wx/film_editor.cc:1276
 msgid "1 channel"
 msgstr "1 kanal"
 
@@ -41,11 +41,11 @@ msgstr "Lägg till"
 msgid "Audio"
 msgstr "Audio"
 
-#: src/wx/film_editor.cc:381
+#: src/wx/film_editor.cc:385
 msgid "Audio Delay"
 msgstr "Audio Fördröjning"
 
-#: src/wx/film_editor.cc:369
+#: src/wx/film_editor.cc:373
 msgid "Audio Gain"
 msgstr "Audio Förstärkning"
 
@@ -53,7 +53,7 @@ msgstr "Audio Förstärkning"
 msgid "Audio Language (e.g. EN)"
 msgstr "Audio Språk (ex. SV)"
 
-#: src/wx/film_editor.cc:820
+#: src/wx/film_editor.cc:824
 #, c-format
 msgid "Audio will be resampled from %dHz to %dHz\n"
 msgstr "Audio kommer att samplas om från %dHz till %dHz\n"
@@ -63,7 +63,7 @@ msgstr "Audio kommer att samplas om från %dHz till %dHz\n"
 msgid "Bad setting for %s (%s)"
 msgstr "Felaktig inställning för %s (%s)"
 
-#: src/wx/film_editor.cc:288
+#: src/wx/film_editor.cc:292
 msgid "Bottom crop"
 msgstr "Nedre beskärning"
 
@@ -75,7 +75,7 @@ msgstr "Bläddra..."
 msgid "But I have to use fader"
 msgstr "Men jag måste använda mixervolym"
 
-#: src/wx/film_editor.cc:374
+#: src/wx/film_editor.cc:378
 msgid "Calculate..."
 msgstr "Beräkna..."
 
@@ -87,7 +87,7 @@ msgstr "Avbryt"
 msgid "Channels"
 msgstr "Kanaler"
 
-#: src/wx/film_editor.cc:325
+#: src/wx/film_editor.cc:329
 msgid "Colour look-up table"
 msgstr "Färguppslagningstabell"
 
@@ -99,7 +99,7 @@ msgstr "Innehåll"
 msgid "Content Type"
 msgstr "Innehållstyp"
 
-#: src/wx/film_viewer.cc:415
+#: src/wx/film_viewer.cc:451
 #, c-format
 msgid "Could not decode video for view (%s)"
 msgstr "Kunde inte avkoda video för visning (%s)"
@@ -109,12 +109,12 @@ msgstr "Kunde inte avkoda video för visning (%s)"
 msgid "Could not make DCP: %s"
 msgstr "Kunde inte skapa DCP: %s"
 
-#: src/wx/film_viewer.cc:107
+#: src/wx/film_viewer.cc:125
 #, c-format
 msgid "Could not open content file (%s)"
 msgstr "Kunde inte öppna innehållsfilen (%s)"
 
-#: src/wx/film_editor.cc:509
+#: src/wx/film_editor.cc:513
 #, c-format
 msgid "Could not set content: %s"
 msgstr "Kunde inte fastställa innehåll: %s"
@@ -123,7 +123,7 @@ msgstr "Kunde inte fastställa innehåll: %s"
 msgid "Create in folder"
 msgstr "Skapa i katalog"
 
-#: src/wx/film_editor.cc:1363
+#: src/wx/film_editor.cc:1371
 #, c-format
 msgid "Cropped to %dx%d (%.2f:1)\n"
 msgstr "Beskuren till %dx%d (%.2f:1)\n"
@@ -178,7 +178,7 @@ msgid "Edit"
 msgstr "Redigera"
 
 #: src/wx/config_dialog.cc:103 src/wx/config_dialog.cc:122
-#: src/wx/film_editor.cc:308
+#: src/wx/film_editor.cc:312
 msgid "Edit..."
 msgstr "Redigera..."
 
@@ -186,7 +186,7 @@ msgstr "Redigera..."
 msgid "Encoding Servers"
 msgstr "Kodningsservrar"
 
-#: src/wx/film_editor.cc:176
+#: src/wx/film_editor.cc:171
 msgid "End"
 msgstr "Slut"
 
@@ -206,11 +206,11 @@ msgstr "Film Egenskaper"
 msgid "Film name"
 msgstr "film namn"
 
-#: src/wx/film_editor.cc:303 src/wx/filter_dialog.cc:32
+#: src/wx/film_editor.cc:307 src/wx/filter_dialog.cc:32
 msgid "Filters"
 msgstr "Filter"
 
-#: src/wx/film_editor.cc:268
+#: src/wx/film_editor.cc:272
 msgid "Format"
 msgstr "Format"
 
@@ -234,7 +234,7 @@ msgstr "Gb"
 msgid "Host name or IP address"
 msgstr "Värd-namn eller IP-adress"
 
-#: src/wx/film_editor.cc:1273
+#: src/wx/film_editor.cc:1280
 msgid "Hz"
 msgstr "Hz"
 
@@ -246,19 +246,19 @@ msgstr "Jag vill spela upp detta med mixervolym"
 msgid "IP address"
 msgstr "IP-adress"
 
-#: src/wx/film_editor.cc:335
+#: src/wx/film_editor.cc:339
 msgid "JPEG2000 bandwidth"
 msgstr "JPEG2000 bandbredd"
 
-#: src/wx/film_editor.cc:273
+#: src/wx/film_editor.cc:277
 msgid "Left crop"
 msgstr "Vänster beskärning"
 
-#: src/wx/film_editor.cc:164
+#: src/wx/film_editor.cc:159
 msgid "Length"
 msgstr "Längd"
 
-#: src/wx/film_editor.cc:339
+#: src/wx/film_editor.cc:343
 msgid "MBps"
 msgstr "MBps"
 
@@ -274,7 +274,7 @@ msgstr "Namn"
 msgid "New Film"
 msgstr "Ny Film"
 
-#: src/wx/film_editor.cc:305 src/wx/film_editor.cc:667
+#: src/wx/film_editor.cc:309 src/wx/film_editor.cc:671
 msgid "None"
 msgstr "Inget"
 
@@ -282,11 +282,7 @@ msgstr "Inget"
 msgid "Original Frame Rate"
 msgstr "Ursprunglig bildhastighet"
 
-#: src/wx/film_editor.cc:159
-msgid "Original Size"
-msgstr "Ursprunglig Storlek"
-
-#: src/wx/film_editor.cc:1352
+#: src/wx/film_editor.cc:1360
 #, c-format
 msgid "Original video is %dx%d (%.2f:1)\n"
 msgstr "Original-videon är %dx%d (%.2f:1)\n"
@@ -295,7 +291,7 @@ msgstr "Original-videon är %dx%d (%.2f:1)\n"
 msgid "Package Type (e.g. OV)"
 msgstr "Förpackningstyp (ex. OV)"
 
-#: src/wx/film_editor.cc:1384
+#: src/wx/film_editor.cc:1392
 #, c-format
 msgid "Padded with black to %dx%d (%.2f:1)\n"
 msgstr "Svarta kanter tillagda för %dx%d (%.2f:1)\n"
@@ -304,7 +300,7 @@ msgstr "Svarta kanter tillagda för %dx%d (%.2f:1)\n"
 msgid "Peak"
 msgstr "Topp"
 
-#: src/wx/film_viewer.cc:54
+#: src/wx/film_viewer.cc:58
 msgid "Play"
 msgstr "Spela"
 
@@ -332,7 +328,7 @@ msgstr "Referensomskalare för A/B"
 msgid "Remove"
 msgstr "Ta bort"
 
-#: src/wx/film_editor.cc:278
+#: src/wx/film_editor.cc:282
 msgid "Right crop"
 msgstr "Höger beskärning"
 
@@ -340,16 +336,16 @@ msgstr "Höger beskärning"
 msgid "Running"
 msgstr "Körs"
 
-#: src/wx/film_editor.cc:1376
+#: src/wx/film_editor.cc:1384
 #, c-format
 msgid "Scaled to %dx%d (%.2f:1)\n"
 msgstr "Skalad till %dx%d (%.2f:1)\n"
 
-#: src/wx/film_editor.cc:315
+#: src/wx/film_editor.cc:319
 msgid "Scaler"
 msgstr "Omskalare"
 
-#: src/wx/film_editor.cc:407
+#: src/wx/film_editor.cc:411
 msgid "Select Audio File"
 msgstr "Välj audiofil"
 
@@ -365,7 +361,7 @@ msgstr "Server"
 msgid "Set language"
 msgstr "Välj språk"
 
-#: src/wx/film_editor.cc:364
+#: src/wx/film_editor.cc:368
 msgid "Show Audio..."
 msgstr "Visa Audio..."
 
@@ -373,7 +369,7 @@ msgstr "Visa Audio..."
 msgid "Smoothing"
 msgstr "Utjämning"
 
-#: src/wx/film_editor.cc:173
+#: src/wx/film_editor.cc:168
 msgid "Start"
 msgstr "Start"
 
@@ -385,11 +381,11 @@ msgstr "Studio (ex. TCF)"
 msgid "Subtitle Language (e.g. FR)"
 msgstr "Undertextspråk (ex. SV)"
 
-#: src/wx/film_editor.cc:432
+#: src/wx/film_editor.cc:436
 msgid "Subtitle Offset"
 msgstr "Undertext Förskjutning"
 
-#: src/wx/film_editor.cc:441
+#: src/wx/film_editor.cc:445
 msgid "Subtitle Scale"
 msgstr "Undertext Skalning"
 
@@ -433,14 +429,19 @@ msgstr "Antal trådar att använda vid kodning på denna maskin"
 msgid "Time"
 msgstr "Tid"
 
-#: src/wx/film_editor.cc:283
+#: src/wx/film_editor.cc:287
 msgid "Top crop"
 msgstr "Övre beskärning"
 
-#: src/wx/film_editor.cc:171
+#: src/wx/film_editor.cc:166
 msgid "Trim frames"
 msgstr "Skippa bilder"
 
+#: src/wx/film_editor.cc:179
+#, fuzzy
+msgid "Trim method"
+msgstr "Skippa bilder"
+
 #: src/wx/film_editor.cc:125
 msgid "Trust content's header"
 msgstr "Lita på källans information"
@@ -457,11 +458,11 @@ msgstr "Använd DCI-namnet"
 msgid "Use best"
 msgstr "Använd bästa"
 
-#: src/wx/film_editor.cc:391
+#: src/wx/film_editor.cc:395
 msgid "Use content's audio"
 msgstr "Använd innehållets audio"
 
-#: src/wx/film_editor.cc:401
+#: src/wx/film_editor.cc:405
 msgid "Use external audio"
 msgstr "Använd extern audio"
 
@@ -469,11 +470,11 @@ msgstr "Använd extern audio"
 msgid "Video"
 msgstr "Video"
 
-#: src/wx/film_editor.cc:424
+#: src/wx/film_editor.cc:428
 msgid "With Subtitles"
 msgstr "Med Undertexter"
 
-#: src/wx/film_editor.cc:1271
+#: src/wx/film_editor.cc:1278
 msgid "channels"
 msgstr "kanaler"
 
@@ -481,20 +482,28 @@ msgstr "kanaler"
 msgid "counting..."
 msgstr "räknar..."
 
-#: src/wx/film_editor.cc:373
+#: src/wx/film_editor.cc:377
 msgid "dB"
 msgstr "dB"
 
-#: src/wx/film_editor.cc:696 src/wx/film_editor.cc:699
+#: src/wx/film_editor.cc:212
+msgid "encode all frames and play the subset"
+msgstr ""
+
+#: src/wx/film_editor.cc:213
+msgid "encode only the subset"
+msgstr ""
+
+#: src/wx/film_editor.cc:694 src/wx/film_editor.cc:697
 msgid "frames"
 msgstr "bilder"
 
 #. / TRANSLATORS: this is an abbreviation for milliseconds, the unit of time
-#: src/wx/film_editor.cc:386
+#: src/wx/film_editor.cc:390
 msgid "ms"
 msgstr "ms"
 
-#: src/wx/film_editor.cc:436
+#: src/wx/film_editor.cc:440
 msgid "pixels"
 msgstr "pixlar"
 
@@ -506,3 +515,6 @@ msgstr "s"
 #: src/wx/properties_dialog.cc:62 src/wx/properties_dialog.cc:63
 msgid "unknown"
 msgstr "okänt"
+
+#~ msgid "Original Size"
+#~ msgstr "Ursprunglig Storlek"
index 46fadd5703cb8eacb155b197337ba5ab41d4530a..1cf6514050b7428d20a336de35f1200c85988ef1 100644 (file)
@@ -124,52 +124,77 @@ BOOST_AUTO_TEST_CASE (make_black_test)
        }
 }
 
-shared_ptr<AudioBuffers> trimmer_test_last;
+shared_ptr<const Image> trimmer_test_last_video;
+shared_ptr<const AudioBuffers> trimmer_test_last_audio;
 
 void
-trimmer_test_helper (shared_ptr<AudioBuffers> audio)
+trimmer_test_video_helper (shared_ptr<const Image> image, bool, shared_ptr<Subtitle>)
 {
-       trimmer_test_last = audio;
+       trimmer_test_last_video = image;
 }
 
+void
+trimmer_test_audio_helper (shared_ptr<const AudioBuffers> audio)
+{
+       trimmer_test_last_audio = audio;
+}
+
+BOOST_AUTO_TEST_CASE (trimmer_passthrough_test)
+{
+       Trimmer trimmer (shared_ptr<Log> (), 0, 0, 200, 48000, 25, 25);
+       trimmer.Video.connect (bind (&trimmer_test_video_helper, _1, _2, _3));
+       trimmer.Audio.connect (bind (&trimmer_test_audio_helper, _1));
+
+       shared_ptr<SimpleImage> video (new SimpleImage (PIX_FMT_RGB24, libdcp::Size (1998, 1080), true));
+       shared_ptr<AudioBuffers> audio (new AudioBuffers (6, 42 * 1920));
+
+       trimmer.process_video (video, false, shared_ptr<Subtitle> ());
+       trimmer.process_audio (audio);
+
+       BOOST_CHECK_EQUAL (video.get(), trimmer_test_last_video.get());
+       BOOST_CHECK_EQUAL (audio.get(), trimmer_test_last_audio.get());
+       BOOST_CHECK_EQUAL (audio->frames(), trimmer_test_last_audio->frames());
+}
+
+
 /** Test the audio handling of the Trimmer */
-BOOST_AUTO_TEST_CASE (trimmer_test)
+BOOST_AUTO_TEST_CASE (trimmer_audio_test)
 {
        Trimmer trimmer (shared_ptr<Log> (), 25, 75, 200, 48000, 25, 25);
 
-       trimmer.Audio.connect (bind (&trimmer_test_helper, _1));
+       trimmer.Audio.connect (bind (&trimmer_test_audio_helper, _1));
 
        /* 21 video frames-worth of audio frames; should be completely stripped */
-       trimmer_test_last.reset ();
+       trimmer_test_last_audio.reset ();
        shared_ptr<AudioBuffers> audio (new AudioBuffers (6, 21 * 1920));
        trimmer.process_audio (audio);
-       BOOST_CHECK (trimmer_test_last == 0);
+       BOOST_CHECK (trimmer_test_last_audio == 0);
 
        /* 42 more video frames-worth, 4 should be stripped from the start */
        audio.reset (new AudioBuffers (6, 42 * 1920));
        trimmer.process_audio (audio);
-       BOOST_CHECK (trimmer_test_last);
-       BOOST_CHECK_EQUAL (trimmer_test_last->frames(), 38 * 1920);
+       BOOST_CHECK (trimmer_test_last_audio);
+       BOOST_CHECK_EQUAL (trimmer_test_last_audio->frames(), 38 * 1920);
 
        /* 42 more video frames-worth, should be kept as-is */
-       trimmer_test_last.reset ();
+       trimmer_test_last_audio.reset ();
        audio.reset (new AudioBuffers (6, 42 * 1920));
        trimmer.process_audio (audio);
-       BOOST_CHECK (trimmer_test_last);
-       BOOST_CHECK_EQUAL (trimmer_test_last->frames(), 42 * 1920);
+       BOOST_CHECK (trimmer_test_last_audio);
+       BOOST_CHECK_EQUAL (trimmer_test_last_audio->frames(), 42 * 1920);
 
        /* 25 more video frames-worth, 5 should be trimmed from the end */
-       trimmer_test_last.reset ();
+       trimmer_test_last_audio.reset ();
        audio.reset (new AudioBuffers (6, 25 * 1920));
        trimmer.process_audio (audio);
-       BOOST_CHECK (trimmer_test_last);
-       BOOST_CHECK_EQUAL (trimmer_test_last->frames(), 20 * 1920);
+       BOOST_CHECK (trimmer_test_last_audio);
+       BOOST_CHECK_EQUAL (trimmer_test_last_audio->frames(), 20 * 1920);
 
        /* Now some more; all should be trimmed */
-       trimmer_test_last.reset ();
+       trimmer_test_last_audio.reset ();
        audio.reset (new AudioBuffers (6, 100 * 1920));
        trimmer.process_audio (audio);
-       BOOST_CHECK (trimmer_test_last == 0);
+       BOOST_CHECK (trimmer_test_last_audio == 0);
 }