@ -2435,14 +2435,13 @@ void codecs_offer_answer(struct call_media *media, struct call_media *other_medi
codec_tracker_update ( & media - > codecs ) ;
// set up handlers
codec_handlers_update ( media , other_media , flags , sp ) ;
codec_handlers_update ( media , other_media , flags , sp , NULL ) ;
// updating the handlers may have removed some codecs, so run update the supp codecs again
codec_tracker_update ( & media - > codecs ) ;
// finally set up handlers again based on final results
if ( codec_handlers_update ( media , other_media , flags , sp ) )
dialogue [ 1 ] - > attrs . transcoding = 1 ;
codec_handlers_update ( media , other_media , flags , sp , dialogue [ 1 ] ) ;
}
else {
// answer
@ -2470,7 +2469,7 @@ void codecs_offer_answer(struct call_media *media, struct call_media *other_medi
// update callee side codec handlers again (second pass after the offer) as we
// might need to update some handlers, e.g. when supplemental codecs have been
// rejected
codec_handlers_update ( other_media , media , NULL , NULL );
codec_handlers_update ( other_media , media , NULL , NULL , NULL );
// finally set up our caller side codecs
ilogs ( codec , LOG_DEBUG , " Codec answer for " STR_FORMAT " #%u " ,
@ -2479,17 +2478,15 @@ void codecs_offer_answer(struct call_media *media, struct call_media *other_medi
codec_store_answer ( & media - > codecs , & other_media - > codecs , flags ) ;
// set up handlers
codec_handlers_update ( media , other_media , flags , sp );
codec_handlers_update ( media , other_media , flags , sp , NULL );
// updating the handlers may have removed some codecs, so run update the supp codecs again
codec_tracker_update ( & media - > codecs ) ;
codec_tracker_update ( & other_media - > codecs ) ;
// finally set up handlers again based on final results
if ( codec_handlers_update ( media , other_media , flags , sp ) )
dialogue [ 1 ] - > attrs . transcoding = 1 ;
if ( codec_handlers_update ( other_media , media , NULL , NULL ) )
dialogue [ 0 ] - > attrs . transcoding = 1 ;
codec_handlers_update ( media , other_media , flags , sp , dialogue [ 1 ] ) ;
codec_handlers_update ( other_media , media , NULL , NULL , dialogue [ 0 ] ) ;
// activate audio player if needed (not done by codec_handlers_update without `flags`)
audio_player_activate ( media ) ;
@ -3124,7 +3121,7 @@ static int monologue_subscribe_request1(struct call_monologue *src_ml, struct ca
codec_store_transcode ( & dst_media - > codecs , & flags - > codec_transcode , & sp - > codecs ) ;
codec_store_synthesise ( & dst_media - > codecs , & src_media - > codecs ) ;
codec_handlers_update ( dst_media , src_media , flags , sp );
codec_handlers_update ( dst_media , src_media , flags , sp , NULL );
if ( ! flags - > inactive )
bf_copy ( & dst_media - > media_flags , MEDIA_FLAG_SEND , & src_media - > media_flags , SP_FLAG_RECV ) ;
@ -3236,9 +3233,8 @@ int monologue_subscribe_answer(struct call_monologue *dst_ml, struct sdp_ng_flag
return - 1 ;
}
codec_handlers_update ( src_media , dst_media , NULL , NULL ) ;
if ( codec_handlers_update ( dst_media , src_media , flags , sp ) )
rev_cs - > attrs . transcoding = 1 ;
codec_handlers_update ( src_media , dst_media , NULL , NULL , NULL ) ;
codec_handlers_update ( dst_media , src_media , flags , sp , rev_cs ) ;
__dtls_logic ( flags , dst_media , sp ) ;