分析一个通用的rtsp server实现采集模块

       最后分析一下,采集的部分,对于采集,有多种方式,当然例子都是模拟采集,直接从本地文件读取数据,

关键在于这里,采集的部分读取到ring buffer里面,这里就是为了同步!

     采集的不管从哪里拿数据,形式都是次要的。

     最后稍微讲下,如何实现api的统一性,给别人调用!

     这里就需要用到回调函数的概念!

     Callback最本质的特征包括两点:注册和触发

     C++中如何将类成员函数作为回调函数使用,必须是静态方法吗?

      必须是静态成员函数或者全局函数来实现回调函数,原因是普通的C++成员函数都隐含了一个传递函数作为参数,即this指针,C++通过传递this指针给成员函数从而实现函数可以访问C++的数据成员。由于this指针的原因,使得一个普通成员函数作为回调函数时就会因为隐含的this指针问题使得函数参数个数不匹配,从而导致回调函数编译失败。

    下面举一个例子来说明下:
 首先声明下,
void register_open_thread_func( FuncStartOrClosethread Funpenthread ){
    m_FunOpenthread = Funopenthread;
}
void register_close_thread_func( FuncStartOrClosethread Funclosethread){
    m_FunClosethread = Funcclosethread;
}
void open_cap(){
    m_FunOpenthread();
}
void close_cap(){
    m_FunClosethread();
}

然后需要定义基本的全部静态
    typedef int   ( *FuncStartOrClosethread )();

最后定义即可:
    FuncStartOrClosethread m_FunOpenthread;
    FuncStartOrClosethread m_FunClosethread;

这样一个回调函数就实现了,简单的c语言实现!

使用的话,在main函数如下:
   register_open_thread_func(true_cap)
   register_close_thread_func(close_cap)


这样就隔离了!可以在true_cap和close_cap里面做真正的事情!

那么采集的时机在什么时候,
前面分析rtsp交互的时候,收到play参数的时候,说明可以采集数据
这里调用采集的回调api就ok了!
整个采集的逻辑比较简单,至于具体的实现,不再讨论!

还有如果要采取binder形式拿数据的话,这时候,启动一个binder server端,
然后坐等收数据就行了!

    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值