我有一个简单的mjpeg管道,我想访问接收器上的缓冲区以获得pts来计算延迟。
管道: souphttpsrc - > jpegparse - > imxvpudec - > imxipusink
最好的方法是什么?一些代码示例会很棒。 gstreamer的时间让我感到困惑。
答案 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
或者设置标记以丢弃缓冲区,如果它落后了。