Shuffle Job pointers around slightly.
authorCarl Hetherington <cth@carlh.net>
Fri, 8 Feb 2013 13:07:16 +0000 (13:07 +0000)
committerCarl Hetherington <cth@carlh.net>
Fri, 8 Feb 2013 13:07:16 +0000 (13:07 +0000)
19 files changed:
src/lib/ab_transcoder.cc
src/lib/audio_decoder.cc
src/lib/audio_decoder.h
src/lib/decoder.cc
src/lib/decoder.h
src/lib/decoder_factory.cc
src/lib/decoder_factory.h
src/lib/examine_content_job.cc
src/lib/external_audio_decoder.cc
src/lib/external_audio_decoder.h
src/lib/ffmpeg_decoder.cc
src/lib/ffmpeg_decoder.h
src/lib/film.cc
src/lib/imagemagick_decoder.cc
src/lib/imagemagick_decoder.h
src/lib/transcoder.cc
src/lib/video_decoder.cc
src/lib/video_decoder.h
src/wx/film_viewer.cc

index fc4fb8daa44c96105f11ea14a5562bc847344ca9..f47a99fda8732f504d32f6ee56ffe9a7e08be950 100644 (file)
@@ -55,8 +55,8 @@ ABTranscoder::ABTranscoder (
        , _job (j)
        , _encoder (e)
 {
-       _da = decoder_factory (_film_a, o, j);
-       _db = decoder_factory (_film_b, o, j);
+       _da = decoder_factory (_film_a, o);
+       _db = decoder_factory (_film_b, o);
 
        if (_film_a->audio_stream()) {
                shared_ptr<AudioStream> st = _film_a->audio_stream();
@@ -98,7 +98,9 @@ ABTranscoder::go ()
                bool const vb = _db.video->pass ();
                bool const a = _da.audio->pass ();
 
-               _da.video->set_progress ();
+               if (_job) {
+                       _da.video->set_progress (_job);
+               }
 
                if (va && vb && a) {
                        break;
index a038dd2bb22131b8ea4d2888216acd224a0fddc1..a54c14843927449b4a62f00665ea83020a53bf70 100644 (file)
@@ -23,8 +23,8 @@
 using boost::optional;
 using boost::shared_ptr;
 
-AudioDecoder::AudioDecoder (shared_ptr<Film> f, DecodeOptions o, Job* j)
-       : Decoder (f, o, j)
+AudioDecoder::AudioDecoder (shared_ptr<Film> f, DecodeOptions o)
+       : Decoder (f, o)
 {
 
 }
index 3bf585f4de1f77259de867f218d66fa6fe4fe141..9bef8e0e7cf579f9903a3abed1dd7b684d739860 100644 (file)
@@ -34,7 +34,7 @@
 class AudioDecoder : public AudioSource, public virtual Decoder
 {
 public:
-       AudioDecoder (boost::shared_ptr<Film>, DecodeOptions, Job *);
+       AudioDecoder (boost::shared_ptr<Film>, DecodeOptions);
 
        virtual void set_audio_stream (boost::shared_ptr<AudioStream>);
 
index fd0abee4183e540b4a4db5c5a9cb3588e5d8a34c..30009460fc7b67543d6eedc4f3fe50d9b8c7d192 100644 (file)
@@ -26,7 +26,6 @@
 #include <boost/lexical_cast.hpp>
 #include "film.h"
 #include "format.h"
-#include "job.h"
 #include "options.h"
 #include "exceptions.h"
 #include "image.h"
@@ -47,12 +46,10 @@ using boost::optional;
 
 /** @param f Film.
  *  @param o Decode options.
- *  @param j Job that we are running within, or 0
  */
-Decoder::Decoder (boost::shared_ptr<Film> f, DecodeOptions o, Job* j)
+Decoder::Decoder (boost::shared_ptr<Film> f, DecodeOptions o)
        : _film (f)
        , _opt (o)
-       , _job (j)
 {
        _film_connection = f->Changed.connect (bind (&Decoder::film_changed, this, _1));
 }
index cc4c87373616e6f4f469e4f3ce9018b4ee5aa929..f2f5235168402c136e9c133ac8865c11396a99c7 100644 (file)
@@ -36,7 +36,6 @@
 #include "film.h"
 #include "options.h"
 
-class Job;
 class Image;
 class Log;
 class DelayLine;
@@ -54,7 +53,7 @@ class FilterGraph;
 class Decoder
 {
 public:
-       Decoder (boost::shared_ptr<Film>, DecodeOptions, Job *);
+       Decoder (boost::shared_ptr<Film>, DecodeOptions);
        virtual ~Decoder () {}
 
        virtual bool pass () = 0;
@@ -68,8 +67,6 @@ protected:
        boost::shared_ptr<Film> _film;
        /** our decode options */
        DecodeOptions _opt;
-       /** associated Job, or 0 */
-       Job* _job;
 
 private:
        virtual void film_changed (Film::Property) {}
index c4d818f497f6d7eec7f173eea9fa445d9a666f21..59e15722d6dd0f7b652c847b325af2108249bbb6 100644 (file)
@@ -36,21 +36,21 @@ using boost::dynamic_pointer_cast;
 
 Decoders
 decoder_factory (
-       shared_ptr<Film> f, DecodeOptions o, Job* j
+       shared_ptr<Film> f, DecodeOptions o
        )
 {
        if (boost::filesystem::is_directory (f->content_path()) || f->content_type() == STILL) {
                /* A single image file, or a directory of them */
                return Decoders (
-                       shared_ptr<VideoDecoder> (new ImageMagickDecoder (f, o, j)),
-                       shared_ptr<AudioDecoder> (new ExternalAudioDecoder (f, o, j))
+                       shared_ptr<VideoDecoder> (new ImageMagickDecoder (f, o)),
+                       shared_ptr<AudioDecoder> (new ExternalAudioDecoder (f, o))
                        );
        }
 
-       shared_ptr<FFmpegDecoder> fd (new FFmpegDecoder (f, o, j));
+       shared_ptr<FFmpegDecoder> fd (new FFmpegDecoder (f, o));
        if (f->use_content_audio()) {
                return Decoders (fd, fd);
        }
 
-       return Decoders (fd, shared_ptr<AudioDecoder> (new ExternalAudioDecoder (f, o, j)));
+       return Decoders (fd, shared_ptr<AudioDecoder> (new ExternalAudioDecoder (f, o)));
 }
index 445a1c8a2f7a27462f6532801f51ae4810a7a8a9..8076b01c7e68875434ad971d4da2b199458713a7 100644 (file)
@@ -27,7 +27,6 @@
 #include "options.h"
 
 class Film;
-class Job;
 class VideoDecoder;
 class AudioDecoder;
 
@@ -44,7 +43,7 @@ struct Decoders {
 };
 
 extern Decoders decoder_factory (
-       boost::shared_ptr<Film>, DecodeOptions, Job *
+       boost::shared_ptr<Film>, DecodeOptions
        );
 
 #endif
index 69a757e2b94bb65ad5f37128fb2c896386011f51..94e5320fe3a2f8aa39116e533426aa56851f5b9c 100644 (file)
@@ -81,7 +81,7 @@ ExamineContentJob::run ()
                DecodeOptions o;
                o.decode_audio = false;
                
-               Decoders decoders = decoder_factory (_film, o, this);
+               Decoders decoders = decoder_factory (_film, o);
                
                set_progress_unknown ();
                while (!decoders.video->pass()) {
@@ -96,7 +96,7 @@ ExamineContentJob::run ()
 
                /* Get a quick decoder to get the content's length from its header */
                
-               Decoders d = decoder_factory (_film, DecodeOptions(), 0);
+               Decoders d = decoder_factory (_film, DecodeOptions());
                _film->set_length (d.video->length());
        
                _film->log()->log (String::compose ("Video length obtained from header as %1 frames", _film->length().get()));
index 36605141886aed7ec596bb024b0425bfedc23f94..9c01bfb3485307bf9ee06b99af9f03dc54bb2ecb 100644 (file)
@@ -31,9 +31,9 @@ using std::cout;
 using boost::shared_ptr;
 using boost::optional;
 
-ExternalAudioDecoder::ExternalAudioDecoder (shared_ptr<Film> f, DecodeOptions o, Job* j)
-       : Decoder (f, o, j)
-       , AudioDecoder (f, o, j)
+ExternalAudioDecoder::ExternalAudioDecoder (shared_ptr<Film> f, DecodeOptions o)
+       : Decoder (f, o)
+       , AudioDecoder (f, o)
 {
        sf_count_t frames;
        vector<SNDFILE*> sf = open_files (frames);
index 37e53bca7f5ac1453adb54d635849a266bb384af..6f010abb1c329a1fe01430c1302532c360f14995 100644 (file)
@@ -44,7 +44,7 @@ private:
 class ExternalAudioDecoder : public AudioDecoder
 {
 public:
-       ExternalAudioDecoder (boost::shared_ptr<Film>, DecodeOptions, Job *);
+       ExternalAudioDecoder (boost::shared_ptr<Film>, DecodeOptions);
 
        bool pass ();
 
index 81f40564460a035856332ae46f25cacf14d1a9dd..1f11f70a0a462d9d5ac265c8b6e3961879bd46c7 100644 (file)
@@ -60,10 +60,10 @@ using boost::optional;
 using boost::dynamic_pointer_cast;
 using libdcp::Size;
 
-FFmpegDecoder::FFmpegDecoder (shared_ptr<Film> f, DecodeOptions o, Job* j)
-       : Decoder (f, o, j)
-       , VideoDecoder (f, o, j)
-       , AudioDecoder (f, o, j)
+FFmpegDecoder::FFmpegDecoder (shared_ptr<Film> f, DecodeOptions o)
+       : Decoder (f, o)
+       , VideoDecoder (f, o)
+       , AudioDecoder (f, o)
        , _format_context (0)
        , _video_stream (-1)
        , _frame (0)
index 9a4e65ebc2ccd7a4db041df1dae59f6f03ec03e9..17308eb56188e3b0e193d1028dedf1f61ee0a4de 100644 (file)
@@ -86,7 +86,7 @@ private:
 class FFmpegDecoder : public VideoDecoder, public AudioDecoder
 {
 public:
-       FFmpegDecoder (boost::shared_ptr<Film>, DecodeOptions, Job *);
+       FFmpegDecoder (boost::shared_ptr<Film>, DecodeOptions);
        ~FFmpegDecoder ();
 
        float frames_per_second () const;
index 59f79e6667ec91c2e8fd3fccbf2304d61eba4938..ff4d3b8f5a7fac14c8b24de5917dd5de78f62928 100644 (file)
@@ -857,7 +857,7 @@ Film::set_content (string c)
        */
 
        try {
-               Decoders d = decoder_factory (shared_from_this(), DecodeOptions(), 0);
+               Decoders d = decoder_factory (shared_from_this(), DecodeOptions());
                
                set_size (d.video->native_size ());
                set_frames_per_second (d.video->frames_per_second ());
@@ -1079,7 +1079,7 @@ Film::set_external_audio (vector<string> a)
                _external_audio = a;
        }
 
-       shared_ptr<ExternalAudioDecoder> decoder (new ExternalAudioDecoder (shared_from_this(), DecodeOptions(), 0));
+       shared_ptr<ExternalAudioDecoder> decoder (new ExternalAudioDecoder (shared_from_this(), DecodeOptions()));
        if (decoder->audio_stream()) {
                _external_audio_stream = decoder->audio_stream ();
        }
index 99b9e1d340c47e5bfe8784b568ec486da754bb87..42fe699d715e3f7c8bfce0611d983c9e48ac499d 100644 (file)
@@ -30,9 +30,9 @@ using boost::shared_ptr;
 using libdcp::Size;
 
 ImageMagickDecoder::ImageMagickDecoder (
-       boost::shared_ptr<Film> f, DecodeOptions o, Job* j)
-       : Decoder (f, o, j)
-       , VideoDecoder (f, o, j)
+       boost::shared_ptr<Film> f, DecodeOptions o)
+       : Decoder (f, o)
+       , VideoDecoder (f, o)
 {
        if (boost::filesystem::is_directory (_film->content_path())) {
                for (
index 84a6f15f9aa8b63d762ada2deb5ac94ccd756646..0e375f6e9e3127a040f862d014189e1d689527ca 100644 (file)
@@ -26,7 +26,7 @@ namespace Magick {
 class ImageMagickDecoder : public VideoDecoder
 {
 public:
-       ImageMagickDecoder (boost::shared_ptr<Film>, DecodeOptions, Job *);
+       ImageMagickDecoder (boost::shared_ptr<Film>, DecodeOptions);
 
        float frames_per_second () const {
                /* We don't know */
index 93963761e2c3d8a7fdd74bfa4c83119b50102367..959fac8572f55d5593fdd04b0f878bb99200c54f 100644 (file)
@@ -51,7 +51,7 @@ using boost::dynamic_pointer_cast;
 Transcoder::Transcoder (shared_ptr<Film> f, DecodeOptions o, Job* j, shared_ptr<Encoder> e)
        : _job (j)
        , _encoder (e)
-       , _decoders (decoder_factory (f, o, j))
+       , _decoders (decoder_factory (f, o))
 {
        assert (_encoder);
 
@@ -96,7 +96,9 @@ Transcoder::go ()
                while (1) {
                        if (!done[0]) {
                                done[0] = _decoders.video->pass ();
-                               _decoders.video->set_progress ();
+                               if (_job) {
+                                       _decoders.video->set_progress (_job);
+                               }
                        }
 
                        if (!done[1] && _decoders.audio && dynamic_pointer_cast<Decoder> (_decoders.audio) != dynamic_pointer_cast<Decoder> (_decoders.video)) {
index c11b752ae21e201038e562ceeac62dacdc215f30..c1f48cb5e9161945cb32edff5122091da7e4705d 100644 (file)
@@ -28,8 +28,8 @@
 using boost::shared_ptr;
 using boost::optional;
 
-VideoDecoder::VideoDecoder (shared_ptr<Film> f, DecodeOptions o, Job* j)
-       : Decoder (f, o, j)
+VideoDecoder::VideoDecoder (shared_ptr<Film> f, DecodeOptions o)
+       : Decoder (f, o)
        , _video_frame (0)
        , _last_source_time (0)
 {
@@ -110,9 +110,11 @@ VideoDecoder::set_subtitle_stream (shared_ptr<SubtitleStream> s)
 }
 
 void
-VideoDecoder::set_progress () const
+VideoDecoder::set_progress (Job* j) const
 {
-       if (_job && _film->length()) {
-               _job->set_progress (float (_video_frame) / _film->length().get());
+       assert (j);
+       
+       if (_film->length()) {
+               j->set_progress (float (_video_frame) / _film->length().get());
        }
 }
index ef1ab041a052589f003816e26b239dd4e2ef2a9b..283ab5d884c0f3d4d379e15033dd549032ec29b2 100644 (file)
@@ -27,7 +27,7 @@
 class VideoDecoder : public VideoSource, public virtual Decoder
 {
 public:
-       VideoDecoder (boost::shared_ptr<Film>, DecodeOptions, Job *);
+       VideoDecoder (boost::shared_ptr<Film>, DecodeOptions);
 
        /** @return video frames per second, or 0 if unknown */
        virtual float frames_per_second () const = 0;
@@ -43,7 +43,7 @@ public:
 
        virtual void set_subtitle_stream (boost::shared_ptr<SubtitleStream>);
 
-       void set_progress () const;
+       void set_progress (Job *) const;
        
        int video_frame () const {
                return _video_frame;
index 4e5f3830060d6bd9d23067d5294ff352ba62cf59..4e779a693d781b3a08c564d46698ea8b87ca2a5b 100644 (file)
@@ -101,7 +101,7 @@ FilmViewer::film_changed (Film::Property p)
                o.decode_audio = false;
                o.decode_subtitles = true;
                o.video_sync = false;
-               _decoders = decoder_factory (_film, o, 0);
+               _decoders = decoder_factory (_film, o);
                _decoders.video->Video.connect (bind (&FilmViewer::process_video, this, _1, _2, _3));
                _decoders.video->OutputChanged.connect (boost::bind (&FilmViewer::decoder_changed, this));
                _decoders.video->set_subtitle_stream (_film->subtitle_stream());