diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-01-17 00:24:13 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-01-17 00:24:13 +0000 |
| commit | 9db7ed5f6499de903313a85d59bb70302e97e7ff (patch) | |
| tree | b2eb84e0e910af55b76c9985ba2c35309a51d8d0 /src | |
| parent | f35b2a637ba82e39eb81e030c2e112185349cac5 (diff) | |
shared_ptr is a bit excessive for DecodeOptions.
Diffstat (limited to 'src')
28 files changed, 63 insertions, 69 deletions
diff --git a/src/lib/ab_transcode_job.cc b/src/lib/ab_transcode_job.cc index 2dd8f95ad..0efd277bb 100644 --- a/src/lib/ab_transcode_job.cc +++ b/src/lib/ab_transcode_job.cc @@ -30,11 +30,11 @@ using std::string; using boost::shared_ptr; /** @param f Film to compare. - * @param o Options. + * @param o Decode options. */ -ABTranscodeJob::ABTranscodeJob (shared_ptr<Film> f, shared_ptr<const DecodeOptions> od, shared_ptr<Job> req) +ABTranscodeJob::ABTranscodeJob (shared_ptr<Film> f, DecodeOptions o, shared_ptr<Job> req) : Job (f, req) - , _decode_opt (od) + , _decode_opt (o) { _film_b.reset (new Film (*_film)); _film_b->set_scaler (Config::instance()->reference_scaler ()); diff --git a/src/lib/ab_transcode_job.h b/src/lib/ab_transcode_job.h index 69c157651..983842038 100644 --- a/src/lib/ab_transcode_job.h +++ b/src/lib/ab_transcode_job.h @@ -23,9 +23,9 @@ #include <boost/shared_ptr.hpp> #include "job.h" +#include "options.h" class Film; -class DecodeOptions; /** @class ABTranscodeJob * @brief Job to run a transcoder which produces output for A/B comparison of various settings. @@ -39,7 +39,7 @@ class ABTranscodeJob : public Job public: ABTranscodeJob ( boost::shared_ptr<Film> f, - boost::shared_ptr<const DecodeOptions> od, + DecodeOptions o, boost::shared_ptr<Job> req ); @@ -47,7 +47,7 @@ public: void run (); private: - boost::shared_ptr<const DecodeOptions> _decode_opt; + DecodeOptions _decode_opt; /** Copy of our Film using the reference filters and scaler */ boost::shared_ptr<Film> _film_b; diff --git a/src/lib/ab_transcoder.cc b/src/lib/ab_transcoder.cc index 53af43b5d..fc4fb8daa 100644 --- a/src/lib/ab_transcoder.cc +++ b/src/lib/ab_transcoder.cc @@ -49,7 +49,7 @@ using boost::shared_ptr; */ ABTranscoder::ABTranscoder ( - shared_ptr<Film> a, shared_ptr<Film> b, shared_ptr<const DecodeOptions> o, Job* j, shared_ptr<Encoder> e) + shared_ptr<Film> a, shared_ptr<Film> b, DecodeOptions o, Job* j, shared_ptr<Encoder> e) : _film_a (a) , _film_b (b) , _job (j) diff --git a/src/lib/ab_transcoder.h b/src/lib/ab_transcoder.h index 7bfcb393c..58a08af04 100644 --- a/src/lib/ab_transcoder.h +++ b/src/lib/ab_transcoder.h @@ -31,7 +31,6 @@ class Job; class Encoder; class VideoDecoder; class AudioDecoder; -class DecodeOptions; class Image; class Log; class Subtitle; @@ -51,7 +50,7 @@ public: ABTranscoder ( boost::shared_ptr<Film> a, boost::shared_ptr<Film> b, - boost::shared_ptr<const DecodeOptions> o, + DecodeOptions o, Job* j, boost::shared_ptr<Encoder> e ); diff --git a/src/lib/audio_decoder.cc b/src/lib/audio_decoder.cc index 9d8de971c..a038dd2bb 100644 --- a/src/lib/audio_decoder.cc +++ b/src/lib/audio_decoder.cc @@ -23,7 +23,7 @@ using boost::optional; using boost::shared_ptr; -AudioDecoder::AudioDecoder (shared_ptr<Film> f, shared_ptr<const DecodeOptions> o, Job* j) +AudioDecoder::AudioDecoder (shared_ptr<Film> f, DecodeOptions o, Job* j) : Decoder (f, o, j) { diff --git a/src/lib/audio_decoder.h b/src/lib/audio_decoder.h index 013a6327f..3bf585f4d 100644 --- a/src/lib/audio_decoder.h +++ b/src/lib/audio_decoder.h @@ -34,7 +34,7 @@ class AudioDecoder : public AudioSource, public virtual Decoder { public: - AudioDecoder (boost::shared_ptr<Film>, boost::shared_ptr<const DecodeOptions>, Job *); + AudioDecoder (boost::shared_ptr<Film>, DecodeOptions, Job *); virtual void set_audio_stream (boost::shared_ptr<AudioStream>); diff --git a/src/lib/check_hashes_job.cc b/src/lib/check_hashes_job.cc index 099845d8c..2ad97c382 100644 --- a/src/lib/check_hashes_job.cc +++ b/src/lib/check_hashes_job.cc @@ -34,9 +34,9 @@ using std::stringstream; using std::ifstream; using boost::shared_ptr; -CheckHashesJob::CheckHashesJob (shared_ptr<Film> f, shared_ptr<const DecodeOptions> od, shared_ptr<Job> req) +CheckHashesJob::CheckHashesJob (shared_ptr<Film> f, DecodeOptions o, shared_ptr<Job> req) : Job (f, req) - , _decode_opt (od) + , _decode_opt (o) , _bad (0) { diff --git a/src/lib/check_hashes_job.h b/src/lib/check_hashes_job.h index 7e62b0e7a..5fa17382d 100644 --- a/src/lib/check_hashes_job.h +++ b/src/lib/check_hashes_job.h @@ -18,15 +18,14 @@ */ #include "job.h" - -class DecodeOptions; +#include "options.h" class CheckHashesJob : public Job { public: CheckHashesJob ( boost::shared_ptr<Film> f, - boost::shared_ptr<const DecodeOptions> od, + DecodeOptions od, boost::shared_ptr<Job> req ); @@ -35,6 +34,6 @@ public: std::string status () const; private: - boost::shared_ptr<const DecodeOptions> _decode_opt; + DecodeOptions _decode_opt; int _bad; }; diff --git a/src/lib/decoder.cc b/src/lib/decoder.cc index 7066b488e..fd0abee41 100644 --- a/src/lib/decoder.cc +++ b/src/lib/decoder.cc @@ -46,10 +46,10 @@ using boost::shared_ptr; using boost::optional; /** @param f Film. - * @param o Options. + * @param o Decode options. * @param j Job that we are running within, or 0 */ -Decoder::Decoder (boost::shared_ptr<Film> f, boost::shared_ptr<const DecodeOptions> o, Job* j) +Decoder::Decoder (boost::shared_ptr<Film> f, DecodeOptions o, Job* j) : _film (f) , _opt (o) , _job (j) diff --git a/src/lib/decoder.h b/src/lib/decoder.h index 3908afa2f..cc4c87373 100644 --- a/src/lib/decoder.h +++ b/src/lib/decoder.h @@ -34,9 +34,9 @@ #include "video_source.h" #include "audio_source.h" #include "film.h" +#include "options.h" class Job; -class DecodeOptions; class Image; class Log; class DelayLine; @@ -54,7 +54,7 @@ class FilterGraph; class Decoder { public: - Decoder (boost::shared_ptr<Film>, boost::shared_ptr<const DecodeOptions>, Job *); + Decoder (boost::shared_ptr<Film>, DecodeOptions, Job *); virtual ~Decoder () {} virtual bool pass () = 0; @@ -66,8 +66,8 @@ public: protected: /** our Film */ boost::shared_ptr<Film> _film; - /** our options */ - boost::shared_ptr<const DecodeOptions> _opt; + /** our decode options */ + DecodeOptions _opt; /** associated Job, or 0 */ Job* _job; diff --git a/src/lib/decoder_factory.cc b/src/lib/decoder_factory.cc index 2a0d828e2..c4d818f49 100644 --- a/src/lib/decoder_factory.cc +++ b/src/lib/decoder_factory.cc @@ -36,7 +36,7 @@ using boost::dynamic_pointer_cast; Decoders decoder_factory ( - shared_ptr<Film> f, shared_ptr<const DecodeOptions> o, Job* j + shared_ptr<Film> f, DecodeOptions o, Job* j ) { if (boost::filesystem::is_directory (f->content_path()) || f->content_type() == STILL) { diff --git a/src/lib/decoder_factory.h b/src/lib/decoder_factory.h index 47d977ce7..445a1c8a2 100644 --- a/src/lib/decoder_factory.h +++ b/src/lib/decoder_factory.h @@ -24,8 +24,9 @@ * @brief A method to create appropriate decoders for some content. */ +#include "options.h" + class Film; -class DecodeOptions; class Job; class VideoDecoder; class AudioDecoder; @@ -43,7 +44,7 @@ struct Decoders { }; extern Decoders decoder_factory ( - boost::shared_ptr<Film>, boost::shared_ptr<const DecodeOptions>, Job * + boost::shared_ptr<Film>, DecodeOptions, Job * ); #endif diff --git a/src/lib/examine_content_job.cc b/src/lib/examine_content_job.cc index a783cde33..69a757e2b 100644 --- a/src/lib/examine_content_job.cc +++ b/src/lib/examine_content_job.cc @@ -78,8 +78,8 @@ ExamineContentJob::run () _film->unset_length (); _film->set_crop (Crop ()); - shared_ptr<DecodeOptions> o (new DecodeOptions); - o->decode_audio = false; + DecodeOptions o; + o.decode_audio = false; Decoders decoders = decoder_factory (_film, o, this); @@ -96,8 +96,7 @@ ExamineContentJob::run () /* Get a quick decoder to get the content's length from its header */ - shared_ptr<DecodeOptions> o (new DecodeOptions); - Decoders d = decoder_factory (_film, o, 0); + Decoders d = decoder_factory (_film, DecodeOptions(), 0); _film->set_length (d.video->length()); _film->log()->log (String::compose ("Video length obtained from header as %1 frames", _film->length().get())); diff --git a/src/lib/external_audio_decoder.cc b/src/lib/external_audio_decoder.cc index 25c8068b6..366051418 100644 --- a/src/lib/external_audio_decoder.cc +++ b/src/lib/external_audio_decoder.cc @@ -31,7 +31,7 @@ using std::cout; using boost::shared_ptr; using boost::optional; -ExternalAudioDecoder::ExternalAudioDecoder (shared_ptr<Film> f, shared_ptr<const DecodeOptions> o, Job* j) +ExternalAudioDecoder::ExternalAudioDecoder (shared_ptr<Film> f, DecodeOptions o, Job* j) : Decoder (f, o, j) , AudioDecoder (f, o, j) { diff --git a/src/lib/external_audio_decoder.h b/src/lib/external_audio_decoder.h index 2558955eb..37e53bca7 100644 --- a/src/lib/external_audio_decoder.h +++ b/src/lib/external_audio_decoder.h @@ -44,7 +44,7 @@ private: class ExternalAudioDecoder : public AudioDecoder { public: - ExternalAudioDecoder (boost::shared_ptr<Film>, boost::shared_ptr<const DecodeOptions>, Job *); + ExternalAudioDecoder (boost::shared_ptr<Film>, DecodeOptions, Job *); bool pass (); diff --git a/src/lib/ffmpeg_decoder.cc b/src/lib/ffmpeg_decoder.cc index a19f26ad7..9e5cda889 100644 --- a/src/lib/ffmpeg_decoder.cc +++ b/src/lib/ffmpeg_decoder.cc @@ -59,7 +59,7 @@ using boost::shared_ptr; using boost::optional; using boost::dynamic_pointer_cast; -FFmpegDecoder::FFmpegDecoder (shared_ptr<Film> f, shared_ptr<const DecodeOptions> o, Job* j) +FFmpegDecoder::FFmpegDecoder (shared_ptr<Film> f, DecodeOptions o, Job* j) : Decoder (f, o, j) , VideoDecoder (f, o, j) , AudioDecoder (f, o, j) @@ -78,7 +78,7 @@ FFmpegDecoder::FFmpegDecoder (shared_ptr<Film> f, shared_ptr<const DecodeOptions setup_audio (); setup_subtitle (); - if (!o->video_sync) { + if (!o.video_sync) { _first_video = 0; } } @@ -239,7 +239,7 @@ FFmpegDecoder::pass () filter_and_emit_video (_frame); } - if (_audio_stream && _opt->decode_audio) { + if (_audio_stream && _opt.decode_audio) { while (avcodec_decode_audio4 (_audio_codec_context, _frame, &frame_finished, &_packet) >= 0 && frame_finished) { int const data_size = av_samples_get_buffer_size ( 0, _audio_codec_context->channels, _frame->nb_samples, audio_sample_format (), 1 @@ -267,14 +267,14 @@ FFmpegDecoder::pass () _film->log()->log (String::compose ("Used only %1 bytes of %2 in packet", r, _packet.size)); } - if (_opt->video_sync) { + if (_opt.video_sync) { out_with_sync (); } else { filter_and_emit_video (_frame); } } - } else if (ffa && _packet.stream_index == ffa->id() && _opt->decode_audio) { + } else if (ffa && _packet.stream_index == ffa->id() && _opt.decode_audio) { int frame_finished; if (avcodec_decode_audio4 (_audio_codec_context, _frame, &frame_finished, &_packet) >= 0 && frame_finished) { @@ -323,7 +323,7 @@ FFmpegDecoder::pass () } } - } else if (_subtitle_stream && _packet.stream_index == _subtitle_stream->id() && _opt->decode_subtitles && _first_video) { + } else if (_subtitle_stream && _packet.stream_index == _subtitle_stream->id() && _opt.decode_subtitles && _first_video) { int got_subtitle; AVSubtitle sub; diff --git a/src/lib/ffmpeg_decoder.h b/src/lib/ffmpeg_decoder.h index 2fb8675f9..51b88a24a 100644 --- a/src/lib/ffmpeg_decoder.h +++ b/src/lib/ffmpeg_decoder.h @@ -86,7 +86,7 @@ private: class FFmpegDecoder : public VideoDecoder, public AudioDecoder { public: - FFmpegDecoder (boost::shared_ptr<Film>, boost::shared_ptr<const DecodeOptions>, Job *); + FFmpegDecoder (boost::shared_ptr<Film>, DecodeOptions, Job *); ~FFmpegDecoder (); float frames_per_second () const; diff --git a/src/lib/film.cc b/src/lib/film.cc index 4bf6606a9..2934595ab 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -290,8 +290,8 @@ Film::make_dcp (bool transcode) throw MissingSettingError ("name"); } - shared_ptr<DecodeOptions> od (new DecodeOptions); - od->decode_subtitles = with_subtitles (); + DecodeOptions od; + od.decode_subtitles = with_subtitles (); shared_ptr<Job> r; @@ -878,8 +878,7 @@ Film::set_content (string c) */ try { - shared_ptr<DecodeOptions> o (new DecodeOptions); - Decoders d = decoder_factory (shared_from_this(), o, 0); + Decoders d = decoder_factory (shared_from_this(), DecodeOptions(), 0); set_size (d.video->native_size ()); set_frames_per_second (d.video->frames_per_second ()); @@ -1121,8 +1120,7 @@ Film::set_external_audio (vector<string> a) _external_audio = a; } - shared_ptr<DecodeOptions> o (new DecodeOptions); - shared_ptr<ExternalAudioDecoder> decoder (new ExternalAudioDecoder (shared_from_this(), o, 0)); + shared_ptr<ExternalAudioDecoder> decoder (new ExternalAudioDecoder (shared_from_this(), DecodeOptions(), 0)); if (decoder->audio_stream()) { _external_audio_stream = decoder->audio_stream (); } diff --git a/src/lib/imagemagick_decoder.cc b/src/lib/imagemagick_decoder.cc index bad1fb813..063730540 100644 --- a/src/lib/imagemagick_decoder.cc +++ b/src/lib/imagemagick_decoder.cc @@ -29,7 +29,7 @@ using std::cout; using boost::shared_ptr; ImageMagickDecoder::ImageMagickDecoder ( - boost::shared_ptr<Film> f, boost::shared_ptr<const DecodeOptions> o, Job* j) + boost::shared_ptr<Film> f, DecodeOptions o, Job* j) : Decoder (f, o, j) , VideoDecoder (f, o, j) { diff --git a/src/lib/imagemagick_decoder.h b/src/lib/imagemagick_decoder.h index 6f426f308..5dfcab6f0 100644 --- a/src/lib/imagemagick_decoder.h +++ b/src/lib/imagemagick_decoder.h @@ -26,7 +26,7 @@ namespace Magick { class ImageMagickDecoder : public VideoDecoder { public: - ImageMagickDecoder (boost::shared_ptr<Film>, boost::shared_ptr<const DecodeOptions>, Job *); + ImageMagickDecoder (boost::shared_ptr<Film>, DecodeOptions, Job *); float frames_per_second () const { /* We don't know */ diff --git a/src/lib/options.h b/src/lib/options.h index 2f8733507..2cd7dffde 100644 --- a/src/lib/options.h +++ b/src/lib/options.h @@ -17,16 +17,13 @@ */ +#ifndef DVDOMATIC_OPTIONS_H +#define DVDOMATIC_OPTIONS_H + /** @file src/options.h - * @brief Options for a transcoding operation. + * @brief Options for a decoding operation. */ -#include <string> -#include <iomanip> -#include <sstream> -#include <boost/optional.hpp> -#include "util.h" - class DecodeOptions { public: @@ -40,3 +37,5 @@ public: bool decode_subtitles; bool video_sync; }; + +#endif diff --git a/src/lib/transcode_job.cc b/src/lib/transcode_job.cc index db5c33641..23a3d9fe8 100644 --- a/src/lib/transcode_job.cc +++ b/src/lib/transcode_job.cc @@ -37,12 +37,12 @@ using std::setprecision; using boost::shared_ptr; /** @param s Film to use. - * @param o Options. + * @param o Decode options. * @param req Job that must be completed before this job is run. */ -TranscodeJob::TranscodeJob (shared_ptr<Film> f, shared_ptr<const DecodeOptions> od, shared_ptr<Job> req) +TranscodeJob::TranscodeJob (shared_ptr<Film> f, DecodeOptions o, shared_ptr<Job> req) : Job (f, req) - , _decode_opt (od) + , _decode_opt (o) { } diff --git a/src/lib/transcode_job.h b/src/lib/transcode_job.h index aef190a64..8f78e7f6a 100644 --- a/src/lib/transcode_job.h +++ b/src/lib/transcode_job.h @@ -23,9 +23,9 @@ #include <boost/shared_ptr.hpp> #include "job.h" +#include "options.h" class Encoder; -class DecodeOptions; /** @class TranscodeJob * @brief A job which transcodes from one format to another. @@ -33,7 +33,7 @@ class DecodeOptions; class TranscodeJob : public Job { public: - TranscodeJob (boost::shared_ptr<Film> f, boost::shared_ptr<const DecodeOptions> od, boost::shared_ptr<Job> req); + TranscodeJob (boost::shared_ptr<Film> f, DecodeOptions od, boost::shared_ptr<Job> req); std::string name () const; void run (); @@ -43,6 +43,6 @@ protected: int remaining_time () const; private: - boost::shared_ptr<const DecodeOptions> _decode_opt; + DecodeOptions _decode_opt; boost::shared_ptr<Encoder> _encoder; }; diff --git a/src/lib/transcoder.cc b/src/lib/transcoder.cc index 87a1fb3f2..93963761e 100644 --- a/src/lib/transcoder.cc +++ b/src/lib/transcoder.cc @@ -48,7 +48,7 @@ using boost::dynamic_pointer_cast; * @param j Job that we are running under, or 0. * @param e Encoder to use. */ -Transcoder::Transcoder (shared_ptr<Film> f, shared_ptr<const DecodeOptions> o, Job* j, shared_ptr<Encoder> e) +Transcoder::Transcoder (shared_ptr<Film> f, DecodeOptions o, Job* j, shared_ptr<Encoder> e) : _job (j) , _encoder (e) , _decoders (decoder_factory (f, o, j)) diff --git a/src/lib/transcoder.h b/src/lib/transcoder.h index ef6a438c8..786010869 100644 --- a/src/lib/transcoder.h +++ b/src/lib/transcoder.h @@ -36,7 +36,6 @@ class Gain; class VideoDecoder; class AudioDecoder; class DelayLine; -class DecodeOptions; /** @class Transcoder * @brief A class which takes a FilmState and some Options, then uses those to transcode a Film. @@ -49,7 +48,7 @@ class Transcoder public: Transcoder ( boost::shared_ptr<Film> f, - boost::shared_ptr<const DecodeOptions> o, + DecodeOptions o, Job* j, boost::shared_ptr<Encoder> e ); diff --git a/src/lib/video_decoder.cc b/src/lib/video_decoder.cc index e0a7576ee..3a803a863 100644 --- a/src/lib/video_decoder.cc +++ b/src/lib/video_decoder.cc @@ -28,7 +28,7 @@ using boost::shared_ptr; using boost::optional; -VideoDecoder::VideoDecoder (shared_ptr<Film> f, shared_ptr<const DecodeOptions> o, Job* j) +VideoDecoder::VideoDecoder (shared_ptr<Film> f, DecodeOptions o, Job* j) : Decoder (f, o, j) , _video_frame (0) , _last_source_time (0) diff --git a/src/lib/video_decoder.h b/src/lib/video_decoder.h index 7726d2057..c0eab2140 100644 --- a/src/lib/video_decoder.h +++ b/src/lib/video_decoder.h @@ -27,7 +27,7 @@ class VideoDecoder : public VideoSource, public virtual Decoder { public: - VideoDecoder (boost::shared_ptr<Film>, boost::shared_ptr<const DecodeOptions>, Job *); + VideoDecoder (boost::shared_ptr<Film>, DecodeOptions, Job *); /** @return video frames per second, or 0 if unknown */ virtual float frames_per_second () const = 0; diff --git a/src/wx/film_viewer.cc b/src/wx/film_viewer.cc index 3d8198457..347531cc2 100644 --- a/src/wx/film_viewer.cc +++ b/src/wx/film_viewer.cc @@ -98,10 +98,10 @@ FilmViewer::film_changed (Film::Property p) break; case Film::CONTENT: { - shared_ptr<DecodeOptions> o (new DecodeOptions); - o->decode_audio = false; - o->decode_subtitles = true; - o->video_sync = false; + DecodeOptions o; + o.decode_audio = false; + o.decode_subtitles = true; + o.video_sync = false; _decoders = decoder_factory (_film, o, 0); _decoders.video->Video.connect (bind (&FilmViewer::process_video, this, _1, _2, _3)); _decoders.video->OutputChanged.connect (boost::bind (&FilmViewer::decoder_changed, this)); |
