超红的英文译语怎么说-英语广播


2023年3月29日发(作者:职业发展规划范文)

GStreamer容易混淆的概念集锦

Q:Busmessage和Event有什么不同?和signal⼜有什么不同?

A:

busmessage是⽤于gstreamer和application之间交互⽤的,⽐如EOS,如果是busmessage则是gstreamer告诉app--EndofStream。⽽Event是⽤于gstreamer内部的,⽐

如srcelement发出EOSEvent,然后该event顺着pipeline⼀路传递到downstreamelements,这些elements可以得到通知,从⽽做⼀些cleanup的⼯作,然后继续将event传

递下去。这应该就是busmess逢雪宿芙蓉山主人唐刘长卿 age和event不同的地⽅。

对于EOS入骨相思知不知上一句 ,可以参考gst_event_new_eos函数的说明,说的很清楚,element产⽣EOS,然后顺着⼀路下去,⼀直到最后的sinkelement,如果pipeline中所有的sink

element都发出了EOS,那么,gstreamer⾃动产⽣⼀个EOS的GstMessage,这就能被app程序捕捉到了。所以,GstMessage是⽤于app和gstreamer沟通的,内部则是

event。

gst_event_new_eos这个函数的说明如下:

===================================================

tsthatreceivetheEOSeventonapadcanreturn

GST_FLOW_UNEXPECTEDasaGstFlowReturnwhendataaftertheEOSeventarrives.

TheEOSeventwilltraveldowntothesinkelementsinthepipelinewhichwillthenpostt我的小后妈免费阅读 heGST_MESSAGE_EOSonthebusaftertheyhavefinishedplayingany

buffereddata.

WhenallsinkshavepostedanEOSmessage,anEOSmessageisforwardedtotheapplication.

===================================================

signal和message/event都不⼀样,signal其实来⾃于GObject体系,是application和gobject交互⽤的。在gstreamer中,element本⾝也是gobject,所以,通过signal,就可

以将app和element联系起来,当element发⽣了⼀些事情相让app知道时,就可以⽤signal的⽅式来通知app--⽐如动态创建了⼀个Pad。和Busmessage不同,bus

message是pipeline上的,⼀般是app和pipeline交互的⼀种⽅法。signal则具体到了每个element。

Q:Property,DynamicControllableProperty,Interface有什么不同?

A:

Pro叱责的近义词是什么 perty来⾃GObject,就是对象的属性,使⽤_install_property函数定义。每个property可以对应的定义get/set⽅法;DynamicControllableProperty是⼀种可以在stream-

time,其实就是runtime动态修改Propertyvalue的东西,是gstreamer引⼊的,对于⼀些和GUI交互的时候,这种东西有点⽤处。我们可以定义多长时间就⾃动给某个

Property赋成什么样的值,所以叫DynamicControllableProperty,可以参考AppDevManualChapater15的内容;Interface也是来⾃GObject,和Java的Interface⾮常类

似,GObject不⽀持多重继承,所以和Java⼀样,整出⼀个Interface来间接实现多重继承。Interface定义的时候和⼀个GObject类似,只不过只需要定义ClassStructure⽽不

需要定义InstanceStructure(因为In顾城的三首最著名的诗 terface⽆法实例化),在Interface中定义好需要实现的函数(GLib2.14之后Interface中可以定义Property了,当然也需要实现该

Interface的gobject来实现该Property),适合小学生的名言警句 然后和平常⼀样⽣成⼀个gobject,如果该gobject需要implement某个interface的话,在g_type_register_static注册完后,再调⽤

g_type_add_interface_static就可以实现⼀个interface。g_type_add_interface_static中要提供⼀个GInterfaceInfo的structure,其中要指定interface的init函数,我们就可以在

这个函数中,将Interface中定义好的函数指针换成我们gobject中函数的指针,这样就等于实现了这个interface中的⽅法。

更多推荐

streamer是什么意思eamer在线翻译读音例