#include <string>
#include <iomanip>
#include <sstream>
+#include <boost/optional.hpp>
#include "util.h"
/** @class Options
Options (std::string f, std::string e, std::string m)
: padding (0)
, apply_crop (true)
- , num_frames (0)
- , decode_video (true)
- , decode_video_frequency (0)
+ , decode_video_skip (0)
, decode_audio (true)
+ , decode_subtitles (false)
, _frame_out_path (f)
, _frame_out_extension (e)
, _multichannel_audio_out_path (m)
return _frame_out_path;
}
- /** @param f Frame index.
+ /** @param f Source frame index.
* @param t true to return a temporary file path, otherwise a permanent one.
* @return The path to write this video frame to.
*/
- std::string frame_out_path (int f, bool t) const {
+ std::string frame_out_path (SourceFrame f, bool t, std::string e = "") const {
+ if (e.empty ()) {
+ e = _frame_out_extension;
+ }
+
std::stringstream s;
s << _frame_out_path << "/";
s.width (8);
- s << std::setfill('0') << f << _frame_out_extension;
+ s << std::setfill('0') << f << e;
if (t) {
s << ".tmp";
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
- int num_frames; ///< number of video frames to run for, or 0 for all
- int black_after; ///< first frame for which to output a black frame, rather than the actual video content, or 0 for none
- bool decode_video; ///< true to decode video, otherwise false
- int decode_video_frequency; ///< skip frames so that this many are decoded in all (or 0) (for generating thumbnails)
+
+ /** Range of video frames to decode */
+ boost::optional<std::pair<SourceFrame, SourceFrame> > video_decode_range;
+ /** Range of audio frames to decode */
+ boost::optional<std::pair<int64_t, int64_t> > audio_decode_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;
private:
/** Path of the directory to write video frames to */