视频会议订阅模式设计

之前讨论的思路:
  • 让每一个会议成员的结构体conference_member_t对象中增加一个链表,保存多个要订阅这个成员视频数据的其他成员对象的指针。
  • 但是这样做有一个问题,显然某成员只能订阅另外一个成员的视频而不能同时订阅多个,因此上面这种订阅记录方式有可能导致订阅多个,额外增加判断方式也麻烦。
  • 另一个麻烦在于使用键控时是操作的当前这个用户线程,而若是要成功实现订阅却要在当前用户线程修改其他用户的数据,会增加锁的使用和复杂度。
  • 方便之处在于遍历读取视频数据到该成员时,能够很方便的将该视频数据转发给订阅了的其他成员。
换一种思路:
  • 在每一个会议member的结构体中增加一个conference_member_t *target_video_member;变量,代表该成员想订阅的目标成员。
  • 如果该目标成员指针为NULL,说明没有想要特殊订阅的,那就按照正常逻辑去获取video_floor_holder成员的视频数据。
  • 如果有想订阅的目标成员,那就去获取这个目标成员的当前一帧视频数据。
  • 首先用一个for循环遍历读取每个会议成员的一帧视频数据,然后保存到该member的结构体对象中。
  • 再用一个for循环遍历各个成员,根据订阅的目标成员去读取对应的视频数据。
  • 以上代码修改主要在conference_video_thread_run函数中。
如何绑定按键订阅指定用户的问题?
  • conference_loop_input函数中,会对应每个member开启的一个线程,去循环接收按键控制信息。比如在客户端按键'0',则在该函数中会接收到dtmf字符'0',然后转到调用switch_ivr_dmachine_feed函数将字符传到switch_ivr_dmachine_ping函数去检查该字符是否有匹配的执行动作函数调用,若是找到了那就执行该动作函数。
  • 键控字符和执行动作有一个对应的结构体映射表:
static struct _mapping control_mappings[] = {
    {"mute", conference_loop_fn_mute_toggle},
     ...
    {"vid-floor-force", conference_loop_fn_vid_floor_force}
};
  • 然后在member_bind_controls函数中,会读取conference.conf.xml配置文件中指定的按键字符和对应的动作配置,然后绑定上面的回调函数。
<caller-controls>
    <group name="default">
      <control action="mute" digits="0"/>
       ...
      <control action="vid-floor-force" digits="#"/>
    </group>
  </caller-controls>
  • 因此,若要新增订阅指定会议成员的视频键控功能,需要在以上几个地方进行修改,新增一个执行键控动作的回调函数。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,050评论 4 370
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,538评论 1 306
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,673评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,622评论 0 218
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,047评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,974评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,129评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,893评论 0 209
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,654评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,828评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,297评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,619评论 3 262
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,326评论 3 243
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,176评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,975评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,118评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,909评论 2 278

推荐阅读更多精彩内容

  • 教程一:视频截图(Tutorial 01: Making Screencaps) 首先我们需要了解视频文件的一些基...
    90后的思维阅读 4,519评论 0 3
  • 课程第一天,全身心投入现场,60个同学,不同镜子照射。更多的是觉察,时不时心脑对话,丰富的一天!
    少鹰阅读 110评论 0 0
  • 南康啊,今年36岁了吧。还在等张先生吗?张先生,大概,嗯……岁月静好,现世安稳吗?应该是这样的吧。安如你愿……那么...
    柒篱阅读 1,031评论 1 2
  • 在天亮时祈求长久,在天黑时等待天亮
    Ragnarok_阅读 120评论 0 0
  • 红叶醉语,我在想你 细雨敲窗红叶醉语梧桐树下画有你的样子抚一曲高山流水演绎千古传奇 你我相识在落叶纷飞的秋季犹如一...
    叶冷随记阅读 394评论 0 1