Gstreamer調(diào)度模式的分析Gstreamer的調(diào)度模式是gstreamer 內(nèi)核中比較重要,但是又較為復(fù)雜的部分(呵呵,好象是廢話,但是又不得不說的)。簡(jiǎn)單地說,Gstreamer的調(diào)度模式就是:一種確定一個(gè)element何時(shí)被調(diào)用為它的同伴element處理和準(zhǔn)備數(shù)據(jù)的方法。是不是覺得上面的話太簡(jiǎn)單又太復(fù)雜了?。坷^續(xù)看。 一.Gstreamer的三種調(diào)度模式[1] Push/Push mode數(shù)據(jù)由上游的element 推過來,由當(dāng)前的element接收處理后,再推給下游的element。我們可以看出,這種模式中,當(dāng)前的element必須等待上游的element把數(shù)據(jù)推過來,才可以做下一步的操作。因此,當(dāng)前的element不是數(shù)據(jù)調(diào)度的發(fā)起者,它對(duì)數(shù)據(jù)的處理,僅僅能夠影響下游的element。并且在這個(gè)模式中,當(dāng)前的element不能控制上游的element的任何行為(當(dāng)然,你可以從當(dāng)前的element發(fā)event給上游的element,如果上游的element有相應(yīng)的處理操作的話,會(huì)激發(fā)一個(gè)動(dòng)作發(fā)生)。
|
|||||||||||||||||||||||||
|
|
調(diào)度模式 |
實(shí)現(xiàn)的接口API |
||
|
|
Sink pad |
Src pad |
Sink pad |
Src pad |
|
1 |
push |
push |
_chain() |
|
|
2 |
Pull |
push |
_loop() |
|
|
3 |
Pull |
Be pulled |
_loop() |
_get_range() |
[1]http://gstreamer./data/doc/gstreamer/head/pwg/html/chapter-scheduling.html
[2]http://gstreamer./data/doc/gstreamer/head/pwg/html/chapter-building-chainfn.html
[3]http://gstreamer./data/doc/gstreamer/head/gstreamer/html/GstPad.html#gst-pad-activate-pull
[4]http://gstreamer./data/doc/gstreamer/head/gstreamer/html/GstPad.html#desc
|
|