2 #include "output-drv.hpp"
11 class output_driver_rawi420
: public output_driver
14 output_driver_rawi420(const std::string
& filename
, bool _uvswap
)
18 out
= new std::ofstream(filename
.c_str(), std::ios_base::binary
);
22 throw std::runtime_error("Unable to open output file");
23 set_video_callback
<output_driver_rawi420
>(*this, &output_driver_rawi420::video_callback
);
26 ~output_driver_rawi420()
34 const video_settings
& v
= get_video_settings();
35 framesize
= 4 * v
.get_width() * v
.get_height();
36 width
= v
.get_width();
37 height
= v
.get_height();
40 void video_callback(uint64_t timestamp
, const uint8_t* raw_rgbx_data
)
42 I420_convert_common(raw_rgbx_data
, width
, height
, *out
, !uvswap
);
52 class output_driver_rawi420_factory
: output_driver_factory
55 output_driver_rawi420_factory(const std::string
& name
, bool _uvswap
)
56 : output_driver_factory(name
)
61 output_driver
& make(const std::string
& type
, const std::string
& name
, const std::string
& parameters
)
64 throw std::runtime_error("rawi420 output does not take parameters");
65 return *new output_driver_rawi420(name
, uvswap
);
70 output_driver_rawi420_factory
fact1("rawi420", false);
71 output_driver_rawi420_factory
fact2("rawi420-uvswap", true);