Gstreamer中GstBuffer 结构体的定义在哪找??

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gstreamer中GstBuffer 结构体的定义在哪找??相关的知识,希望对你有一定的参考价值。

GStreamer无疑是一个美观的设计,但初学者往往觉得结构复杂,难以掌握。编译起来也很麻烦:) 本文列出了编译和配置GStreamer的主要步骤,给需要的人提供一个参考。 像其它的Linux开源项目一样,GStreamer也是采用包括autoconf,automake在内的GNU build system来编译的。而且,GStreamer在编译和安装时还要依赖于其它的库,这些库至少包括:pkg-configGLiblibxml2 liboil
这些库都使用pkg-config来提供include路径和library路径等编译信息,而不是像很多开源项目一样在执行configure脚本的时候用CPPFLAGS/CFLAGS环境变量来指定。 这些库很容易通过google找到,一般以“*.tar.gz”或“*.tar.bz2”压缩文件的形式存在。使用tar命令解压:tar xzf *.tar.gz或tar xjf *.tar.bz2 解压后一般会生成一个源文件目录,先面的命令都要进入到各个库的源文件目录内执行。 具体编译和安装步骤如下: (1)确定各个库的安装路径。为描述方便,假设如下的安装路径:pkg-config: /usr/local/install-pkg-config/Glib: /usr/local/install-glib/libxml2: /usr/local/install-libxml2/liboil: /usr/local/install-liboil/GStreamer Core: /usr/local/install-gstcore/GStreamer Base Plugins: /usr/local/install-plugins-base/ (2)设置环境变量。下面的命令按bshell/bash的语法,cshell中应该用setenv。 export PATH=/usr/local/install-pkg-config/bin:$PATH
export PKG_CONFIG_PATH="/usr/local/install-glib/lib/pkgconfig:/usr/local/install-libxml2/lib/pkgconfig:/usr/local/install-liboil/lib/pkgconfig:/usr/local/install-gstcore/lib/pkgconfig:/usr/local/install-plugins-base/lib/pkgconfig"
第一个命令是将pkg-config这个工具加入到PATH变量中,这样在执行configure脚本时就能够调到刚刚安装好的pkg-config。 第二个命令是设置pkg-config的搜索路径,在执行configure脚本时会调用pkg-config得到所依赖的头文件和库。 (3)编译和安装pkg-config。 ./configure --prefix=/usr/local/install-pkg-configmakemake install
执行configure脚本时用--prefix指定安装路径 (4)编译和安装GLib。 ./configure --prefix=/usr/local/install-glibmakerm -rf /usr/local/install-glib/include/glib.h /usr/local/install-glib/include/gmodule.h
make install
(5)编译和安装libxml2。 ./configure --prefix=/usr/local/install-libxml2makemake install
(6)编译和安装liboil。 ./configure --prefix/usr/local/install-liboilmakemake install
(7)编译和安装GStreamer Core。 ./configure --prefix=/usr/local/install-gstcoremakemake check (optional)
make install
(8)编译和安装GStreamer Base Plugins。 ./configure --prefix=/usr/local/install-plugins-basemakemake check (optional)
make install
(9)编译和安装GStreamer的其它plugins,包括gst-plugins-good,gst-plugins-bad等。可选。与编译安装gst-plugins-base类似。 (10)设置运行环境。要运行GStreamer,需要设置GST_PLUGIN_PATH环境变量,指明GStreamer Core和Plugins的库路径。 export GST_PLUGIN_PATH="=/usr/local/gst/install-gstcore/lib:=/usr/local/install-plugins-base/lib"
如果还安装了其它plugins,也要加到GST_PLUGIN_PATH路径里。 另外,如果已有的tool chain版本不够,还需要更新tool chain。常需要做的是安装新版本的autoconf和automake。
参考技术A struct GstBuffer
GstMiniObject mini_object;

GstBufferPool *pool;

/* timestamp */
GstClockTime pts;
GstClockTime dts;
GstClockTime duration;

/* media specific offset */
guint64 offset;
guint64 offset_end;
;

结构体的类属性特征

前言

在C/C++中,结构体和类存在的许多相似的特征,本文旨在展示出两者之间的共同点。

结构体的类特征

1. 结构体的构造函数和析构函数

结构体和类一样,也有构造函数和析构函数

#include<iostream>
using namespace std;
struct Person{
	//属性 
	int age;
	string name;
	
	//函数 
	Person(int ag,string nam){
		age = ag;
		name = nam;
	}
	void method1(){
		cout << "age:"<<age<<endl;
		cout << "name:"<<name<<endl;
	}
};


int main(){
	Person *p1 = new Person(18,"jack");
	p1->method1();
	return 0;
}

运行结果:

age :18
name :jack

2.结构体继承

结构体与类一样,都具有继承的属性,需要注意的是,因为结构体默认的访问权限为public,所以结构体继承之后所有的属性都是默认为public,不需要关注权限的问题。

#include<iostream>
using namespace std;
struct Person{
	//属性 
	int age;
	string name;
	
	//函数 
	Person(int ag,string nam):age(ag),name(nam){}
	void method1(){
		cout << "age:"<<age<<endl;
		cout << "name:"<<name<<endl;
	}
};

struct Chinese:Person{	
	Chinese(int ag,string nam):Person(ag,nam){}
	void method2(){
		cout << "I am a Chinese" << endl;
	}
};

int main(){
	Chinese *p2 = new Chinese(18,"jack");
	p2->method1();
	p2->method2();
	return 0;
}

注意: 如果父结构体存在构造函数,而子结构体也存在构造函数,则子结构体在编写构造函数的时候必须使用参数列表化的形式来表达,否则报错!

3.结构体初始化

结构体初始化和类一样,都存在两种方式,一种用类名直接调用,比如Person p1;,或者采用new运算符调用,Person *p2 = new Person;

需要注意的是,如果采用new运算符调用,结构体会向堆申请内存,所以在内存分配机制方面结构体与类具有一致性。

相关链接:C++中创建对象的两种方法以及区别

更新中…

以上是关于Gstreamer中GstBuffer 结构体的定义在哪找??的主要内容,如果未能解决你的问题,请参考以下文章

gstBuffer的 data 和 meta

Stagefright vs Gstreamer

gstreamer中tee如何实现动态增减支路(预览+截图+录像)

Go语言学习——结构体的匿名字段嵌套结构体结构体的“继承”

Swift中结构体的方法调度&内存分区

链表使用类和结构体的区别?