Почему выделение GstBuffer внутри функции приводит к сбою gst_buffer_add_meta, поскольку буфер не доступен для записи? - PullRequest
0 голосов
/ 25 февраля 2020

Я пишу некоторые модульные тесты для проверки написанного мной элемента GStreamer, и я столкнулся со странным случаем, который я не могу объяснить / исправить.

Если я выделил буфер, как показано ниже работает; он выделен, и я могу передать его другим функциям для записи метаданных

GstBuffer *crop1_buf = gst_buffer_new_allocate(NULL, 1920 * 1080 * 3, NULL);

Если я сделаю простую функцию

void allocate_buffer(GstBuffer *buf)
{
    buf = gst_buffer_new_allocate(NULL, 1920 * 1080 * 3, NULL);
}

и тогда, где я ранее выделил свой буфер, я вместо этого делать:

GstBuffer *crop1_buf;
allocate_buffer(crop1_buf);

Я получаю Unexpected critical/warning: gst_buffer_add_meta: assertion 'gst_buffer_is_writable (buffer)' failed

1 Ответ

2 голосов
/ 25 февраля 2020

вам нужно изменить сам указатель, поэтому вам нужно передать ему указатель

void allocate_buffer(GstBuffer **buf)
{
    *buf = gst_buffer_new_allocate(NULL, 1920 * 1080 * 3, NULL);
}

и пример использования:

GstBuffer *mybyff;

allocate_buffer(&mybuff);

...