2013-04-22 4 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» и так далее на, пока не найдет свободное имя).

однако, это что-то также может быть одно целое число (в ElementType), что не является монотонно возрастающей (без повторного индекса), всякий раз, когда создается новый элемент (и полностью игнорируя ли и которые разрушаются элементы).

так ответить вам вопрос:

нет, имея новое имя для каждого элемента не свидетельствует о том, есть ли утечка памяти или нет.

+0

Надеюсь, утечки памяти нет, однако некоторые из названий элементов остались неизменными: – user1547688