Gstreamer buffer pts

时间:2017-07-13 11:35:41

标签: gstreamer decoding latency mjpeg

我有一个简单的mjpeg管道,我想访问接收器上的缓冲区以获得pts来计算延迟。

管道:   souphttpsrc - > jpegparse - > imxvpudec - > imxipusink

最好的方法是什么?一些代码示例会很棒。 gstreamer的时间让我感到困惑。

1 个答案:

答案 0 :(得分:1)

我要在你想要分析PTS的管道中添加一个标识元素:

souphttpsrc ! jpegparse ! identity ! imxvpudec ! imxipusink

然后连接到“切换”信号:

static void pts_analysis_cb(GstElement *identity, 
                            GstBuffer *buffer,
                            gpointer user_data) {
   GstClockTime pts = GST_BUFFER_PTS(buffer);
   //analysis
}

g_signal_connect_data(identity, "handoff", 
                      G_CALLBACK(pts_analysis_cb), 
                      NULL, NULL, GConnectFlags());

如果你看到MJPEG相关的延迟,你可能只需要在你的尾部元素上使用sync=false或者设置标记以丢弃缓冲区,如果它落后了。