freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

用gstreamer簡(jiǎn)化linux多媒體開發(fā)(編輯修改稿)

2025-07-21 04:30 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 snext。} 箱柜箱柜(bin)是GStreamer框架中的容器元件,它通常被用來容納其它的元件對(duì)象,但由于其自身也是一個(gè)GstElement對(duì)象,因此實(shí)際上也能夠被用來容納其它的箱柜對(duì)象。利用箱柜可以將需要處理的多個(gè)元件組合成一個(gè)邏輯元件,由于不再需要對(duì)箱柜中的元件逐個(gè)進(jìn)行操作,因此能夠很容易地利用它來構(gòu)造更加復(fù)雜的管道。在GStreamer框架中使用箱柜還有另外一個(gè)優(yōu)點(diǎn),那就是它會(huì)試著對(duì)數(shù)據(jù)流進(jìn)行優(yōu)化,這對(duì)于多媒體應(yīng)用來講是很具吸引力的。 圖3描述了箱柜在GStreamer框架中的典型結(jié)構(gòu): 圖3在GStreamer應(yīng)用程序中使用的箱柜主要有兩種類型:GstPipeline 管道是最常用到的容器,對(duì)于一個(gè)GStreamer應(yīng)用程序來講,其頂層箱柜必須是一條管道。 GstThread 線程的作用在于能夠提供同步處理能力,如果GStreamer應(yīng)用程序需要進(jìn)行嚴(yán)格的音視頻同步,一般都需要用到這種類型的箱柜。 GStreamer框架提供了兩種方法來創(chuàng)建箱柜:一種是借助工廠方法,另一種則是使用特定的函數(shù)。下面的代碼示范了如何使用工廠方法創(chuàng)建線程對(duì)象,以及如何使用特定函數(shù)來創(chuàng)建管道對(duì)象:GstElement *thread, *pipeline。// 創(chuàng)建線程對(duì)象,同時(shí)為其指定唯一的名稱。thread = gst_element_factory_make (thread, NULL)。// 根據(jù)給出的名稱,創(chuàng)建一個(gè)特定的管道對(duì)象。pipeline = gst_pipeline_new (pipeline_name)。 箱柜成功創(chuàng)建之后,就可以調(diào)用gst_bin_add()函數(shù)將已經(jīng)存在的元件添加到其中來了:GstElement *element。GstElement *bin。bin = gst_bin_new (bin_name)。element = gst_element_factory_make (mpg123, decoder)。gst_bin_add (GST_BIN (bin), element)。 而要從箱柜中找到特定的元件也很容易,可以借助gst_bin_get_by_name()函數(shù)實(shí)現(xiàn): GstElement *element。element = gst_bin_get_by_name (GST_BIN (bin), decoder)。 由于GStreamer框架中的一個(gè)箱柜能夠添加到另一個(gè)箱柜之中,因此有可能會(huì)出現(xiàn)箱柜嵌套的情況,gst_bin_get_by_name()函數(shù)在查找元件時(shí)會(huì)對(duì)嵌套的箱柜作遞歸查找。元件有添加到箱柜之中以后,在需要的時(shí)候還可以從中移出,這是通過調(diào)用gst_bin_remove()函數(shù)來完成的:GstElement *element。gst_bin_remove (GST_BIN (bin), element)。 如果仔細(xì)研究一下圖3中描述的箱柜,會(huì)發(fā)現(xiàn)它沒有屬于自己的輸入襯墊和輸出襯墊,因此顯然是無法作為一個(gè)邏輯整體與其它元件交互的。為了解決這一問題,GStreamer引入了精靈襯墊(ghost pad)的概念,它是從箱柜里面所有元件的襯墊中推舉出來的,通常來講會(huì)同時(shí)選出輸入襯墊和輸出襯墊,如圖4所示: 圖4具有精靈襯墊的箱柜在行為上與元件是完全相同的,所有元件具有的屬性它都具有,所有針對(duì)元件能夠進(jìn)行的操作也同樣能夠針對(duì)箱柜進(jìn)行,因此在GStreamer應(yīng)用程序中能夠像使用元件一樣使用這類箱柜。下面的代碼示范了如何為箱柜添加一個(gè)精靈襯墊:GstElement *bin。GstElement *element。element = gst_element_factory_create (mad, decoder)。bin = gst_bin_new (bin_name)。gst_bin_add (GST_BIN (bin), element)。gst_element_add_ghost_pad (bin, gst_element_get_pad (element, sink), sink)。 二、元件連接在引入了元件和襯墊的概念之后,GStreamer對(duì)多媒體數(shù)據(jù)的處理過程就變得非常清晰了:通過將不同元件的襯墊依次連接起來構(gòu)成一條媒體處理管道,使數(shù)據(jù)在流經(jīng)管道的過程能夠被各個(gè)元件正常處理,最終實(shí)現(xiàn)特定的多媒體功能。圖1就描述了一條很簡(jiǎn)單的管道,它由三個(gè)基本元件構(gòu)成:數(shù)據(jù)源元件只負(fù)責(zé)產(chǎn)生數(shù)據(jù),它的輸出襯墊與過濾器元件的輸入襯墊相連;過濾器元件負(fù)責(zé)從自己的輸入襯墊中獲取數(shù)據(jù),并在經(jīng)過特定的處理之后,將結(jié)果通過輸出襯墊傳給與之相連的接收器元件;接收器元件只負(fù)責(zé)接收數(shù)據(jù),它的輸入襯墊與過濾器元件的輸出襯墊相連,負(fù)責(zé)對(duì)最終結(jié)果進(jìn)行相應(yīng)的處理。 GStreamer框架中的元件是通過各自的襯墊連接起來的,下面的代碼示范了如何將兩個(gè)元件通過襯墊連接起來,以及如何在需要的時(shí)候斷開它們之間的連接:GstPad *srcpad, *sinkpad。srcpa
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1