@@ -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