summaryrefslogtreecommitdiff
path: root/src/lib/examine_content_job.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-03-31 15:09:49 +0100
committerCarl Hetherington <cth@carlh.net>2013-03-31 15:09:49 +0100
commit127672223cca569986e35c91265e269ed5a6561c (patch)
tree853793c1b929d4c38ebdf5456808e466083989b7 /src/lib/examine_content_job.cc
parented78fd3d138114185e43edf81ffe91db17377da0 (diff)
Runs.
Diffstat (limited to 'src/lib/examine_content_job.cc')
-rw-r--r--src/lib/examine_content_job.cc67
1 files changed, 6 insertions, 61 deletions
diff --git a/src/lib/examine_content_job.cc b/src/lib/examine_content_job.cc
index 4b30c9431..c600132c3 100644
--- a/src/lib/examine_content_job.cc
+++ b/src/lib/examine_content_job.cc
@@ -17,29 +17,21 @@
*/
-/** @file src/examine_content_job.cc
- * @brief A class to run through content at high speed to find its length.
- */
-
#include <boost/filesystem.hpp>
#include "examine_content_job.h"
#include "options.h"
-#include "decoder_factory.h"
-#include "decoder.h"
-#include "transcoder.h"
#include "log.h"
-#include "film.h"
-#include "video_decoder.h"
+#include "content.h"
#include "i18n.h"
using std::string;
-using std::vector;
-using std::pair;
using boost::shared_ptr;
-ExamineContentJob::ExamineContentJob (shared_ptr<Film> f)
+ExamineContentJob::ExamineContentJob (shared_ptr<Film> f, shared_ptr<Content> c, bool q)
: Job (f)
+ , _content (c)
+ , _quick (q)
{
}
@@ -51,60 +43,13 @@ ExamineContentJob::~ExamineContentJob ()
string
ExamineContentJob::name () const
{
- if (_film->name().empty ()) {
- return _("Examine content");
- }
-
- return String::compose (_("Examine content of %1"), _film->name());
+ return _("Examine content");
}
void
ExamineContentJob::run ()
{
- descend (0.5);
- _film->set_content_digest (md5_digest (_film->content_path ()));
- ascend ();
-
- descend (0.5);
-
- /* Set the film's length to either
- a) a length judged by running through the content or
- b) the length from a decoder's header.
- */
- if (!_film->trust_content_header()) {
- /* Decode the content to get an accurate length */
-
- /* We don't want to use any existing length here, as progress
- will be messed up.
- */
- _film->unset_length ();
- _film->set_crop (Crop ());
-
- DecodeOptions o;
- o.decode_audio = false;
-
- Decoders decoders = decoder_factory (_film, o);
-
- set_progress_unknown ();
- while (!decoders.video->pass()) {
- /* keep going */
- }
-
- _film->set_length (decoders.video->video_frame());
-
- _film->log()->log (String::compose (N_("Video length examined as %1 frames"), _film->length().get()));
-
- } else {
-
- /* Get a quick decoder to get the content's length from its header */
-
- Decoders d = decoder_factory (_film, DecodeOptions());
- _film->set_length (d.video->length());
-
- _film->log()->log (String::compose (N_("Video length obtained from header as %1 frames"), _film->length().get()));
- }
-
- ascend ();
+ _content->examine (_film, shared_from_this (), _quick);
set_progress (1);
set_state (FINISHED_OK);
}