Означает ли элемент gstreamer с увеличивающимся индексом суффикса возможную утечку памяти?

Я написал простой код, основанный на gstreamer-1.0, для декодирования определенного файла для цикла с использованием playbin, и каждый раз, когда playbin создавал элемент element mpeg2dec, элемент получил новое имя. В первый раз имя может быть "mepg2dec0", а затем оно увеличит индекс суффикса до "mpeg2dec1", "mpeg2dec2" и т. Д. При повторном воспроизведении файла.

Вот некоторые цитаты из кода:

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);

Означает ли это увеличение индекса суффикса возможную утечку памяти элементов, которые не были освобождены?

1 ответ

Увеличение суффикса в основном означает, что что- то отслеживает текущий суффикс.

это может быть то, что gstreamer выделяет все элементы и поддерживает их список. когда добавляется новый элемент, gstreamer может проверить выделенные в данный момент имена элементов и сгенерировать новое на основе этого знания (например, сначала попытаться использовать имя "mepg2dec0", а если оно уже занято, попробовать "mepg2dec1" и т. д.). до тех пор, пока не найдет свободное имя).

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

Итак, чтобы ответить на ваш вопрос:

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

Другие вопросы по тегам