@ -388,34 +388,18 @@ static struct ast_stream *get_stream(struct ast_stream_topology *topology,
return NULL ;
}
static struct ast_json * g et_media_labels( struct confbridge_conference * conference ,
static void s et_media_labels( struct confbridge_conference * conference ,
struct ast_channel * src_chan , struct ast_channel * dest_chan , enum label_direction dir )
{
struct ast_stream_topology * topology ;
struct ast_stream * stream ;
const char * curr_a_label ;
const char * a_label = NULL ;
const char * v_label = NULL ;
struct ast_json * labels = ast_json_array_create ( ) ;
struct ast_channel * chan = dir = = LABEL_DIRECTION_SRC ? dest_chan : src_chan ;
if ( ! labels ) {
return NULL ;
}
topology = ast_channel_get_stream_topology ( dir = = LABEL_DIRECTION_SRC ? src_chan : dest_chan ) ;
stream = get_stream ( topology , AST_MEDIA_TYPE_AUDIO ) ;
curr_a_label = stream ? ast_stream_get_metadata ( stream , " MSID:LABEL " ) : NULL ;
a_label = curr_a_label ? : conference - > bridge - > uniqueid ;
ast_json_array_append ( labels , ast_json_string_create ( a_label ) ) ;
topology = ast_channel_get_stream_topology ( dir = = LABEL_DIRECTION_SRC ? dest_chan : src_chan ) ;
topology = ast_channel_get_stream_topology ( chan ) ;
stream = get_stream ( topology , AST_MEDIA_TYPE_VIDEO ) ;
v_label = stream ? ast_stream_get_metadata ( stream , " MSID:LABEL " ) : NULL ;
if ( v_label ) {
ast_json_array_append ( labels , ast_json_string_create ( v_label ) ) ;
if ( stream ) {
ast_stream_set_metadata ( stream , " SDP:LABEL " , ast_channel_uniqueid ( chan ) ) ;
}
return ast_json_pack ( " {s: o } " , " media_source_track_labels " , labels ) ;
}
static void send_message ( const char * msg_name , char * conf_name , struct ast_json * json_object ,
@ -505,7 +489,6 @@ static void send_event_to_participants(struct confbridge_conference *conference,
ao2_lock ( conference ) ;
AST_LIST_TRAVERSE ( & conference - > active_list , user , list ) {
struct ast_json * json_object ;
struct ast_json * source_json_labels = NULL ;
/*
* If the msg type is join , we need to capture all targets channel info so we can
@ -514,7 +497,6 @@ static void send_event_to_participants(struct confbridge_conference *conference,
if ( source_send_events & & stasis_message_type ( msg ) = = confbridge_join_type ( ) ) {
struct ast_channel_snapshot * target_snapshot ;
struct ast_json * target_json_channel ;
struct ast_json * target_json_labels ;
target_snapshot = ast_channel_snapshot_get_latest ( ast_channel_uniqueid ( user - > chan ) ) ;
if ( ! target_snapshot ) {
@ -523,17 +505,15 @@ static void send_event_to_participants(struct confbridge_conference *conference,
continue ;
}
target_json_labels = g et_media_labels( conference , chan , user - > chan , LABEL_DIRECTION_SRC ) ;
target_json_channel = channel_to_json ( target_snapshot , extras , target_json_labels ) ;
s et_media_labels( conference , chan , user - > chan , LABEL_DIRECTION_SRC ) ;
target_json_channel = channel_to_json ( target_snapshot , extras , NULL ) ;
ao2_ref ( target_snapshot , - 1 ) ;
ast_json_unref ( target_json_labels ) ;
if ( ! json_channels ) {
json_channels = ast_json_array_create ( ) ;
if ( ! json_channels ) {
ast_log ( LOG_ERROR , " Unable to allocate json array \n " ) ;
ast_json_unref ( target_json_channel ) ;
ast_json_unref ( target_json_labels ) ;
return ;
}
}
@ -555,11 +535,9 @@ static void send_event_to_participants(struct confbridge_conference *conference,
continue ;
}
source_json_labels = get_media_labels ( conference , chan , user - > chan , LABEL_DIRECTION_DEST ) ;
ast_json_object_update ( extras , source_json_labels ) ;
set_media_labels ( conference , chan , user - > chan , LABEL_DIRECTION_DEST ) ;
json_object = pack_snapshots ( obj - > bridge , obj - > channel , extras , source_json_labels , msg ) ;
ast_json_unref ( source_json_labels ) ;
json_object = pack_snapshots ( obj - > bridge , obj - > channel , extras , NULL , msg ) ;
if ( ! json_object ) {
ast_log ( LOG_ERROR , " Unable to convert %s message to json \n " , msg_name ) ;