GstStructure типа элемента самоанализа объекта

В соответствии с этим я думаю, что невозможно создать GArray с использованием привязок Python. Чтобы преодолеть это, я пишу небольшую библиотеку, которая будет возвращать GArray. Эта библиотека использует самоанализ объекта и предоставляет метод create_codec_array.

/**
* webrtc_interface_create_codec_array:
* @interface: a #WebrtcInterface
*
* creates codecs_array.
*
* Returns: (element-type GstStructure) (transfer full): a #GArray of #GstStructure
*/
GArray *
webrtc_interface_create_codec_array (WebrtcInterface * interface)
{
 WebrtcInterfacePrivate *priv ;
 g_return_if_fail (interface != NULL);

 priv = WEBRTC_INTERFACE_GET_PRIVATE (interface);
 gchar * codecs[] = {priv->codec, NULL};

 GArray *a = g_array_new (FALSE, TRUE, sizeof (GValue));
 int i;

 for (i=0; i < g_strv_length (codecs); i++) {
     GValue v = G_VALUE_INIT;
     GstStructure *s;

     g_value_init (&v, GST_TYPE_STRUCTURE);
     s = gst_structure_new (codecs[i], NULL, NULL);
     gst_value_set_structure (&v, s);
     gst_structure_free (s);
     g_array_append_val (a, v);
 }

 return a;
}

Когда я запускаю g-ir-scanner, я получаю следующую ошибку:

webrtc_interface.c:149: Warning: Webrtc: webrtc_interface_create_codec_array: 
Unknown type: 'GstStructure'

Эта функция возвращает GArray элементов GstStructure, которые я не могу изучить самостоятельно. Какой должна быть аннотация типа элемента в этом случае?

Большое спасибо!


person Chetan Naik    schedule 03.04.2016    source источник


Ответы (1)


GstStructure — это интроспективный тип — он определен в Gst-1.0.gir. Вы передаете --include Gst-1.0 в g-ir-scanner, когда запускаете его для построения GIR?

Если вы используете интеграцию с автоинструментами GIR (настоятельно рекомендуется, если вы используете автоинструменты ), вы можете сделать это, добавив Gst-1.0 к переменной *_INCLUDES для вашего модуля GIR.

person Philip Withnall    schedule 03.03.2017