2 Copyright (C) 2012 Carl Hetherington <cth@carlh.net>
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 /** @file src/options.h
21 * @brief Options for a transcoding operation.
27 #include <boost/optional.hpp>
30 /** @class EncodeOptions
31 * @brief EncodeOptions for an encoding operation.
33 * These are settings which may be different, in different circumstances, for
34 * the same film; ie they are options for a particular operation.
40 EncodeOptions (std::string f, std::string e, std::string m)
44 , _frame_out_extension (e)
45 , _multichannel_audio_out_path (m)
48 /** @return The path to write video frames to */
49 std::string frame_out_path () const {
50 return _frame_out_path;
53 /** @param f Source frame index.
54 * @param t true to return a temporary file path, otherwise a permanent one.
55 * @return The path to write this video frame to.
57 std::string frame_out_path (SourceFrame f, bool t, std::string e = "") const {
59 e = _frame_out_extension;
63 s << _frame_out_path << "/";
65 s << std::setfill('0') << f << e;
74 /** @return Path to write multichannel audio data to */
75 std::string multichannel_audio_out_path () const {
76 return _multichannel_audio_out_path;
79 /** @param c Audio channel index.
80 * @param t true to return a temporary file path, otherwise a permanent one.
81 * @return The path to write this audio file to.
83 std::string multichannel_audio_out_path (int c, bool t) const {
85 s << _multichannel_audio_out_path << "/" << (c + 1) << ".wav";
93 Size out_size; ///< size of output images
94 int padding; ///< number of pixels of padding (in terms of the output size) each side of the image
96 /** Range of video frames to decode */
97 boost::optional<std::pair<SourceFrame, SourceFrame> > video_range;
98 /** Range of audio frames to decode */
99 boost::optional<std::pair<int64_t, int64_t> > audio_range;
101 /** Skip frames such that we don't decode any frame where (index % decode_video_skip) != 0; e.g.
102 * 1 for every frame, 2 for every other frame, etc.
104 SourceFrame video_skip;
107 /** Path of the directory to write video frames to */
108 std::string _frame_out_path;
109 /** Extension to use for video frame files (including the leading .) */
110 std::string _frame_out_extension;
111 /** Path of the directory to write audio files to */
112 std::string _multichannel_audio_out_path;
120 : decode_audio (true)
121 , decode_subtitles (false)
126 bool decode_subtitles;