Gstreamer 排程模式

2021-05-26 20:34:58 字數 708 閱讀 3169

翻譯自part-scheduling.txt

排程在gstreamer中,排程模式是基於pad是主動積極地推送(產生)資料還是從其他的pad拉資料。

推模式(push)

乙個pad能夠產生資料,並且推送給下乙個pad,按這種模式工作的pad有乙個loop函式,loop函式被重複呼叫直到返回false。loop函式無論什麼時候需要資料時,可以阻塞。當pad被取消啟用時,loop函式應該取消阻塞。 

按push模式工作的pad僅僅能夠對有chain函式的pad推送資料,chain函式被push pad呼叫,引數是push pad產生的buffer。

push模式產生資料的方式也被稱為流模式,因為資料生產者產生乙個穩定的,基本上是恆定速率流資料。

拉模式(pull)

按pull模式工作的pad僅僅能夠從實現了pull_range的pad拉取資料。當從對等pad拉取了資料後,loop函式將呼叫push將資料推送給對等pad。

決定排程模式

當pad被啟用時, _activate() 函式被呼叫。pad根據上游pad的能力選擇用push還是pull模式啟用自己。gstreamer預設用push模式啟用pad,如果沒有啟用函式。

chain函式

當上游元素呼叫 _push()函式,下游pad的chain函式被呼叫,上游的元素可能是chain中乙個節點或者是乙個push源。

getrange函式

.......待續

gstreamer元件狀態

gstreamer元件狀態 gst state null 預設狀態 該狀態將會 所有被該元件占用的資源。gst state ready 準備狀態 元件會得到所有所需的全域性資源,這些全域性資源將被通過該元件的資料流所使用。例如開啟裝置 分配快取等。但在這種狀態下,資料流 仍未開始被處 理,所以資料流...

GStreamer 安裝測試

include include 定義訊息處理函式,static gboolean bus call gstbus bus,gstmessage msg,gpointer data default break return true int main int argc,char argv 建立管道和元...

交叉編譯 GStreamer

交叉編譯通用指令碼cross compile.sh 把指令碼放到待編譯原始碼目錄 輸入命令 cross compile.shmakeconfigmakeallmakeinstall 統一安裝到 sysroot usr目錄下 bin sh 交叉編譯通用指令碼cross compile.sh home ...