diff options
| author | Carl Hetherington <cth@carlh.net> | 2012-10-21 13:09:10 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2012-10-21 13:09:10 +0100 |
| commit | 6b368187e7bc16cbe0e83858f35990e536c5ccc8 (patch) | |
| tree | a7ee36003c7974c05a3555dc2a1cbd06dbca13ad /src/lib/examine_content_job.cc | |
| parent | 5b17eb3a0b0f95417c210ac3f7c3b66b5eac483c (diff) | |
Partial merge of examine content and thumbnail jobs.
Diffstat (limited to 'src/lib/examine_content_job.cc')
| -rw-r--r-- | src/lib/examine_content_job.cc | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/src/lib/examine_content_job.cc b/src/lib/examine_content_job.cc index fd574e2d0..5800c6f24 100644 --- a/src/lib/examine_content_job.cc +++ b/src/lib/examine_content_job.cc @@ -26,6 +26,8 @@ #include "film_state.h" #include "decoder_factory.h" #include "decoder.h" +#include "imagemagick_encoder.h" +#include "transcoder.h" using namespace std; using namespace boost; @@ -49,13 +51,49 @@ ExamineContentJob::name () const void ExamineContentJob::run () { + shared_ptr<FilmState> fs = _fs->state_copy (); + + /* Decode the content to get an accurate length */ + shared_ptr<Options> o (new Options ("", "", "")); o->out_size = Size (512, 512); o->apply_crop = false; - _decoder = decoder_factory (_fs, o, this, _log, true, true); + descend (0.5); + + _decoder = decoder_factory (fs, o, this, _log, true, true); _decoder->go (); - + fs->set_length (last_video_frame ()); + + ascend (); + + /* Now make thumbnails for it */ + + descend (0.5); + + try { + o.reset (new Options (fs->dir ("thumbs"), ".png", "")); + o->out_size = fs->size (); + o->apply_crop = false; + o->decode_audio = false; + o->decode_video_frequency = 128; + o->decode_subtitles = true; + shared_ptr<ImageMagickEncoder> e (new ImageMagickEncoder (fs, o, _log)); + Transcoder w (fs, o, this, _log, e); + w.go (); + set_progress (1); + set_state (FINISHED_OK); + + } catch (std::exception& e) { + + ascend (); + set_progress (1); + set_error (e.what ()); + set_state (FINISHED_ERROR); + + } + + ascend (); set_progress (1); set_state (FINISHED_OK); } |
