gstreamer插件开发手册

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
GStreamer 的开发框架使它有可能被用来编写任何类型的流媒体应用程序。基于 GStreamer 的程序开发框架使得编写任意类型的流媒体应用程序成为了可能。在编写处理 音频、视频或者两者皆有的应用程序时, GStreamer 可以让你的工作变得简单。GStreamer 并不受限于音频和视频处理, 它能够处理任意类型的数据流。管道的设计对于一般应用 的滤镜(filter)绰绰有余。这使得 GStreamer 成为一个优秀的框架,它甚至可以用来 设计出对延时有很高要求的高端音频应用程序。
————————
2
lenove 内部使用
————பைடு நூலகம்———
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
GStreamer 插件开发手册
25.1. 变更列表………………………………………………………………114 26. GStreamer 许可……………………………………………………………116
15. 支持动态参数……………………………………………………………………72 15.1. 开始………………………………………………………………………72 15.2. 数据处理循环……………………………………………………………72
16. MIDI………………………………………………………………………………74 17. 接口………………………………………………………………………………75
GStreamer 框架是基于插件的, 有些插件中提供了各种各样的多媒体数字信号编解码器, 也有些提供了其他的功能。所有的插件都能够被链接到任意的已经定义了的数据流管道 中。GStreamer 的管道能够被 GUI 编辑器编辑, 能够以 XML 文件来保存。这样的设计使得 管道程序库的消耗变得非常少。
本手册旨在帮助你了解 GStreamer 的框架 0.10.9.1 版)以便你能够开发新的插件来扩展 当前的功能。本手册通过用 C 语言开发一个示例插件──一个音频过滤器──来定位大 多数问题。然而,接下来的部分会通过编写其它类型的插件引入另一些问题,在本手册 的结尾介绍了一些 GStreamer 的 Python 绑定。
14. 时钟机制(Clocking)…………………………………………………………70 14.1. 时间格式…………………………………………………………………70 14.2. 时钟(Clocks)…………………………………………………………70 14.3. 在元件(elements)和时间里的数据流………………………………70 14.4. 每个元件的义务…………………………………………………………71
GStreamer 最显著的用途是在构建一个播放器上。GStreamer 已经支持很多格式的文件了, 包括:MP3, Ogg/Vorbis, MPEG-1/2, AVI, Quicktime, mod 等等。从这个角度看,GStreamer 更象是一个播放器。但是它主要的优点确是在于: 它的可插入组件能够很方便的接入到 任意的管道当中。这个优点使得利用 GStreamer 编写一个万能的可编辑音视频应用程序 成为可能。
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
GStreamer 插件开发手册
13. 请求(Request)和间或(Sometimes)衬垫(pads)………………………64 13.1. 间或衬垫…………………………………………………………………64 13.2. 请求衬垫…………………………………………………………………68
26.1. 如何为你给 GStreamer 所写的代码加许可 ……………………116
————————
3
lenove 内部使用
————————
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
I. 介绍
GStreamer 插件开发手册
GStreamer 是一个用来创建流媒体应用程序的非常强大和通用的框架。GStreamer 框架的 许多优点来源于它的模块性 :GStreamer 可以无缝地接纳新的插件模块。但是由于模块 性和强大的功能通常以极高的复杂性为代价(例如 CORBA),编写一个新的插件并不总是 一件简单的事。
17.1. 怎样实现接口……………………………………………………………75 17.2. URI 接口…………………………………………………………………76 17.3. Mixer 接口………………………………………………………………77 17.4. Tuner 接口………………………………………………………………80 17.5. 颜色平衡(Color Balance)接口 ……………………………………83 17.6. 属性探测(Property Probe)接口……………………………………83 17.7. X Overlay 接口 ……………………………………………………… 87 17.8. 导航(Navigation)接口………………………………………………89 18. 标签(元数据和流信息)………………………………………………………90 18.1. 从流中读取标签…………………………………………………………90 18.2. 将标签写入流……………………………………………………………92 19. 事件:定位,导航及更多………………………………………………………96 19.1. 下游事件…………………………………………………………………96 19.2. 上游事件…………………………………………………………………97 19.3. 事件汇总…………………………………………………………………98 IV. 创建特殊类型的元件………………………………………………………………102 20. Pre-made 基类…………………………………………………………………103 20.1. 编写一个 sink…………………………………………………………103 20.2. 编写一个源(source)………………………………………………105 20.3. 编写一个转换元件(transformation element) ……………… 106 21. 编写一个分流器(Demuxer)或解析器(Parser)……………………… 107 22. 编写一个 N-to-1 元件或混合器(Muxer)…………………………………108 23. 编写一个管理器(Manager)……………………………………………… 109 V. 附录…………………………………………………………………………………110 24. 编写一个元件该检查的方方面面……………………………………………111 24.1. 关于状态………………………………………………………………111 24.2. 调试……………………………………………………………………111 24.3. 查询,事件及相关……………………………………………………112 24.4. 测试你的元件…………………………………………………………112 25. 将 0.8 的插件移植到 0.9 ………………………………………………… 114
————————
4
lenove 内部使用
————————
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
GStreamer 插件开发手册
Chapter 1. 前言
1.1. GStreamer 是什么?
GStreamer 是一个创建流媒体应用程序的框架。其基本设计思想来自于俄勒冈(Oregon) 研究生学院有关视频管道的创意, 同时也借鉴了 DirectShow 的设计思想。
目录 I. 介绍………………………………………………………………………………………4 1. 前言…………………………………………………………………………………5 1.1.GStreamer 是什么? …………………………………………………………5 1.2. 谁应该读该指南?……………………………………………………………5 1.3. 预备知识 ……………………………………………………………………6 1.4. 该指南的结构 ………………………………………………………………6 2. 基础…………………………………………………………………………………9 2.1. 元件(Elements)和插件(Plugins)……………………………………9 2.2. 衬垫(Pads) ………………………………………………………………9 2.3. 数据(Data),缓冲区(Buffers)和事件(Events) ………………10 2.4. MIME 类型(Mimetypes)和属性 …………………………………………11 II. 编写一个插件…………………………………………………………………………13 3. 构建样板(Boilerplate)………………………………………………………14 3.1. 获取 GStreamer 插件模板…………………………………………………14 3.2. 使用项目戳(Project Stamp) …………………………………………14 3.3. 检查基本代码………………………………………………………………15 3.4. GstElementDetails ………………………………………………………16 3.5. GstStaticPadTemplate……………………………………………………17 3.6. 构造函数……………………………………………………………………19 3.7. Plugin_init 函数 …………………………………………………………19 4. 指定衬垫(pads)…………………………………………………………………21 4.1. Setcaps-函数………………………………………………………………22 5. 链函数(The chain function)…………………………………………………24 6. 什么是状态? ………………………………………………………………………26 6.1. 管理滤镜的状态……………………………………………………………26 7. 添加参数……………………………………………………………………………29 8. 信号…………………………………………………………………………………32 9. 编写测试程序………………………………………………………………………33 III. 高阶滤镜概念…………………………………………………………………………36 10. Caps 协商(negotiation)………………………………………………………37 10.1. Caps 协商实例……………………………………………………………37 10.2. 固定 caps…………………………………………………………………38 10.3. 下游 caps 协商……………………………………………………………38 10.4. 上游 caps(再)协商……………………………………………………41 10.5. 实现一个 getcaps 函数…………………………………………………42 11. 不同的调度模式…………………………………………………………………43 11.1. 衬垫(Pad)激活时机…………………………………………………43 11.2. 衬垫(Pads)驱动管道(pipeline)…………………………………44 11.3. 提供随机访问……………………………………………………………47 12. 类型和属性………………………………………………………………………49 12.1. 创建一个简单的格式来测试……………………………………………49 12.2. Typefind 函数和 Autoplugging ………………………………………49 12.3. 已定义类型列表…………………………………………………………51
相关文档
最新文档