Skip to content

Commit 293b4fb

Browse files
committed
acap/aes67: Optimize lock hold time
1 parent 432c0b2 commit 293b4fb

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

src/audio/capture/aes67.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -219,8 +219,6 @@ static void aes67_rtp_worker(state_aes67_cap *s, Rtp_stream stream){
219219
rtp_pkt.timestamp,
220220
rtp_pkt.payload_type);
221221

222-
std::lock_guard<std::mutex> lk(s->frame_mut);
223-
224222
if(rtp_pkt.payload_type != last_payload_type){
225223
auto fmt_it = stream.fmts.find(rtp_pkt.payload_type);
226224
if(fmt_it == stream.fmts.end()){
@@ -231,18 +229,20 @@ static void aes67_rtp_worker(state_aes67_cap *s, Rtp_stream stream){
231229
log_msg(LOG_LEVEL_NOTICE, MOD_NAME "Reconfigured\n");
232230
last_payload_type = rtp_pkt.payload_type;
233231
}
234-
if(!s->back_frame.is_desc_same(desc)){
235-
s->back_frame = Allocated_audio_frame(desc);
236-
}
237-
238-
int sample_count = rtp_pkt.data_len / desc.bps;
239-
240232
char *src = static_cast<char *>(rtp_pkt.data);
233+
int sample_count = rtp_pkt.data_len / desc.bps;
241234
swap_endianity(src, desc.bps, sample_count);
242235

243-
size_t to_write = std::min<size_t>(s->back_frame.frame.max_size - s->back_frame.data.size(), sample_count * desc.bps);
244-
s->back_frame.data.insert(s->back_frame.data.end(), src, src + to_write);
245-
s->back_frame.frame.data_len = s->back_frame.data.size();
236+
{
237+
std::scoped_lock lk(s->frame_mut);
238+
239+
if(!s->back_frame.is_desc_same(desc)){
240+
s->back_frame = Allocated_audio_frame(desc);
241+
}
242+
size_t to_write = std::min<size_t>(s->back_frame.frame.max_size - s->back_frame.data.size(), sample_count * desc.bps);
243+
s->back_frame.data.insert(s->back_frame.data.end(), src, src + to_write);
244+
s->back_frame.frame.data_len = s->back_frame.data.size();
245+
}
246246
s->frame_cond.notify_one();
247247
}
248248

0 commit comments

Comments
 (0)