2013-04-22 64 views
1

我寫了一個基於gstreamer-1.0的簡單代碼,使用playbin爲一個循環解碼某個文件,並且每次playbin創建元素mpeg2dec時,該元素都有一個新名稱。這個名字第一次可能是「mepg2dec0」,然後當文件再次播放時,它會將後綴索引增加到「mpeg2dec1」,「mpeg2dec2」,等等。帶增量後綴索引的gstreamer元素是否意味着可能的內存泄漏?

下面是一些代碼報價:

do { 
    playbin=gst_element_factory_make("playbin", "play"); 
    g_object_set(G_OBJECT(playbin), "uri", "file:///home/gst/Videos/1.ts", NULL); 
    /* add message receivers ... */ 
    gst_element_set_state(GST_ELEMENT(playbin), GST_STATE_PAUSED); 
    gst_element_set_state(GST_ELEMENT(playbin), GST_STATE_PLAY); 
    /* wait until got EOS */ 
    gst_element_set_state(GST_ELEMENT(playbin), GST_STATE_PAUSED); 
    gst_element_set_state(GST_ELEMENT(playbin), GST_STATE_NULL); 
    gst_object_unref(GST_ELEMENT(playbin)); 
} while(1); 

這是否後綴指數上升表示元件的可能的內存泄漏不釋放?

回答

0

後綴的增加主要表示東西跟蹤當前後綴。

東西可能是,該gstreamer分配所有元素,並維護它們的列表。 當添加一個新元素時,gstreamer可以檢查當前分配的元素名稱,並根據這些知識生成一個新元素(例如首先嚐試使用「mepg2dec0」作爲名稱,如果已經使用了,請嘗試「mepg2dec1」等等直到它找到一個免費的名字)。

然而,這東西也可以是單個整數(每個元素類型),即是單調遞增的(沒有索引的再利用),每當創建了新的元件(與完全無視元素是否和被破壞)。

所以要回答你的問題:

沒有,其每個元素的新名稱沒有是否存在內存泄漏或不指示。

+0

我希望沒有內存泄漏,但是,一些元素的名稱保持不變: – user1547688 2013-04-23 09:11:18