超红的英文译语怎么说-英语广播
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在线翻译读音例
发布评论