Gstreamer/Plugin-base/audiosink: AlsaSink AlsaSrc 结构解析

GstAudioBaseSink_DEBUG.txt

1. 引言


    GstAlsaPlugin 是Gstreamer中的重要插件,其代码位于 gst-plugin-base 中,应用可以通过它来实现音频的采集和播放。 它是通过ALSA libary API封装实现的,相较于 gst-plugin-good 包中的GstPulsePlugin 实现更高效,延迟更低。在分析GstAlsaSink 和GstAlsaSrc 实现之前我们先了解一下他们的继承关系和另外一个重要的类:GstAudioRingBuffer。

2. GstAlsaSink 详细信息


    在终端输入“gst-inspect-1.0 alsasink”便会打印出alsasink的详细信息,
Plugin Details:
  Name            alsa
  Description     ALSA plugin library
  Filename        /usr/local/lib/gstreamer-1.0/libgstalsa.so
  Version         1.5.0.1
  License         LGPL
  Source          module gst-plugins-base
  Source          release date 2014-11-12 06:24 (UTC)
  Binary package  GStreamer Base Plug-ins git
  Origin URL      Unknown package origin
    其中, libgstalsa.so 是AlsaPlugin的库文件,

GObject
 +----GInitiallyUnowned
       +----GstObject
             +----GstElement
                   +----GstBaseSink
                         +----GstAudioBaseSink
                               +----GstAudioSink
                                     +----GstAlsaSink
    以上为GstAlsaSink的继承关系树,其直接父类为GstAudioSink,对于需要自己写AudioPlugin的开发者来说Gstreamer推荐直接继承GstAudioSink这个基类,因为该类为其子类提供了一个简明的向下接口(如,open(),prepare(),write()等),子类只要按照功能复写这些虚函数即可,比较简便。在这个继承关系树中,我们只需要关心GstElement一下的各类,GstObject及以上的类属于GObject对象编程的范畴,对于初接触GObject的人有必要了解一下,对于理解该体系的代码很有帮助,请参考 https://developer.gnome.org/gobject/stable/ 。

Element Implementation:
  Has change_state() function: gst_audio_base_sink_change_state
    这里给出了AlsaSink 的Element实现函数change_state,它是在GstAudioBaseSink类中实现的。该函数根据pipleline的状态变化执行相应的配置、预处理和播放等操作。

3. GstAlsaSrc 详细信息


    GstAlsaSrc的详细信息内容和Sink的类似,不同的是在Src的继承关系树中多了GstPushSrc类,该类多在没有随机访问能力或访问速度较慢的场合使用,且多以push模式工作,alsasrc没有用到该类,所以在此就不多细述。
Plugin Details:
  Name alsa
  Description ALSA plugin library
  Filename /usr/local/lib/gstreamer-1.0/libgstalsa.so
  Version 1.5.0.1
  License LGPL
  Source module gst-plugins-base
  Source release date 2014-11-12 06:24 (UTC)
  Binary package GStreamer Base Plug-ins git
  Origin URL Unknown package origin

GObject
 +----GInitiallyUnowned
       +----GstO
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值