• 欢迎浏览“String me = Creater\忠实的资深Linux玩家;”,请文明浏览,理性发言,有侵犯你的权益请邮件我(creater@vip.qq.com).
  • 把任何的失败都当作一次尝试,不要自卑;把所有的成功都想成是一种幸运,不要自傲。
  •    4年前 (2014-10-28)  dsp |   抢沙发  68 
    文章评分 0 次,平均分 0.0
    • 每个link都有自己独立的任务/线程用于完成视频采集或播放等处理;
    • 每个link都可以处理来自多个通道的视频帧数据,每个通道的视频宽高和数据格式都可以不同;
    • A8作为HOST可以用来连接多个link形成数据流的链并对其进行控制;
    • 数据链被建立并启动时,数据链中的每个link将和它的下游link进行帧数据的交互;
    • links之间的帧数据交互可以在多个核心之间进行,并且并不需要A8 HOST的干涉,从而降低A8的开销;
    • 在数据链运行过程中用户可以发送控制信令给任意link来动态设置相关的link参数;

    link接口可以分成以下几类:

       
    • link API——被用户调用来配置和控制link的接口;
    •   

    • Inter link API——被其他links调用来交换帧数据的接口;
    •  

    •  link output queue——被其他links通过Inter Link API接口实用的帧buffer队列;

    link间的消息传递:
      

    每个Link通过一个32位的该LinkId来识别,ID高4位标识了这个Link是在哪个核上运行,低24位标识了该Link的名称.

      

    每个Link API都需要这个LinkID参数来发送消息,当用户发送消息到一个Link时,根据这ID函数内部判断这个消息是发给本地的Link还是远端核心的 Link;如果是本地的直接调用BIOS/LINUX API函数,否则就通过Syslink模块的MessageQ发送这个消息到指定的核心,让对端的核心调用对应的函数处理。

    link API
      

    下面来看看link API的部分接口及相关功能:

    System_linkCreate Creates a link ——allocates driver, codec, memory resources.
    System_linkGetInfo Get information about a link like number of channels, properties of each channel. MUST be called after System_linkCreate() for a link
    System_linkStart Start the link ——starts the driver or codec
    System_linkControl Send a link specific control command with optional arguments
    System_linkStop Stop the link —— stops the driver or codec
    System_linkDelete Deletes a link —— free’s driver, codec, memory resources

    Inter link API
      

    下面的介绍了在link内部实现的交换帧数据的API,对于用户来说,这部分API是不需要关心的:

    System_GetLinkInfoCb Function to return information about a link like number of channels, properties of each channel
    System_LinkGetOutputFramesCb unction to return captured or generated or output frames to the caller (another link)
    System_LinkPutEmptyFramesCb Function to release consumed frames back to the original link for reuse
    System_LinkGetOutputBitBufsCb Function to return generated or output bitstream frame to the caller (another link) –Valid only for Encode Link
    System_LinkPutEmptyBitBufsCb Function to release consumed bitstream frames back to the original link for reuse –Valid only for Encode Link

      

    在每个link中必须实现一些函数并在初始化时注册这些函数指针给link管理的核心模块,用于帧数据的获取、释放、dump相关状态等。

      

    对于任一个link想从它的上游link获取帧数据都需要调用link管理核心函数System_getLinksFullFrames(),该函数内部会发送消息到对应的上游link,触发该link向管理模块注册的回调函数System_LinkGetOutputFramesCb()将帧数据传递给该link;

      

    同样的,在当一个link想释放处理完毕的帧buffer给上游link时需要调用link管理核心函数 System_putLinksEmptyFrames(),该函数内部会发送消息到对应的上游link,触发它注册的回调函数 System_LinkPutEmptyFramesCb()将帧buffer回收,用于后续的数据处理;

     

    除特别注明外,本站所有文章均为String me = "Creater\忠实的资深Linux玩家";原创,转载请注明出处来自http://unix8.net/home.php/3801.html

    关于

    发表评论

    暂无评论

    切换注册

    登录

    忘记密码 ?

    切换登录

    注册

    扫一扫二维码分享