Gstreamer :: g_signal_emit_by_name的用法

时间:2013-04-04 12:49:38

标签: gstreamer

我正在开发一个使用gstreamer播放H264转储的应用程序

管道是:appsrc - h264parse - ffdec_h264 - ffmpegcolorspace - deinterlace - autovideosink

数据流是来自appsrc的:: PULL模式{使用信号:need-data}

我想在应用程序中使用PUSH模式验证相同的应用程序:在文档中提到:我们需要调用'push-buffer'信号并发送缓冲区

我的代码段是:

gst_app_src_set_emit_signals(source, TRUE);
g_signal_connect (source, "push-buffer", G_CALLBACK (start_feed), source);

虽然创建了管道,但我没有收到任何回调:start_feed()

任何人都可以帮助我,对于apprc的'PUSH'模式操作究竟需要做些什么。

1 个答案:

答案 0 :(得分:1)

根据the documentation

  

让appsrc发出“new-preroll”和“new-buffer”信号。默认情况下禁用此选项,因为当应用程序更喜欢以拉模式运行时,信号发射很昂贵而且不需要。

因此,您可以尝试添加“新缓冲区”信号。 “push-buffer”是一个动作,因此附加一个信号处理程序将不会做任何事情,因为当你有数据时,你应该调用它,而不是调用回调的东西。

根据start_feed的作用,您可能还在寻找“需要数据”信号(可能是在管道需要更多数据时发出信号)。