Encoderd: refactor msg getters and setters (#28509)

* Encoderd: refactor msg getters and setters

* whitespace

* whitespace

* whitespace
old-commit-hash: 2453d3a04b
vw-mqb-aeb
Harald Schäfer 2 years ago committed by GitHub
parent f4bf6a3ddd
commit e841a5ef81
  1. 11
      system/loggerd/loggerd.cc
  2. 10
      system/loggerd/loggerd.h

@ -64,10 +64,7 @@ int handle_encoder_msg(LoggerdState *s, Message *msg, std::string &name, struct
// extract the message // extract the message
capnp::FlatArrayMessageReader cmsg(kj::ArrayPtr<capnp::word>((capnp::word *)msg->getData(), msg->getSize() / sizeof(capnp::word))); capnp::FlatArrayMessageReader cmsg(kj::ArrayPtr<capnp::word>((capnp::word *)msg->getData(), msg->getSize() / sizeof(capnp::word)));
auto event = cmsg.getRoot<cereal::Event>(); auto event = cmsg.getRoot<cereal::Event>();
// TODO this should be dealt with generically auto edata = (event.*(encoder_info.get_encode_data_func))();
auto edata = (name == "driverEncodeData") ? event.getDriverEncodeData() :
((name == "wideRoadEncodeData") ? event.getWideRoadEncodeData() :
((name == "qRoadEncodeData") ? event.getQRoadEncodeData() : event.getRoadEncodeData()));
auto idx = edata.getIdx(); auto idx = edata.getIdx();
auto flags = idx.getFlags(); auto flags = idx.getFlags();
@ -140,11 +137,7 @@ int handle_encoder_msg(LoggerdState *s, Message *msg, std::string &name, struct
MessageBuilder bmsg; MessageBuilder bmsg;
auto evt = bmsg.initEvent(event.getValid()); auto evt = bmsg.initEvent(event.getValid());
evt.setLogMonoTime(event.getLogMonoTime()); evt.setLogMonoTime(event.getLogMonoTime());
// TODO this should be dealt with generically (evt.*(encoder_info.set_encode_idx_func))(idx);
if (name == "driverEncodeData") { evt.setDriverEncodeIdx(idx); }
if (name == "wideRoadEncodeData") { evt.setWideRoadEncodeIdx(idx); }
if (name == "qRoadEncodeData") { evt.setQRoadEncodeIdx(idx); }
if (name == "roadEncodeData") { evt.setRoadEncodeIdx(idx); }
auto new_msg = bmsg.toBytes(); auto new_msg = bmsg.toBytes();
logger_log(&s->logger, (uint8_t *)new_msg.begin(), new_msg.size(), true); // always in qlog? logger_log(&s->logger, (uint8_t *)new_msg.begin(), new_msg.size(), true); // always in qlog?
bytes_count += new_msg.size(); bytes_count += new_msg.size();

@ -51,6 +51,8 @@ public:
int fps = MAIN_FPS; int fps = MAIN_FPS;
int bitrate = MAIN_BITRATE; int bitrate = MAIN_BITRATE;
cereal::EncodeIndex::Type encode_type = cereal::EncodeIndex::Type::FULL_H_E_V_C; cereal::EncodeIndex::Type encode_type = cereal::EncodeIndex::Type::FULL_H_E_V_C;
::cereal::EncodeData::Reader (cereal::Event::Reader::*get_encode_data_func)() const;
void (cereal::Event::Builder::*set_encode_idx_func)(::cereal::EncodeIndex::Reader);
}; };
class LogCameraInfo { class LogCameraInfo {
@ -65,15 +67,21 @@ public:
const EncoderInfo main_road_encoder_info = { const EncoderInfo main_road_encoder_info = {
.publish_name = "roadEncodeData", .publish_name = "roadEncodeData",
.filename = "fcamera.hevc", .filename = "fcamera.hevc",
.get_encode_data_func = &cereal::Event::Reader::getRoadEncodeData,
.set_encode_idx_func = &cereal::Event::Builder::setRoadEncodeIdx,
}; };
const EncoderInfo main_wide_road_encoder_info = { const EncoderInfo main_wide_road_encoder_info = {
.publish_name = "wideRoadEncodeData", .publish_name = "wideRoadEncodeData",
.filename = "ecamera.hevc", .filename = "ecamera.hevc",
.get_encode_data_func = &cereal::Event::Reader::getWideRoadEncodeData,
.set_encode_idx_func = &cereal::Event::Builder::setWideRoadEncodeIdx,
}; };
const EncoderInfo main_driver_encoder_info = { const EncoderInfo main_driver_encoder_info = {
.publish_name = "driverEncodeData", .publish_name = "driverEncodeData",
.filename = "dcamera.hevc", .filename = "dcamera.hevc",
.record = Params().getBool("RecordFront"), .record = Params().getBool("RecordFront"),
.get_encode_data_func = &cereal::Event::Reader::getDriverEncodeData,
.set_encode_idx_func = &cereal::Event::Builder::setDriverEncodeIdx,
}; };
const EncoderInfo qcam_encoder_info = { const EncoderInfo qcam_encoder_info = {
@ -83,6 +91,8 @@ const EncoderInfo qcam_encoder_info = {
.encode_type = cereal::EncodeIndex::Type::QCAMERA_H264, .encode_type = cereal::EncodeIndex::Type::QCAMERA_H264,
.frame_width = 526, .frame_width = 526,
.frame_height = 330, .frame_height = 330,
.get_encode_data_func = &cereal::Event::Reader::getQRoadEncodeData,
.set_encode_idx_func = &cereal::Event::Builder::setQRoadEncodeIdx,
}; };

Loading…
Cancel
Save