summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2012-07-24 23:37:23 +0100
committerCarl Hetherington <cth@carlh.net>2012-07-24 23:37:23 +0100
commitccd81cefeebba6a05b0a848d378dccb5a3ced086 (patch)
tree9c65cd83405544671e62da7c0737a15db4e27db4
parent240bed409d133f80f5830898033ff9377b5c408f (diff)
Fix length of still-image DCPs.
-rw-r--r--src/lib/film_state.h2
-rw-r--r--src/lib/make_dcp_job.cc12
2 files changed, 12 insertions, 2 deletions
diff --git a/src/lib/film_state.h b/src/lib/film_state.h
index beac5fc2c..3a547ed1d 100644
--- a/src/lib/film_state.h
+++ b/src/lib/film_state.h
@@ -139,7 +139,7 @@ public:
std::vector<int> thumbs;
/** Size, in pixels, of the source (ignoring cropping) */
Size size;
- /** Length in frames */
+ /** Length of the source in frames */
int length;
/** Number of audio channels */
int audio_channels;
diff --git a/src/lib/make_dcp_job.cc b/src/lib/make_dcp_job.cc
index 3de5e8d5d..a6d0c2d10 100644
--- a/src/lib/make_dcp_job.cc
+++ b/src/lib/make_dcp_job.cc
@@ -31,6 +31,7 @@ extern "C" {
#include "dcp_content_type.h"
#include "exceptions.h"
#include "options.h"
+#include "imagemagick_decoder.h"
using namespace std;
using namespace boost;
@@ -73,7 +74,16 @@ MakeDCPJob::run ()
/* Remove any old DCP */
filesystem::remove_all (dcp_path);
- int const frames = _fs->dcp_frames ? _fs->dcp_frames : _fs->length;
+ int frames = 0;
+ switch (_fs->content_type ()) {
+ case VIDEO:
+ frames = _fs->dcp_frames ? _fs->dcp_frames : _fs->length;
+ break;
+ case STILL:
+ frames = _fs->still_duration * ImageMagickDecoder::static_frames_per_second ();
+ break;
+ }
+
libdcp::DCP dcp (_fs->dir (_fs->name), _fs->name, _fs->dcp_content_type->libdcp_type (), rint (_fs->frames_per_second), frames);
dcp.Progress.connect (sigc::mem_fun (*this, &MakeDCPJob::dcp_progress));