Encoderd: encoders just encode, no writing (#28482)

Encoders dont write, they encode
old-commit-hash: 1fd7542eae10e78fb363548da428a9c7a907638e
This commit is contained in:
Harald Schäfer
2023-06-10 23:44:01 -07:00
committed by GitHub
parent 1befc68287
commit c4bc3964a6
7 changed files with 8 additions and 70 deletions
+2 -19
View File
@@ -15,9 +15,9 @@
class VideoEncoder {
public:
VideoEncoder(const char* filename, CameraType type, int in_width, int in_height, int fps,
int bitrate, cereal::EncodeIndex::Type codec, int out_width, int out_height, bool write)
int bitrate, cereal::EncodeIndex::Type codec, int out_width, int out_height)
: filename(filename), type(type), in_width(in_width), in_height(in_height), fps(fps),
bitrate(bitrate), codec(codec), out_width(out_width), out_height(out_height), write(write) { }
bitrate(bitrate), codec(codec), out_width(out_width), out_height(out_height) { }
virtual ~VideoEncoder();
virtual int encode_frame(VisionBuf* buf, VisionIpcBufExtra *extra) = 0;
virtual void encoder_open(const char* path) = 0;
@@ -26,20 +26,8 @@ public:
void publisher_init();
static void publisher_publish(VideoEncoder *e, int segment_num, uint32_t idx, VisionIpcBufExtra &extra, unsigned int flags, kj::ArrayPtr<capnp::byte> header, kj::ArrayPtr<capnp::byte> dat);
void writer_open(const char* path) {
if (this->write) write_handler_thread = std::thread(VideoEncoder::write_handler, this, path);
}
void writer_close() {
if (this->write) {
to_write.push(NULL);
write_handler_thread.join();
}
assert(to_write.empty());
}
protected:
bool write;
const char* filename;
int in_width, in_height;
int out_width, out_height, fps;
@@ -54,9 +42,4 @@ private:
// publishing
std::unique_ptr<PubMaster> pm;
const char *service_name;
// writing support
static void write_handler(VideoEncoder *e, const char *path);
std::thread write_handler_thread;
SafeQueue<kj::Array<capnp::word>* > to_write;
};