gstreamer插件开发手册

  • 格式:pdf
  • 大小:664.90 KB
  • 文档页数:116
GStreamer 最显著的用途是在构建一个播放器上。GStreamer 已经支持很多格式的文件了, 包括:MP3, Ogg/Vorbis, MPEG-1/2, AVI, Quicktime, mod 等等。从这个角度看,GStreamer 更象是一个播放器。但是它主要的优点确是在于: 它的可插入组件能够很方便的接入到 任意的管道当中。这个优点使得利用 GStreamer 编写一个万能的可编辑音视频应用程序 成为可能。
26.1. 如何为你给 GStreamer 所写的代码加许可 ……………………116
————————
3
lenove 内部使用
————————
PDF 文件使用 "pdfFactory Pro" 试用版本创建
I. 介绍
GStreamer 插件开发手册
GStreamer 是一个用来创建流媒体应用程序的非常强大和通用的框架。GStreamer 框架的 许多优点来源于它的模块性 :GStreamer 可以无缝地接纳新的插件模块。但是由于模块 性和强大的功能通常以极高的复杂性为代价(例如 CORBA),编写一个新的插件并不总是 一件简单的事。
PDF 文件使用 "pdfFactory Pro" 试用版本创建
GStreamer 插件开发手册
13. 请求(Request)和间或(Sometimes)衬垫(pads)………………………64 13.1. 间或衬垫…………………………………………………………………64 13.2. 请求衬垫…………………………………………………………………68
14. 时钟机制(Clocking)…………………………………………………………70 14.1. 时间格式…………………………………………………………………70 14.2. 时钟(Clocks)…………………………………………………………70 14.3. 在元件(elements)和时间里的数据流………………………………70 14.4. 每个元件的义务…………………………………………………………71
本手册旨在帮助你了解 GStreamer 的框架 0.10.9.1 版)以便你能够开发新的插件来扩展 当前的功能。本手册通过用 C 语言开发一个示例插件──一个音频过滤器──来定位大 多数问题。然而,接下来的部分会通过编写其它类型的插件引入另一些问题,在本手册 的结尾介绍了一些 GStreamer 的 Python 绑定。
目录 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
————————
2
lenove 内部使用
————————
PDF 文件使用 "pdfFactory Pro" 试用版本创建
GStreamer 插件开发手册
25.1. 变更列表………………………………………………………………114 26. GStreamer 许可……………………………………………………………116
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
GStreamer 框架是基于插件的, 有些插件中提供了各种各样的多媒体数字信号编解码器, 也有些提供了其他的功能。所有的插件都能够被链接到任意的已经定义了的数据流管道 中。GStreamer 的管道能够被 GUI 编辑器编辑, 能够以 XML 文件来保存。这样的设计使得 管道程序库的消耗变得非常少。