freeswitch/conference分析

该博客深入探讨了Freeswitch中conference模块的工作原理。当会议不存在时,系统会创建会议。对于采用MUX模式的会议,它启动混屏线程进行视频数据混合,并将混合后的内容发送给所有成员。此外,还启动了video INPUT线程,通过conference_video_thread_callback回调函数,将视频数据直接分发给成员或推送到video_queue中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

member由conference_function进入:


1、查找会议,

    如果会议不存在,则

2、创建会议,

      创建会议画布
      conference_video_parse_layouts:根据conference_layouts.conf 配置创建layouts,配置中的所有layout都加载,并存储在layout_hash中,最多8*8组
      canvases[]每一个canvas都有一个timer   

      如果是MUX,则【创建混屏线程】,在混屏线程中,video数据混屏后的数据丢入每个成员的mux_out_queue中,如果多cpu,则img刷新放到mux write线程,负责当前线程做。


3、启动【会议线程】:conference_launch_thread(conference)
    会议线程里做混音:从audio_buffer读取数据,通过switch_buffer_write将混音数据写入每个成员的omember->mux_buffer

4、如果是:MUX会议,则为每个成员创建用于混屏的video_queue,mux_out_queue对立。
5、将成员添加到会议室.
6、如果是:MUX会议,则
      启动【video write back 线程】conference_video_launch_muxing_write_thread ,从自己的mux_out_queue队列中获取video数据(混过屏后的),必要时刷新layer->img->canvas->img.

7、启动【video

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值