2 #include "output-drv.hpp"
13 class output_driver_rawi420
: public output_driver
16 output_driver_rawi420(const std::string
& filename
, bool _uvswap
)
20 out
= new std::ofstream(filename
.c_str(), std::ios_base::binary
);
24 throw std::runtime_error("Unable to open output file");
25 set_video_callback
<output_driver_rawi420
>(*this, &output_driver_rawi420::video_callback
);
28 ~output_driver_rawi420()
36 const video_settings
& v
= get_video_settings();
37 framesize
= 4 * v
.get_width() * v
.get_height();
38 width
= v
.get_width();
39 height
= v
.get_height();
42 void video_callback(uint64_t timestamp
, const uint8_t* raw_rgbx_data
)
44 I420_convert_common(raw_rgbx_data
, width
, height
, *out
, !uvswap
);
54 class output_driver_rawi420_factory
: output_driver_factory
57 output_driver_rawi420_factory(const std::string
& name
, bool _uvswap
)
58 : output_driver_factory(name
)
63 output_driver
& make(const std::string
& type
, const std::string
& name
, const std::string
& parameters
)
66 throw std::runtime_error("rawi420 output does not take parameters");
67 return *new output_driver_rawi420(name
, uvswap
);
72 output_driver_rawi420_factory
fact1("rawi420", false);
73 output_driver_rawi420_factory
fact2("rawi420-uvswap", true);