diff options
| author | Carl Hetherington <cth@carlh.net> | 2012-12-19 23:50:17 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2012-12-19 23:50:17 +0000 |
| commit | 2f56f38ce56b36f20d59593f56981e7ed330c484 (patch) | |
| tree | 1889f6eff9545010815775671df54064bc796201 /src/lib/j2k_still_encoder.cc | |
| parent | 13337c62d8c0d052ba0377af9c00fe1d940be3cc (diff) | |
Re-work again so that there's just one encoder; various tweaks to still-image-with-audio.
Diffstat (limited to 'src/lib/j2k_still_encoder.cc')
| -rw-r--r-- | src/lib/j2k_still_encoder.cc | 95 |
1 files changed, 0 insertions, 95 deletions
diff --git a/src/lib/j2k_still_encoder.cc b/src/lib/j2k_still_encoder.cc deleted file mode 100644 index 968257691..000000000 --- a/src/lib/j2k_still_encoder.cc +++ /dev/null @@ -1,95 +0,0 @@ -/* - Copyright (C) 2012 Carl Hetherington <cth@carlh.net> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -*/ - -/** @file src/j2k_still_encoder.cc - * @brief An encoder which writes JPEG2000 files for a single still source image. - */ - -#include <sstream> -#include <stdexcept> -#include <iomanip> -#include <iostream> -#include <boost/filesystem.hpp> -#include <sndfile.h> -#include <openjpeg.h> -#include "j2k_still_encoder.h" -#include "config.h" -#include "options.h" -#include "exceptions.h" -#include "dcp_video_frame.h" -#include "filter.h" -#include "log.h" -#include "imagemagick_decoder.h" -#include "film.h" - -using std::string; -using std::pair; -using boost::shared_ptr; - -J2KStillEncoder::J2KStillEncoder (shared_ptr<const Film> f, shared_ptr<const EncodeOptions> o) - : Encoder (f, o) -{ - -} - -void -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 ( - yuv, sub, _opt->out_size, _opt->padding, _film->subtitle_offset(), _film->subtitle_scale(), _film->scaler(), 0, _film->frames_per_second(), s.second, - Config::instance()->colour_lut_index(), Config::instance()->j2k_bandwidth(), - _film->log() - ); - - if (!boost::filesystem::exists (_opt->frame_out_path (0, false))) { - boost::shared_ptr<EncodedData> e = f->encode_locally (); - e->write (_opt, 0); - } - - string const real = _opt->frame_out_path (0, false); - 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))) { - 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 (a.c_str(), b.c_str()); - if (r) { - throw EncodeError ("could not create symlink"); - } -#endif - -#ifdef DVDOMATIC_WINDOWS - boost::filesystem::copy_file (a, b); -#endif -} |
