Add resizer letterbox2
[jpcrr.git] / streamtools / output-drv-timecodev2.cpp
blob6fbd243e64d945a90835cd761d678fc791dee0cc
1 #include "output-drv.hpp"
2 #include <fstream>
3 #include <stdexcept>
4 #include <string>
6 namespace
8 class output_driver_timecodev2 : public output_driver
10 public:
11 output_driver_timecodev2(const std::string& filename)
13 if(filename != "-")
14 out = new std::ofstream(filename.c_str(), std::ios_base::binary);
15 else
16 out = &std::cout;
17 if(!*out)
18 throw std::runtime_error("Unable to open output file");
19 *out << "# timecode format v2" << std::endl;
20 set_video_callback<output_driver_timecodev2>(*this,
21 &output_driver_timecodev2::video_callback);
24 ~output_driver_timecodev2()
26 if(out != &std::cout)
27 delete out;
30 void ready()
34 void video_callback(uint64_t timestamp, const uint8_t* raw_rgbx_data)
36 *out << (unsigned long long)timestamp / 1000000 << std::endl;
38 private:
39 std::ostream* out;
42 class output_driver_timecodev2_factory : output_driver_factory
44 public:
45 output_driver_timecodev2_factory()
46 : output_driver_factory("timecodev2")
50 output_driver& make(const std::string& type, const std::string& name, const std::string& parameters)
52 if(parameters != "")
53 throw std::runtime_error("timecodev2 output does not take parameters");
54 return *new output_driver_timecodev2(name);
56 } factory;