Remove unused variable.
[dcpomatic.git] / src / lib / options.h
1 /*
2     Copyright (C) 2012 Carl Hetherington <cth@carlh.net>
3
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.
8
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.
13
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.
17
18 */
19
20 /** @file src/options.h
21  *  @brief Options for a transcoding operation.
22  */
23
24 #include <string>
25 #include <iomanip>
26 #include <sstream>
27 #include "util.h"
28
29 /** @class Options
30  *  @brief Options for a transcoding operation.
31  *
32  *  These are settings which may be different, in different circumstances, for
33  *  the same film; ie they are options for a particular transcode operation.
34  */
35 class Options
36 {
37 public:
38
39         Options (std::string f, std::string e, std::string m)
40                 : padding (0)
41                 , apply_crop (true)
42                 , decode_video_frequency (0)
43                 , decode_audio (true)
44                 , _frame_out_path (f)
45                 , _frame_out_extension (e)
46                 , _multichannel_audio_out_path (m)
47         {}
48
49         /** @return The path to write video frames to */
50         std::string frame_out_path () const {
51                 return _frame_out_path;
52         }
53
54         /** @param f Frame index.
55          *  @param t true to return a temporary file path, otherwise a permanent one.
56          *  @return The path to write this video frame to.
57          */
58         std::string frame_out_path (int f, bool t) const {
59                 std::stringstream s;
60                 s << _frame_out_path << "/";
61                 s.width (8);
62                 s << std::setfill('0') << f << _frame_out_extension;
63
64                 if (t) {
65                         s << ".tmp";
66                 }
67
68                 return s.str ();
69         }
70
71         /** @return Path to write multichannel audio data to */
72         std::string multichannel_audio_out_path () const {
73                 return _multichannel_audio_out_path;
74         }
75
76         /** @param c Audio channel index.
77          *  @param t true to return a temporary file path, otherwise a permanent one.
78          *  @return The path to write this audio file to.
79          */
80         std::string multichannel_audio_out_path (int c, bool t) const {
81                 std::stringstream s;
82                 s << _multichannel_audio_out_path << "/" << (c + 1) << ".wav";
83                 if (t) {
84                         s << ".tmp";
85                 }
86
87                 return s.str ();
88         }
89
90         Size out_size;              ///< size of output images
91         float ratio;                ///< ratio of the wanted output image (not considering padding)
92         int padding;                ///< number of pixels of padding (in terms of the output size) each side of the image
93         bool apply_crop;            ///< true to apply cropping
94         int black_after;            ///< first frame for which to output a black frame, rather than the actual video content, or 0 for none
95         int decode_video_frequency; ///< skip frames so that this many are decoded in all (or 0) (for generating thumbnails)
96         bool decode_audio;          ///< true to decode audio, otherwise false
97
98 private:
99         /** Path of the directory to write video frames to */
100         std::string _frame_out_path;
101         /** Extension to use for video frame files (including the leading .) */
102         std::string _frame_out_extension;
103         /** Path of the directory to write audio files to */
104         std::string _multichannel_audio_out_path;
105 };