[英]Porting Gstreamer SDK Tutorials (gstreamer 0.1) to gstreamer 1.0
有沒有人試圖將http://docs.gstreamer.com/display/GstSDK/Tutorials中的 Gstreamer SDK教程移植到gstreamer 1.0?
我試圖將Basic-tutorial-8.c從GstSDK移植到gstreamer 1.0。 最終結果不起作用,並在運行時退出並出現錯誤。
這是我到目前為止所做的。 我的主要幫助來源如下: http : //gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/chapter-porting-1.0.html#section-porting-objects-1.0
用audio / x-raw替換了audio / x-raw-int
用data.app_sink替換了data.app_sink,“new-buffer”,“new-sample”
更換
tee_src_pad_template = gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS (data.tee), "src%d");
同
tee_src_pad_template = gst_element_class_get_pad_template( GST_ELEMENT_GET_CLASS( data.tee ), "src_%u" );
更換
raw = (gint16 *)GST_BUFFER_DATA (buffer);
同
GstMapInfo stGstMapInfo1;
gst_buffer_map( buffer, &stGstMapInfo1, (GstMapFlags)( GST_MAP_READ | GST_MAP_WRITE ) );
raw = (gint16 *)stGstMapInfo1.data;
。 。 。
/* Free the buffer now that we are done with it */
gst_buffer_unmap( buffer, &stGstMapInfo1 );
在上述更改之后,我可以構建並運行該程序,但它會在一段時間后出現以下錯誤:從元素audio_source收到錯誤:內部數據流錯誤。 調試信息:gstbasesrc.c(2865):gst_base_src_loop():/ GstPipeline:test-pipeline / GstAppSrc:audio_source:流任務暫停,原因未協商(-4)
我想我必須更多地學習本教程的new_buffer和push_data函數。
預先感謝您的幫助。
SDK教程已經在這里移植(由GStreamer開發人員之一):
如果不查看最終代碼,很難猜到。 但錯誤來自appsrc並且是“未經協商的”。 從0.10到1.0的一個主要變化是緩沖區不再具有上限。
在0.10中,當您向appsrc發送GstBuffer時,它將攜帶GstCaps,並且在推送第一個緩沖區時將設置並協商。 在1.0中,你應該在向緩沖區推送緩沖區之前明確設置一個上限。
另外,audio / x-raw-int並不完全等同於audio / x-raw,因為audio / x-raw也可以表示浮動表示的音頻。 您可能需要查看http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstaudio.html#GstAudioFormat ,看看你是否想要設置更嚴格的音頻上限。
另外,GstSample( http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstSample.html )是一個包含GstBuffer和GstCaps的小對象,可能很有用仔細檢查你是否正確使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.