
GStreamer专栏
文章平均质量分 84
基于i.MX6开发板中的Gstreamer框架,简单分析应用程序的编写,主要目的是读懂其中的插件源码,能达到自己编写插件的目的。
yanbixing123
曾师从于:世界芯片设计前10某公司,传说中的世界500强某米,被美丽国实体清单拉黑的某AI巨头,嵌入式黄埔军校某台企;毕业于某非985,211的双一流学校;
Camera算法,HAL,Android MultiMedia Framework,StageFright,OpenMAX;
嵌入式uboot,linux驱动,Andorid底层,i.MX6 IPU专栏,GStreamer专栏^_^~
小富靠勤,大富靠命。技术是通向小富的一条现实可行的路径。祝大家顺利~~~
展开
-
1. 插件编写的原则及文件目录分析
gstreamer的相关路径,有两个路径,如下所示: fsl-release-bsp/build-x11/tmp/work/imx6qsabresd-poky-linux-gnueabi/gst1.0-fsl-plugin/4.0.8-r0/gst1.0-fsl-plugins-4.0.8 fsl-release-bsp/build-x11/tmp/work/cortexa9hf-...原创 2016-10-30 09:22:35 · 1679 阅读 · 1 评论 -
2. gobject中G_DEFINE_TYPE和g_object_new流程简介
C语言如何实现gobject面向对象支持呢?很简单,我们只需要建立自己的头文件,并在 .c 文件中添加一个宏定义G_DEFINE_TYPE即可。 G_DEFINE_TYPE的流程(G_DEFINE_TYPE在 GLIB 的gobject/gtype.h 中定义):#define G_DEFINE_TYPE(TN, t_n, T_P) G_DEFINE_TYPE_EXTENDED (TN,原创 2016-10-30 09:27:29 · 7482 阅读 · 0 评论 -
3. init函数和class_init函数的讲解
如何去使用GObject去构建一个所谓的“对象”呢?GObject中每个类要定义两个结构体,假设你要定义的类型为People,那么你要定义两个结构分别名为People和PeopleClass,估计刚接触的人会有些晕,一般的C++啊,JAVA什么的都是直接一个class了事儿了。但记住C本身并没有面向对象的机制,这里这样做也仅仅是为了模拟。 名为PeopleClass的结构是表示类的结构,而名为Pe原创 2016-10-30 09:34:24 · 6117 阅读 · 2 评论 -
4. gstimxv4l2src.c源码分析
由于这个文件中会调用到GStreamer 1.0 Core Reference Manual中的很多函数,但是如果将这些函数的分析放在代码分析中的话,就会严重影响可读性,于是将这些函数的讲解都放在《gstreamer插件所用函数整理》这个文件中,这两个文件中的标号都是相同的,如果遇到不理解的函数,可以去那个文件中搜索来看。 (一)属性相关的设置关于这一节,它对应《插件开发手册原创 2016-10-30 10:03:32 · 6038 阅读 · 0 评论 -
5. gstreamer插件所用函数整理
gstreamer插件所用函数整理2016-10-06 08:30:46(一)设置插件属性相关的函数:(1) g_param_spec_boolean ()函数链接如下:https://developer.gnome.org/gobject/stable/gobject-Standard-Parameter-and-Value-Types.html GParamSpec原创 2016-10-30 10:05:47 · 3600 阅读 · 0 评论 -
6. Gobject 学习总结
简单的来说,GObject是一个程序库,它可以帮助我们使用C语言编写面向对象的程序。 很多人被灌输了这样一种概念:要写面向对象程序,那么就需要学习一种面向对象编程语言,例如C++、Java、C# 等等,而 C 语言是用来编写结构化程序的。事实上,面向对象只是一种编程思想,不是一种编程语言。换句话说,面向对象是一种游戏规则,它不是游戏。GObject 告诉我们,使用 C 语言编写程序时,可以原创 2016-10-30 10:13:43 · 4445 阅读 · 0 评论 -
7. GStreamer建议的学习步骤和网页链接汇总
学习步骤:0. 可以看看我做的《GStreamer讲解》ppt入门,里面对于很多知识的入门讲解,不用积分,下载链接:1. 学习《GStreamer中文开发手册.pdf》,这时候结合《GStreamer基础教程》和《GStreamer播放教程》来看;2. 如果想要深入理解应用开发的话,可以写一个项目试试手,参看《gstreamerMP3播放器项目》,网页链接为:http://spac原创 2016-10-30 10:16:18 · 6390 阅读 · 4 评论 -
使用C语言进行面向对象的开发--GObject入门[1]
转自:blog.youkuaiyun.com/pingf0 或www.cnblogs.com/pingf“C语言是简单的,因为它本身并没有什么特别的内容,标准C并没有提供多少函式(其实一般用不到的提供了很多),也没有提供面向对象的机制,但也正因此使得要用C编写“美丽”的程序变得复杂起来。复杂的原因其实很简单,一切的一切都要我们自己去实现。最近这段时间集中攻了下GObject,虽然只是会了些皮毛转载 2016-10-18 13:07:52 · 1258 阅读 · 0 评论 -
使用C语言进行面向对象的开发--GObject入门[2]
PART 2.在正式开始GObject的学习之前,还要简单提一下大名鼎鼎的建立在GObject系统之上的桌面图形库Gtk,先来个最简单的程序看看。#include int main( int argc, char *argv[]){ GtkWidget *window; gtk_init(&argc, &argv); window = gtk_wind转载 2016-10-18 13:11:13 · 841 阅读 · 0 评论 -
使用C语言进行面向对象的开发--GObject入门[3]
转自:blog.youkuaiyun.com/pingf0 或www.cnblogs.com/pingfPart 3终于要谈正题了,如何使用GObject去构件一个所谓的“对象”呢?其实是一件简单但却痛苦的事情。在罗列代码之前,还是要啰嗦两句。GObject中每个类要定义两个结构体,假设你要定义的类型为People,那么你要定义两个结构分别名为People和PeopleClass,估计 刚转载 2016-10-18 13:14:29 · 1299 阅读 · 0 评论 -
使用C语言进行面向对象的开发--GObject入门[4]
转自: blog.youkuaiyun.com/pingf0 或www.cnblogs.com/pingfPart 4 接上文.前面定义了几个结构,我们可以把那些东西放在一个jc_boy.h文件中,下面开始介绍如何去实现这个BOY类,也就是要放在jc_boy.c中的部分。对于GObject而言,有了实例结构,有了类结构,自然要有如何初始化的函式,毕竟这是C语言吗,没有那么方便的事儿转载 2016-10-18 13:17:55 · 861 阅读 · 0 评论 -
使用C语言进行面向对象的开发--GObject入门[5]
转自: blog.youkuaiyun.com/pingf0 或www.cnblogs.com/pingf接上文 这一部分简要介绍下类的析构,或者成为终结。 还是多说几句,也算是对前文的补充 1.生成一个类是由父到子,析构的时候自然与之相对是由子到父。 2.GObject的内存管理并没有采用垃圾回收的方式【JAVA就采用此方式】,而是采用了引用计数的方式。 具体垃转载 2016-10-18 13:20:03 · 744 阅读 · 0 评论 -
使用C语言进行面向对象的开发--GObject入门[6]
转自: blog.youkuaiyun.com/pingf0 或www.cnblogs.com/pingfPart 6接上文。和官方的tutorial一样,在此部分,简要叙述下GObject中的方法。其分为三类,非虚公共方法虚公共方法虚私有方法 公共方法比较简单,所以也就没啥好说的了,看代码,其实就是明白着从外部调用/* declaration in t转载 2016-10-18 13:22:38 · 648 阅读 · 0 评论 -
使用C语言进行面向对象的开发--GObject入门[7]
转自: blog.youkuaiyun.com/pingf0 或www.cnblogs.com/pingfPart 7接上文其实关于GObject中对象的构造,继承,方法的重载,在前面的几部份中都已经介绍。这一部分仅仅是为了补充些琐碎的知识,而不会涉及信号啊,属性啊,接口啊。。。不拉不拉。。。链上/溯回官方的GObject tutorial中有这么一章节,叫chaining u转载 2016-10-18 13:25:52 · 718 阅读 · 0 评论 -
使用C语言进行面向对象的开发--GObject入门[8]
转自: blog.youkuaiyun.com/pingf0 或www.cnblogs.com/pingf首先要更正一个前文中的“口误”,关于翻译的问题。就是override和overload,大多数的翻译方法是重写和重载。但是有时我在叙述时都用重载了,潜意识里认为重写这个词不是很顺。本质上glib是不支持重载的,这里的不支持主要是在单一文件中不支持相同的函式名。但是好在c转载 2016-10-18 13:29:49 · 915 阅读 · 0 评论 -
使用C语言进行面向对象的开发--GObject入门[9]
转自: blog.youkuaiyun.com/pingf0 或www.cnblogs.com/pingfPART 9 注:这一部分的大部分内容源自google wallpaper上对gtk mail archive上关于gobject的一些翻译,这里只是引用了下【链接见前文】,因为原文对此部分的描述还是相当不错的,至少比我觉的自己要写还写不了这么好。 属性转载 2016-10-18 13:36:40 · 1818 阅读 · 0 评论 -
GObject 学习笔记汇总---1
转自: http://garfileo.is-programmer.com/2011/7/14/gobject-notes.27977.html去年,曾经用了 10 多天的时间学习了一番 GObject,当时疏于心得的总结,而现在已经忘记的差不多了。最近因为观察到 GtkGLExt 项目没有跟进 gtk+-3.0 的意思,便想自己动手,丰衣足食,要么去改造现有的 gtk转载 2016-10-18 14:52:12 · 1246 阅读 · 0 评论 -
GObject 学习笔记汇总---2
转自: http://garfileo.is-programmer.com/2011/2/27/the-analog-of-classed-type-based-gobject.24798.html事实上,有关 GObject 库的学习与使用,GObject 库参考手册提供了一份简短且过于晦涩的指南。如果你能够理解它,那么完全可以无视这篇以及后续的几篇文章。倘若没有明白那份指南转载 2016-10-18 15:00:00 · 1243 阅读 · 0 评论 -
GObject 学习笔记汇总---3
转自:http://garfileo.is-programmer.com/2011/2/28/data-hiden.24848.htmlGObject 子类对象的私有属性模拟上一篇文章“使用 GObject 库模拟类的数据封装形式”讲述了 GObject 子类化过程,本文以其为基础,进一步讲述如何对数据进行隐藏,即对面向对象程序设计中的“私有属性”概念进行模拟。非类类型数据的隐转载 2016-10-18 15:05:29 · 861 阅读 · 0 评论 -
GObject 学习笔记汇总---4
转自: http://garfileo.is-programmer.com/2011/3/4/accessing-properties-of-gobject-subclass.24952.htmlGObject 子类私有属性的外部访问之前,写了一篇 GObject 劝学的文章 [1],还有两篇有关 GObject 子类对象数据封装的文章[2,3]。虽然,创建转载 2016-10-18 15:15:13 · 1101 阅读 · 1 评论 -
GObject 学习笔记汇总---5
转自: http://garfileo.is-programmer.com/2011/3/6/reviewing-the-old-and-understand-the-new.25017.html温故而知新也许很多人将孔子所说的“温故而知新”理解为:温习学过的知识,从中获得新的领悟。但是,我更倾向于另一种解释:温习学过的知识,继续学习新的知识。本文借助一个更加平易和现实转载 2016-10-18 15:23:03 · 919 阅读 · 0 评论 -
GObject 学习笔记汇总---6
转自: garfileo.is-programmer.com/2011/3/8/inherition-of-gobject.25106.htmlGObject 的子类继承在文档 [1] 中,我们构造了一个 KbBibtex 类,其构造过程看似挺复杂,但实际上只需要动手尝试一下,即可明白 GObject 子类化的各项步骤的意义与作用。许多事物之所以被认为复杂,是因为大家在观望。转载 2016-10-18 15:26:28 · 762 阅读 · 0 评论 -
GObject 学习笔记汇总---7
转自: garfileo.is-programmer.com/2011/3/15/inheritance-and-interface.25299.html继承与接口本文仅仅表达了我对面向对象程序设计方法中继承和接口用法的理解。在文档 [1] 中,讨论了有关 GObject 子类继承的问题,并在后半部分指出了类的继承所存在的问题,并企图挖掘类的继承是多么的没用。这显然是徒劳的转载 2016-10-18 15:31:51 · 725 阅读 · 0 评论 -
GObject 学习笔记汇总---8
转自: http://garfileo.is-programmer.com/2011/3/16/gobject-interface.25338.htmlGObject 对接口的模拟在文档 [1] 中谈到接口古已有之,但是类的继承赋予了它一些新的概念。本文结合实例,学习如何使用 GObject 库所提供的接口类型来表达这些概念。接口声明下面的代码(文件名 my-iusb.转载 2016-10-18 15:36:21 · 925 阅读 · 0 评论 -
GObject 学习笔记汇总---9
转自: http://garfileo.is-programmer.com/2011/3/20/function-pointer-and-callback-function-and-closure.25453.html函数指针、回调函数与 GObject 闭包本文首先复习一下基于 C 语言函数指针和回调函数的概念,进而学习 GObject 闭包的用法。这些知识都与面向对象程序设转载 2016-10-18 15:44:36 · 1081 阅读 · 0 评论 -
GObject 学习笔记汇总---10
转自: http://garfileo.is-programmer.com/2011/3/21/gobject-signal.25477.htmlGObject 的信号机制——概览手册所述,GObject 信号(Gignal)主要用于特定事件与响应者之间的连接,它与操作系统级中的信号没有什么关系。例如,当我向一个文件中写入数据的时候,我期望能够有一个或多个函数响应这个“向文件写转载 2016-10-18 15:48:41 · 813 阅读 · 0 评论 -
GObject 学习笔记汇总---11
转自: http://garfileo.is-programmer.com/2011/3/22/gobject-deconstruction.25485.htmlGObject 子类对象的析构过程在“GObject 的信号机制”文中,谈到 GObject 子类对象的析构过程分为两个阶段,第一阶段是 dispose,第二阶段是 finalize。之所以划分成两个阶段而不是一步到位转载 2016-10-18 15:51:41 · 1298 阅读 · 0 评论 -
GObject 学习笔记汇总---12
转自: http://garfileo.is-programmer.com/2011/3/25/gobject-signal-extra-1.25576.htmlGObject 信号机制——信号注册上一篇文档“GObject 的信号机制”只是挖了一个坑便结束了,本篇尝试填坑,不过也不敢有所保证。因为我也不确定会不会因为被 GObject 的信号内幕再次搞晕。我们先老老实实的转载 2016-10-18 19:25:19 · 849 阅读 · 0 评论 -
GObject 学习笔记汇总---13
转自: http://garfileo.is-programmer.com/2011/3/27/gobject-signal-extra-2.25621.htmlGObject 信号机制——信号 Accumulator在文档 [1] 中,从外围对 GObject 信号注册的过程进行了初步分析。生命不息,折腾不止,我们应当以 Adrian Hands 大叔为榜样。所以,本文转载 2016-10-18 19:33:49 · 921 阅读 · 0 评论 -
GObject 学习笔记汇总---14
转自: http://garfileo.is-programmer.com/2011/4/4/gobject-signal-connection.25847.htmlGObject 信号机制——信号连接文档 [1,2] 讲述了 GObject 信号注册的相关细节,本文进一步分析信号与闭包的关联问题,即信号连接。事实上,在文档 [1,2] 中我们已对信号连接有转载 2016-10-18 19:34:59 · 830 阅读 · 0 评论 -
GObject 学习笔记汇总---15
转自: http://garfileo.is-programmer.com/2011/3/28/a-simple-example-for-gobject-introspection.25662.htmlGObject Introspection 的简单示例这段时间以来,一直在跟 GObject 死磕。除了有点枯燥与乏味之外,也没什么不适,就是一堆繁琐但还算是直观的 C 代码罢了转载 2016-10-18 19:43:10 · 1126 阅读 · 0 评论