@@ -617,11 +617,9 @@ void conference_video_detach_video_layer(conference_member_t *member)
617
617
mcu_layer_t * layer = NULL ;
618
618
mcu_canvas_t * canvas = NULL ;
619
619
620
- if (member -> canvas_id < 0 ) return ;
620
+ if (member -> canvas_id < 0 || member -> video_layer_id < 0 ) return ;
621
621
622
- canvas = conference_video_get_canvas_locked (member );
623
-
624
- if (!canvas || member -> video_layer_id < 0 ) {
622
+ if (!(canvas = conference_video_get_canvas_locked (member ))) {
625
623
return ;
626
624
}
627
625
@@ -894,10 +892,12 @@ switch_status_t conference_video_attach_video_layer(conference_member_t *member,
894
892
895
893
896
894
if (!switch_channel_test_flag (channel , CF_VIDEO ) && !member -> avatar_png_img ) {
895
+ printf ("WTF %d\n" , __LINE__ );
897
896
return SWITCH_STATUS_FALSE ;
898
897
}
899
898
900
899
if (switch_core_session_media_flow (member -> session , SWITCH_MEDIA_TYPE_VIDEO ) == SWITCH_MEDIA_FLOW_SENDONLY && !member -> avatar_png_img ) {
900
+ printf ("WTF %d\n" , __LINE__ );
901
901
return SWITCH_STATUS_FALSE ;
902
902
}
903
903
@@ -908,26 +908,31 @@ switch_status_t conference_video_attach_video_layer(conference_member_t *member,
908
908
layer -> tagged = 0 ;
909
909
910
910
if (layer -> fnode || layer -> geometry .fileonly ) {
911
+ printf ("WTF %d\n" , __LINE__ );
911
912
switch_goto_status (SWITCH_STATUS_FALSE , end );
912
913
}
913
914
914
915
if (layer -> geometry .flooronly && member -> id != member -> conference -> video_floor_holder ) {
916
+ printf ("WTF %d\n" , __LINE__ );
915
917
switch_goto_status (SWITCH_STATUS_FALSE , end );
916
918
}
917
919
918
920
if (layer -> geometry .res_id ) {
919
921
if (!member -> video_reservation_id || strcmp (layer -> geometry .res_id , member -> video_reservation_id )) {
922
+ printf ("WTF %d\n" , __LINE__ );
920
923
switch_goto_status (SWITCH_STATUS_FALSE , end );
921
924
}
922
925
}
923
926
924
927
if (layer -> member_id && layer -> member_id == (int )member -> id ) {
925
928
member -> video_layer_id = idx ;
929
+ printf ("WTF %d\n" , __LINE__ );
926
930
switch_goto_status (SWITCH_STATUS_BREAK , end );
927
931
}
928
932
929
933
if (layer -> geometry .res_id || member -> video_reservation_id ) {
930
934
if (!layer -> geometry .res_id || !member -> video_reservation_id || strcmp (layer -> geometry .res_id , member -> video_reservation_id )) {
935
+ printf ("WTF %d\n" , __LINE__ );
931
936
switch_goto_status (SWITCH_STATUS_FALSE , end );
932
937
}
933
938
}
@@ -1267,7 +1272,6 @@ void conference_video_write_canvas_image_to_codec_group(conference_obj_t *confer
1267
1272
}
1268
1273
1269
1274
if (!imember -> session || !switch_channel_test_flag (imember -> channel , CF_VIDEO ) ||
1270
- switch_core_session_media_flow (imember -> session , SWITCH_MEDIA_TYPE_VIDEO ) == SWITCH_MEDIA_FLOW_RECVONLY ||
1271
1275
switch_core_session_read_lock (imember -> session ) != SWITCH_STATUS_SUCCESS ) {
1272
1276
continue ;
1273
1277
}
@@ -1276,6 +1280,10 @@ void conference_video_write_canvas_image_to_codec_group(conference_obj_t *confer
1276
1280
switch_core_session_request_video_refresh (imember -> session );
1277
1281
}
1278
1282
1283
+ if (switch_core_session_media_flow (imember -> session , SWITCH_MEDIA_TYPE_VIDEO ) == SWITCH_MEDIA_FLOW_RECVONLY ) {
1284
+ continue ;
1285
+ }
1286
+
1279
1287
//switch_core_session_write_encoded_video_frame(imember->session, frame, 0, 0);
1280
1288
switch_set_flag (frame , SFF_ENCODED );
1281
1289
@@ -2184,7 +2192,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
2184
2192
}
2185
2193
2186
2194
//VIDFLOOR
2187
- if (conference -> canvas_count == 1 && canvas -> layout_floor_id > -1 && imember -> id == conference -> video_floor_holder &&
2195
+ if (canvas -> layout_floor_id > -1 && imember -> id == conference -> video_floor_holder &&
2188
2196
imember -> video_layer_id != canvas -> layout_floor_id ) {
2189
2197
conference_video_attach_video_layer (imember , canvas , canvas -> layout_floor_id );
2190
2198
}
@@ -2681,7 +2689,6 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
2681
2689
}
2682
2690
2683
2691
if (!imember -> session || !switch_channel_test_flag (imember -> channel , CF_VIDEO ) ||
2684
- switch_core_session_media_flow (imember -> session , SWITCH_MEDIA_TYPE_VIDEO ) == SWITCH_MEDIA_FLOW_RECVONLY ||
2685
2692
switch_core_session_read_lock (imember -> session ) != SWITCH_STATUS_SUCCESS ) {
2686
2693
continue ;
2687
2694
}
@@ -2690,6 +2697,11 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
2690
2697
switch_core_session_request_video_refresh (imember -> session );
2691
2698
}
2692
2699
2700
+ if (switch_core_session_media_flow (imember -> session , SWITCH_MEDIA_TYPE_VIDEO ) == SWITCH_MEDIA_FLOW_RECVONLY ) {
2701
+ continue ;
2702
+ }
2703
+
2704
+
2693
2705
if (send_keyframe ) {
2694
2706
switch_core_media_gen_key_frame (imember -> session );
2695
2707
}
@@ -3024,10 +3036,7 @@ void *SWITCH_THREAD_FUNC conference_video_super_muxing_thread_run(switch_thread_
3024
3036
continue ;
3025
3037
}
3026
3038
3027
- if (switch_core_session_media_flow (imember -> session , SWITCH_MEDIA_TYPE_VIDEO ) == SWITCH_MEDIA_FLOW_RECVONLY ) {
3028
- continue ;
3029
- }
3030
-
3039
+
3031
3040
if (!imember -> session || !switch_channel_test_flag (imember -> channel , CF_VIDEO ) ||
3032
3041
switch_core_session_read_lock (imember -> session ) != SWITCH_STATUS_SUCCESS ) {
3033
3042
continue ;
@@ -3037,6 +3046,10 @@ void *SWITCH_THREAD_FUNC conference_video_super_muxing_thread_run(switch_thread_
3037
3046
switch_core_session_request_video_refresh (imember -> session );
3038
3047
}
3039
3048
3049
+ if (switch_core_session_media_flow (imember -> session , SWITCH_MEDIA_TYPE_VIDEO ) == SWITCH_MEDIA_FLOW_RECVONLY ) {
3050
+ continue ;
3051
+ }
3052
+
3040
3053
if (send_keyframe ) {
3041
3054
switch_core_media_gen_key_frame (imember -> session );
3042
3055
}
@@ -3213,11 +3226,17 @@ void conference_video_set_floor_holder(conference_obj_t *conference, conference_
3213
3226
}
3214
3227
3215
3228
//VIDFLOOR
3216
- if (conference -> canvas_count == 1 && member && conference -> canvases [0 ] && conference -> canvases [0 ]-> layout_floor_id > -1 ) {
3217
- conference_video_attach_video_layer (member , conference -> canvases [0 ], conference -> canvases [0 ]-> layout_floor_id );
3218
- }
3219
-
3220
3229
if (member ) {
3230
+ mcu_canvas_t * canvas = NULL ;
3231
+
3232
+ if ((canvas = conference_video_get_canvas_locked (member ))) {
3233
+ if (canvas -> layout_floor_id > -1 ) {
3234
+ printf ("WTF ATTACH???\n" );
3235
+ conference_video_attach_video_layer (member , canvas , canvas -> layout_floor_id );
3236
+ }
3237
+ conference_video_release_canvas (& canvas );
3238
+ }
3239
+
3221
3240
switch_log_printf (SWITCH_CHANNEL_LOG , SWITCH_LOG_DEBUG1 , "Adding video floor %s\n" ,
3222
3241
switch_channel_get_name (member -> channel ));
3223
3242
0 commit comments