diff options
| author | Carl Hetherington <cth@carlh.net> | 2012-11-04 17:09:43 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2012-11-04 17:09:43 +0000 |
| commit | 752bba7eb39d6f775a3ecb3ca3e19d7884626a4e (patch) | |
| tree | 235b558aec10da89dca7484686ff035cbef4811c /src | |
| parent | ac712b45bad948fc8f38cf4fa48a529f2024c7f5 (diff) | |
Revert "Remove minimal flag."
This reverts commit ac712b45bad948fc8f38cf4fa48a529f2024c7f5.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/decoder.cc | 10 | ||||
| -rw-r--r-- | src/lib/decoder.h | 7 | ||||
| -rw-r--r-- | src/lib/decoder_factory.cc | 10 | ||||
| -rw-r--r-- | src/lib/decoder_factory.h | 5 | ||||
| -rw-r--r-- | src/lib/examine_content_job.cc | 2 | ||||
| -rw-r--r-- | src/lib/ffmpeg_decoder.cc | 4 | ||||
| -rw-r--r-- | src/lib/ffmpeg_decoder.h | 2 | ||||
| -rw-r--r-- | src/lib/film.cc | 2 | ||||
| -rw-r--r-- | src/lib/imagemagick_decoder.cc | 4 | ||||
| -rw-r--r-- | src/lib/imagemagick_decoder.h | 2 | ||||
| -rw-r--r-- | src/lib/tiff_decoder.cc | 6 | ||||
| -rw-r--r-- | src/lib/tiff_decoder.h | 2 |
12 files changed, 38 insertions, 18 deletions
diff --git a/src/lib/decoder.cc b/src/lib/decoder.cc index 34c04b260..ee2beb3f3 100644 --- a/src/lib/decoder.cc +++ b/src/lib/decoder.cc @@ -46,11 +46,14 @@ using boost::shared_ptr; /** @param f Film. * @param o Options. * @param j Job that we are running within, or 0 + * @param minimal true to do the bare minimum of work; just run through the content. Useful for acquiring + * accurate frame counts as quickly as possible. This generates no video or audio output. */ -Decoder::Decoder (boost::shared_ptr<Film> f, boost::shared_ptr<const Options> o, Job* j) +Decoder::Decoder (boost::shared_ptr<Film> f, boost::shared_ptr<const Options> o, Job* j, bool minimal) : _film (f) , _opt (o) , _job (j) + , _minimal (minimal) , _video_frame_index (0) , _delay_line (0) , _delay_in_bytes (0) @@ -247,6 +250,11 @@ Decoder::process_video (AVFrame* frame) { assert (_film->length()); + if (_minimal) { + ++_video_frame_index; + return; + } + /* Use Film::length here as our one may be wrong */ if (_opt->decode_video_skip != 0 && (_video_frame_index % _opt->decode_video_skip) != 0) { diff --git a/src/lib/decoder.h b/src/lib/decoder.h index fe8149af9..5750858df 100644 --- a/src/lib/decoder.h +++ b/src/lib/decoder.h @@ -52,7 +52,7 @@ class FilterGraph; class Decoder { public: - Decoder (boost::shared_ptr<Film>, boost::shared_ptr<const Options>, Job *); + Decoder (boost::shared_ptr<Film>, boost::shared_ptr<const Options>, Job *, bool); virtual ~Decoder (); /* Methods to query our input video */ @@ -121,6 +121,11 @@ protected: /** associated Job, or 0 */ Job* _job; + /** true to do the bare minimum of work; just run through the content. Useful for acquiring + * accurate frame counts as quickly as possible. This generates no video or audio output. + */ + bool _minimal; + private: void emit_audio (uint8_t* data, int size); diff --git a/src/lib/decoder_factory.cc b/src/lib/decoder_factory.cc index c3a6965e6..287bba0da 100644 --- a/src/lib/decoder_factory.cc +++ b/src/lib/decoder_factory.cc @@ -31,16 +31,18 @@ using std::string; using boost::shared_ptr; shared_ptr<Decoder> -decoder_factory (shared_ptr<Film> f, shared_ptr<const Options> o, Job* j) +decoder_factory ( + shared_ptr<Film> f, shared_ptr<const Options> o, Job* j, bool minimal = false + ) { if (boost::filesystem::is_directory (f->content_path ())) { /* Assume a directory contains TIFFs */ - return shared_ptr<Decoder> (new TIFFDecoder (f, o, j)); + return shared_ptr<Decoder> (new TIFFDecoder (f, o, j, minimal)); } if (f->content_type() == STILL) { - return shared_ptr<Decoder> (new ImageMagickDecoder (f, o, j)); + return shared_ptr<Decoder> (new ImageMagickDecoder (f, o, j, minimal)); } - return shared_ptr<Decoder> (new FFmpegDecoder (f, o, j)); + return shared_ptr<Decoder> (new FFmpegDecoder (f, o, j, minimal)); } diff --git a/src/lib/decoder_factory.h b/src/lib/decoder_factory.h index 3c16d0ec0..b86c60c70 100644 --- a/src/lib/decoder_factory.h +++ b/src/lib/decoder_factory.h @@ -25,5 +25,8 @@ class Decoder; class Film; class Options; class Job; +class Log; -extern boost::shared_ptr<Decoder> decoder_factory (boost::shared_ptr<Film>, boost::shared_ptr<const Options>, Job *); +extern boost::shared_ptr<Decoder> decoder_factory ( + boost::shared_ptr<Film>, boost::shared_ptr<const Options>, Job *, bool minimal = false + ); diff --git a/src/lib/examine_content_job.cc b/src/lib/examine_content_job.cc index e71ab361a..ec0d2409b 100644 --- a/src/lib/examine_content_job.cc +++ b/src/lib/examine_content_job.cc @@ -66,7 +66,7 @@ ExamineContentJob::run () descend (0.5); - _decoder = decoder_factory (_film, o, this); + _decoder = decoder_factory (_film, o, this, true); _decoder->go (); _film->set_length (_decoder->video_frame_index()); diff --git a/src/lib/ffmpeg_decoder.cc b/src/lib/ffmpeg_decoder.cc index 77e8f365f..f0e652cbe 100644 --- a/src/lib/ffmpeg_decoder.cc +++ b/src/lib/ffmpeg_decoder.cc @@ -55,8 +55,8 @@ using std::vector; using std::stringstream; using boost::shared_ptr; -FFmpegDecoder::FFmpegDecoder (shared_ptr<Film> f, shared_ptr<const Options> o, Job* j) - : Decoder (f, o, j) +FFmpegDecoder::FFmpegDecoder (shared_ptr<Film> f, shared_ptr<const Options> o, Job* j, bool minimal) + : Decoder (f, o, j, minimal) , _format_context (0) , _video_stream (-1) , _audio_stream (-1) diff --git a/src/lib/ffmpeg_decoder.h b/src/lib/ffmpeg_decoder.h index 0265f7478..fbd9e5255 100644 --- a/src/lib/ffmpeg_decoder.h +++ b/src/lib/ffmpeg_decoder.h @@ -52,7 +52,7 @@ class Log; class FFmpegDecoder : public Decoder { public: - FFmpegDecoder (boost::shared_ptr<Film>, boost::shared_ptr<const Options>, Job *); + FFmpegDecoder (boost::shared_ptr<Film>, boost::shared_ptr<const Options>, Job *, bool); ~FFmpegDecoder (); /* Methods to query our input video */ diff --git a/src/lib/film.cc b/src/lib/film.cc index cd5fc6535..cacd30764 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -877,7 +877,7 @@ Film::set_content (string c) shared_ptr<Options> o (new Options ("", "", "")); o->out_size = Size (1024, 1024); - shared_ptr<Decoder> d = decoder_factory (shared_from_this(), o, 0); + shared_ptr<Decoder> d = decoder_factory (shared_from_this(), o, 0, 0); set_size (d->native_size ()); set_frames_per_second (d->frames_per_second ()); diff --git a/src/lib/imagemagick_decoder.cc b/src/lib/imagemagick_decoder.cc index cc2fd9d23..81349beca 100644 --- a/src/lib/imagemagick_decoder.cc +++ b/src/lib/imagemagick_decoder.cc @@ -27,8 +27,8 @@ using namespace std; using namespace boost; ImageMagickDecoder::ImageMagickDecoder ( - boost::shared_ptr<Film> f, boost::shared_ptr<const Options> o, Job* j) - : Decoder (f, o, j) + boost::shared_ptr<Film> f, boost::shared_ptr<const Options> o, Job* j, bool minimal) + : Decoder (f, o, j, minimal) , _done (false) { _magick_image = new Magick::Image (_film->content_path ()); diff --git a/src/lib/imagemagick_decoder.h b/src/lib/imagemagick_decoder.h index b7ab9af18..85bcf4c5b 100644 --- a/src/lib/imagemagick_decoder.h +++ b/src/lib/imagemagick_decoder.h @@ -26,7 +26,7 @@ namespace Magick { class ImageMagickDecoder : public Decoder { public: - ImageMagickDecoder (boost::shared_ptr<Film>, boost::shared_ptr<const Options>, Job *); + ImageMagickDecoder (boost::shared_ptr<Film>, boost::shared_ptr<const Options>, Job *, bool); float frames_per_second () const { return static_frames_per_second (); diff --git a/src/lib/tiff_decoder.cc b/src/lib/tiff_decoder.cc index 7cca511dd..2c050def6 100644 --- a/src/lib/tiff_decoder.cc +++ b/src/lib/tiff_decoder.cc @@ -44,9 +44,11 @@ using namespace boost; /** @param f Our Film. * @param o Options. * @param j Job that we are associated with, or 0. + * @param minimal true to do the bare minimum of work; just run through the content. Useful for acquiring + * accurate frame counts as quickly as possible. This generates no video or audio output. */ -TIFFDecoder::TIFFDecoder (boost::shared_ptr<Film> f, boost::shared_ptr<const Options> o, Job* j) - : Decoder (f, o, j) +TIFFDecoder::TIFFDecoder (boost::shared_ptr<Film> f, boost::shared_ptr<const Options> o, Job* j, bool minimal) + : Decoder (f, o, j, minimal) { string const dir = _film->content_path (); diff --git a/src/lib/tiff_decoder.h b/src/lib/tiff_decoder.h index 1c33443cf..c02a1d03d 100644 --- a/src/lib/tiff_decoder.h +++ b/src/lib/tiff_decoder.h @@ -42,7 +42,7 @@ class Image; class TIFFDecoder : public Decoder { public: - TIFFDecoder (boost::shared_ptr<Film>, boost::shared_ptr<const Options>, Job *); + TIFFDecoder (boost::shared_ptr<Film>, boost::shared_ptr<const Options>, Job *, bool); /* Methods to query our input video */ float frames_per_second () const; |
