2016-07-06 52 views
0

我寫了一個源插件,我想用它做多流,比如我想在我的插件中創建3個srcpads。但是,GstBaseSrcClass定義子類中可能只有一個srcpad,這不是我所期望的。因此我決定重寫GstBaseSrc和GstPushSrc。爲了您的信息,是否有可能實現?我將不得不接受你的建議!謝謝!!覆蓋gstbasesrc.h/.c和gstpushsrc.h/.c

回答

0

您是否檢查過souphttpsrc的示例實現?它有一個src墊,但解碼時,你會得到兩個流,我不知道是否至少有一個源元素有多個墊..我想我從來沒有使用過類似的東西..

即使在rtspsrc的情況下,你可以有多個src pad(模板stream_%u),它真的是一個由多個udpsrc左右組成的Bin。

所以你可以讓你的插件完全像在rtspsrc中一樣,創建另一個類(內部) - 說MySingleSrc - 這將產生一個src流..你將有多個MySingleSrc實例..

Internaly你可以有一個數據對象,你將從中複製(memcpy)內容分配給MySingleSrc的多個實例。

struct _GstRTSPSrcClass { 
    GstBinClass parent_class; 
}; 

Rtspsrc bin

更新 - 什麼是圖:

圖顯示了管線方案的beginnning - 每個盒子是一個元素 - 紅色的是UDP SRC的我只是想展示你認爲沒有多個src焊盤的signe src,而是rspsrc是一個包含多個signle-padded src元素的bin。我建議你也這樣做 - 你可以在cgit中檢查rtspsrc的代碼。

這是關於點陣圖形,以及如何生成它們 - 它非常有幫助調試時的東西:https://developer.ridgerun.com/wiki/index.php/How_to_generate_a_Gstreamer_pipeline_diagram_(graph)

但請採納建議也從GStreamer中的IRC ..我可能是錯的。

HTH

+0

非常感謝!你能幫助解釋你附加的數字嗎?謝謝 – caolaoban1234

+0

@ caolaoban1234我在更新中解釋:) – nayana