gpt4 book ai didi

c - 使用 appsink 提取样本信号

转载 作者:太空宇宙 更新时间:2023-11-04 02:48:56 24 4
gpt4 key购买 nike

我正在使用 gstreamer-1.0 编写一个简单的应用程序,我想接收通过管道流回我的应用程序的缓冲区。为此,我在管道末端使用了 appsink 插件。

到现在为止,一切正常,但是当我想接收缓冲区时,出现了这些错误

(app:31759): GLib-GObject-CRITICAL **: g_signal_emit_by_name: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed

(app:31759): GLib-GObject-WARNING **: instance with invalid (NULL) class pointer

这是我写的代码

typedef struct _AllElements 
{
GstElement *pipeline;
...
GstElement *appsink;

} AllElements;

static void new_sample (AllElements *element)
{
GstSample *sample = NULL;
/* Retrieve the buffer */
g_signal_emit_by_name (element->appsink, "pull-sample", &sample,NULL);
if (sample)
{
g_print ("*");
gst_sample_unref (sample);
}
}

int main(int argc, char *argv[])
{
Allelemets element;

... // making and linking all the elements

g_object_set (G_OBJECT (element.appsink), "sync", TRUE, NULL);
g_object_set (element.appsink, "emit-signals", TRUE, NULL);
g_signal_connect (element.appsink, "new-sample", G_CALLBACK (new_sample), &element);

...

gst_element_set_state (element.pipeline, GST_STATE_PLAYING);

...

return 0;
}

有谁能帮我解决这个问题吗?感谢大家!

最佳答案

我找到了解决问题的方法。

我只是为我的函数设置了错误的签名

static GstFlowReturn new_sample (GstElement *appsink, AllElements *element) 

我现在使用 gst_base_sink_get_last_sample(GST_BASE_SINK(appsink)); 获取示例。

关于c - 使用 appsink 提取样本信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24142381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com