using std::pair;
using boost::shared_ptr;
-J2KStillEncoder::J2KStillEncoder (shared_ptr<const Film> f, shared_ptr<const Options> o)
+J2KStillEncoder::J2KStillEncoder (shared_ptr<const Film> f, shared_ptr<const EncodeOptions> o)
: Encoder (f, o)
{
}
void
-J2KStillEncoder::do_process_video (shared_ptr<const Image> yuv, SourceFrame frame, shared_ptr<Subtitle> sub)
+J2KStillEncoder::do_process_video (shared_ptr<Image> yuv, shared_ptr<Subtitle> sub)
{
pair<string, string> const s = Filter::ffmpeg_strings (_film->filters());
DCPVideoFrame* f = new DCPVideoFrame (
}
string const real = _opt->frame_out_path (0, false);
- for (int i = 1; i < (_film->still_duration() * ImageMagickDecoder::static_frames_per_second()); ++i) {
+ string const real_hash = _opt->hash_out_path (0, false);
+ for (int i = 1; i < (_film->still_duration() * _film->frames_per_second()); ++i) {
+
if (!boost::filesystem::exists (_opt->frame_out_path (i, false))) {
- string const link = _opt->frame_out_path (i, false);
+ link (real, _opt->frame_out_path (i, false));
+ }
+
+ if (!boost::filesystem::exists (_opt->hash_out_path (i, false))) {
+ link (real_hash, _opt->hash_out_path (i, false));
+ }
+
+ frame_done ();
+ }
+}
+
+void
+J2KStillEncoder::link (string a, string b) const
+{
#ifdef DVDOMATIC_POSIX
- int const r = symlink (real.c_str(), link.c_str());
- if (r) {
- throw EncodeError ("could not create symlink");
- }
+ int const r = symlink (a.c_str(), b.c_str());
+ if (r) {
+ throw EncodeError ("could not create symlink");
+ }
#endif
+
#ifdef DVDOMATIC_WINDOWS
- boost::filesystem::copy_file (real, link);
+ boost::filesystem::copy_file (a, b);
#endif
- }
- frame_done (0);
- }
}