|
|
@ -248,7 +248,7 @@ void encoder_thread(int cam_idx) { |
|
|
|
pthread_mutex_lock(&s.rotate_lock); |
|
|
|
pthread_mutex_lock(&s.rotate_lock); |
|
|
|
for (auto &e : encoders) { |
|
|
|
for (auto &e : encoders) { |
|
|
|
e->encoder_close(); |
|
|
|
e->encoder_close(); |
|
|
|
e->encoder_open(s.segment_path, s.rotate_segment); |
|
|
|
e->encoder_open(s.segment_path); |
|
|
|
} |
|
|
|
} |
|
|
|
rotate_state.cur_seg = s.rotate_segment; |
|
|
|
rotate_state.cur_seg = s.rotate_segment; |
|
|
|
pthread_mutex_unlock(&s.rotate_lock); |
|
|
|
pthread_mutex_unlock(&s.rotate_lock); |
|
|
@ -266,10 +266,8 @@ void encoder_thread(int cam_idx) { |
|
|
|
|
|
|
|
|
|
|
|
// encode a frame
|
|
|
|
// encode a frame
|
|
|
|
for (int i = 0; i < encoders.size(); ++i) { |
|
|
|
for (int i = 0; i < encoders.size(); ++i) { |
|
|
|
int out_segment = -1; |
|
|
|
|
|
|
|
int out_id = encoders[i]->encode_frame(buf->y, buf->u, buf->v, |
|
|
|
int out_id = encoders[i]->encode_frame(buf->y, buf->u, buf->v, |
|
|
|
buf->width, buf->height, |
|
|
|
buf->width, buf->height, extra.timestamp_eof); |
|
|
|
&out_segment, extra.timestamp_eof); |
|
|
|
|
|
|
|
if (i == 0 && out_id != -1) { |
|
|
|
if (i == 0 && out_id != -1) { |
|
|
|
// publish encode index
|
|
|
|
// publish encode index
|
|
|
|
MessageBuilder msg; |
|
|
|
MessageBuilder msg; |
|
|
@ -285,7 +283,7 @@ void encoder_thread(int cam_idx) { |
|
|
|
eidx.setType(cam_idx == LOG_CAMERA_ID_DCAMERA ? cereal::EncodeIndex::Type::FRONT : cereal::EncodeIndex::Type::FULL_H_E_V_C); |
|
|
|
eidx.setType(cam_idx == LOG_CAMERA_ID_DCAMERA ? cereal::EncodeIndex::Type::FRONT : cereal::EncodeIndex::Type::FULL_H_E_V_C); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
eidx.setEncodeId(cnt); |
|
|
|
eidx.setEncodeId(cnt); |
|
|
|
eidx.setSegmentNum(out_segment); |
|
|
|
eidx.setSegmentNum(rotate_state.cur_seg); |
|
|
|
eidx.setSegmentId(out_id); |
|
|
|
eidx.setSegmentId(out_id); |
|
|
|
if (lh) { |
|
|
|
if (lh) { |
|
|
|
auto bytes = msg.toBytes(); |
|
|
|
auto bytes = msg.toBytes(); |
|
|
|