Я реализовал новый GstMeta API, выполнив шаги, упомянутые в Реализация нового GstMeta API
В одной рабочей области созданы два плагина pluginone и plugintwo.
В плагине gst_buffer_add_my_example_meta, если gst_buffer_get_my_example_meta имеет значение null и запущен конвейер.
"gst-launch-1.0 -v videotestsrc! Plugin1! Plugin1! X plugin1!"С этой метаинформацией нет буфера и она распространяется в конвейере.
В плагине gst_buffer_add_my_example_meta, если gst_buffer_get_my_example_meta равен нулю, а в плагине два, называемом gst_buffer_get_my_example_mell, и мета-информация null, и метаданные получили тот же конвейер, что и метаданные null и получили тот же конвейерв plugintwo и в журналах отладки появилась следующая информация gst-launch-1.0:29752): GLib-GObject-CRITICAL **: 19:58:19.466: g_pointer_type_register_static: assertion 'g_type_from_name (name) == 0' failed
(gst-launch-1.0:29752): GLib-GObject-CRITICAL **: 19:58:19.466: g_type_set_qdata: assertion 'node != NULL' failed
(gst-launch-1.0:29752): GLib-CRITICAL **: 19:58:19.466: g_once_init_leave: assertion 'result != 0' failed
(gst-launch-1.0:29752): GStreamer-CRITICAL **: 19:58:19.466: gst_buffer_get_meta: assertion 'api != 0' failed
Фрагмент кода из pluginone
GstMeta *meta = gst_buffer_get_meta(frame->buffer, MY_EXAMPLE_META_API_TYPE);
if (meta == NULL) {
g_print("************* meta api is null ********* \n");
gst_buffer_add_my_example_meta(frame->buffer, 10, "sample");
} else {
if (meta->info->api == MY_EXAMPLE_META_API_TYPE) {
g_print("********* meta api age value %d \n ",
gst_buffer_get_my_example_meta(frame->buffer)->age);
} else {
g_print("******** no meta api \n ");
gst_buffer_add_my_example_meta(frame->buffer, 10, "sample");
}
Нужна помощь в том, чтобы узнать, где ошибка и как ее следуетиспользуйте мета API для добавления метаинформации в буфер видеокадра.