Split Options into encode / decode.
[dcpomatic.git] / src / lib / options.h
index 29b3b71cd4a91e01bc8d76494608d076d6c4452c..4457969f3399254b89f77be38b3d308ee1c54ce9 100644 (file)
 #include <boost/optional.hpp>
 #include "util.h"
 
-/** @class Options
- *  @brief Options for a transcoding operation.
+/** @class EncodeOptions
+ *  @brief EncodeOptions for an encoding operation.
  *
  *  These are settings which may be different, in different circumstances, for
- *  the same film; ie they are options for a particular transcode operation.
+ *  the same film; ie they are options for a particular operation.
  */
-class Options
+class EncodeOptions
 {
 public:
 
-       Options (std::string f, std::string e, std::string m)
+       EncodeOptions (std::string f, std::string e, std::string m)
                : padding (0)
-               , apply_crop (true)
-               , decode_video_skip (0)
-               , decode_audio (true)
-               , decode_subtitles (false)
+               , video_skip (0)
                , _frame_out_path (f)
                , _frame_out_extension (e)
                , _multichannel_audio_out_path (m)
@@ -94,21 +91,17 @@ public:
        }
 
        Size out_size;              ///< size of output images
-       float ratio;                ///< ratio of the wanted output image (not considering padding)
        int padding;                ///< number of pixels of padding (in terms of the output size) each side of the image
-       bool apply_crop;            ///< true to apply cropping
 
        /** Range of video frames to decode */
-       boost::optional<std::pair<SourceFrame, SourceFrame> > video_decode_range;
+       boost::optional<std::pair<SourceFrame, SourceFrame> > video_range;
        /** Range of audio frames to decode */
-       boost::optional<std::pair<int64_t, int64_t> > audio_decode_range;
+       boost::optional<std::pair<int64_t, int64_t> > audio_range;
        
        /** Skip frames such that we don't decode any frame where (index % decode_video_skip) != 0; e.g.
         *  1 for every frame, 2 for every other frame, etc.
         */
-       SourceFrame decode_video_skip; 
-       bool decode_audio;          ///< true to decode audio, otherwise false
-       bool decode_subtitles;
+       SourceFrame video_skip; 
 
 private:
        /** Path of the directory to write video frames to */
@@ -118,3 +111,18 @@ private:
        /** Path of the directory to write audio files to */
        std::string _multichannel_audio_out_path;
 };
+
+
+class DecodeOptions
+{
+public:
+       DecodeOptions ()
+               : decode_audio (true)
+               , decode_subtitles (false)
+               , video_sync (true)
+       {}
+       
+       bool decode_audio;
+       bool decode_subtitles;
+       bool video_sync;
+};