Add built-in VGA font
[jpcrr.git] / streamtools / output-drv-timecodev2.cpp
blob0dacb91eb5406da953af5bb456f1aaa086045bf3
1 #include "output-drv.hpp"
2 #include <cstdio>
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 = fopen(filename.c_str(), "wb");
15 else
16 out = stdout;
17 if(!out)
18 throw std::runtime_error("Unable to open output file");
19 fprintf(out, "# timecode format v2\n");
20 set_video_callback<output_driver_timecodev2>(*this, &output_driver_timecodev2::video_callback);
23 ~output_driver_timecodev2()
25 fclose(out);
28 void ready()
32 void video_callback(uint64_t timestamp, const uint8_t* raw_rgbx_data)
34 fprintf(out, "%llu\n", (unsigned long long)timestamp / 1000000);
36 private:
37 FILE* out;
40 class output_driver_timecodev2_factory : output_driver_factory
42 public:
43 output_driver_timecodev2_factory()
44 : output_driver_factory("timecodev2")
48 output_driver& make(const std::string& type, const std::string& name, const std::string& parameters)
50 if(parameters != "")
51 throw std::runtime_error("timecodev2 output does not take parameters");
52 return *new output_driver_timecodev2(name);
54 } factory;