[这是一个常见的C/C++问题,不看在GST和G类型]指针指向数组的指针
我有一个指针数组与2项:
GstElement *videoconvert, *audioconvert;
GstElement *convert_array[2];
convert_array[0] = videoconvert;
convert_array[1] = audioconvert;
这将在回调函数传递:
g_signal_connect(decodebin, "pad-added", G_CALLBACK(on_pad_added), convert_array);
后“垫添加”我的信号回调函数将接收该指针(convert_array),为gpointer类型:
void on_pad_added(GstElement *element, GstPad *pad, gpointer data);
在此回调,我需要从gpointer数据中提取我的GstElements,这是我的失败尝试:
void on_pad_added(GstElement *element, GstPad *pad, gpointer data) {
GstElement videoelem = ((GstElement *)data)[0];
GstElement audioelem = ((GstElement *)data)[1];
...
}
我怎样才能做到这一点?
“指向具有2个项目的数组的指针”与2个指针的数组不一样... – Jarod42
@ Jarod42是的,我的错。它没有被看到,但是这是一个指向2个指针的数组的指针。 UPD –
回调函数中的gpointer'data'参数(即convert_array)是* not * GstElement *。这是一个GstElement **。试试'GstElement * videoelem =((GstElement **)data)[0]'。更好的是,对于C++,使用reinterpret_cast(数据)而不是旧的C风格强制转换。 –
arayq2