|
|
|
@ -67,7 +67,6 @@ LogCameraInfo cameras_logged[LOG_CAMERA_ID_MAX] = { |
|
|
|
|
.stream_type = VISION_STREAM_YUV, |
|
|
|
|
.filename = "fcamera.hevc", |
|
|
|
|
.frame_packet_name = "frame", |
|
|
|
|
.encode_idx_name = "encodeIdx", |
|
|
|
|
.fps = MAIN_FPS, |
|
|
|
|
.bitrate = MAIN_BITRATE, |
|
|
|
|
.is_h265 = true, |
|
|
|
@ -78,7 +77,6 @@ LogCameraInfo cameras_logged[LOG_CAMERA_ID_MAX] = { |
|
|
|
|
.stream_type = VISION_STREAM_YUV_FRONT, |
|
|
|
|
.filename = "dcamera.hevc", |
|
|
|
|
.frame_packet_name = "frontFrame", |
|
|
|
|
.encode_idx_name = "frontEncodeIdx", |
|
|
|
|
.fps = MAIN_FPS, // on EONs, more compressed this way
|
|
|
|
|
.bitrate = DCAM_BITRATE, |
|
|
|
|
.is_h265 = true, |
|
|
|
@ -89,7 +87,6 @@ LogCameraInfo cameras_logged[LOG_CAMERA_ID_MAX] = { |
|
|
|
|
.stream_type = VISION_STREAM_YUV_WIDE, |
|
|
|
|
.filename = "ecamera.hevc", |
|
|
|
|
.frame_packet_name = "wideFrame", |
|
|
|
|
.encode_idx_name = "wideEncodeIdx", |
|
|
|
|
.fps = MAIN_FPS, |
|
|
|
|
.bitrate = MAIN_BITRATE, |
|
|
|
|
.is_h265 = true, |
|
|
|
@ -235,9 +232,6 @@ void encoder_thread(RotateState *rotate_state, bool raw_clips, int cam_idx) { |
|
|
|
|
s.num_encoder += 1; |
|
|
|
|
pthread_mutex_unlock(&s.rotate_lock); |
|
|
|
|
|
|
|
|
|
PubSocket *idx_sock = PubSocket::create(s.ctx, cameras_logged[cam_idx].encode_idx_name); |
|
|
|
|
assert(idx_sock != NULL); |
|
|
|
|
|
|
|
|
|
LoggerHandle *lh = NULL; |
|
|
|
|
|
|
|
|
|
while (!do_exit) { |
|
|
|
@ -377,8 +371,12 @@ void encoder_thread(RotateState *rotate_state, bool raw_clips, int cam_idx) { |
|
|
|
|
|
|
|
|
|
// publish encode index
|
|
|
|
|
MessageBuilder msg; |
|
|
|
|
auto eidx = msg.initEvent().initEncodeIdx(); |
|
|
|
|
// this is really ugly
|
|
|
|
|
auto eidx = cam_idx == LOG_CAMERA_ID_DCAMERA ? msg.initEvent().initFrontEncodeIdx() : |
|
|
|
|
(cam_idx == LOG_CAMERA_ID_ECAMERA ? msg.initEvent().initWideEncodeIdx() : msg.initEvent().initEncodeIdx()); |
|
|
|
|
eidx.setFrameId(extra.frame_id); |
|
|
|
|
eidx.setTimestampSof(extra.timestamp_sof); |
|
|
|
|
eidx.setTimestampEof(extra.timestamp_eof); |
|
|
|
|
#ifdef QCOM2 |
|
|
|
|
eidx.setType(cereal::EncodeIndex::Type::FULL_H_E_V_C); |
|
|
|
|
#else |
|
|
|
@ -390,9 +388,8 @@ void encoder_thread(RotateState *rotate_state, bool raw_clips, int cam_idx) { |
|
|
|
|
eidx.setSegmentId(out_id); |
|
|
|
|
|
|
|
|
|
auto bytes = msg.toBytes(); |
|
|
|
|
|
|
|
|
|
if (idx_sock->send((char*)bytes.begin(), bytes.size()) < 0) { |
|
|
|
|
printf("err sending encodeIdx pkt: %s\n", strerror(errno)); |
|
|
|
|
if (lh) { |
|
|
|
|
lh_log(lh, bytes.begin(), bytes.size(), false); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -450,8 +447,6 @@ void encoder_thread(RotateState *rotate_state, bool raw_clips, int cam_idx) { |
|
|
|
|
visionstream_destroy(&stream); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
delete idx_sock; |
|
|
|
|
|
|
|
|
|
if (encoder_inited) { |
|
|
|
|
LOG("encoder destroy"); |
|
|
|
|
encoder_close(&encoder); |
|
|
|
|