工具/软件:
版本 10_00_00_08
在初始测试期间、我发现 tiovxmultiscaler 元素无法动态设置 ROI 参数、 我尝试添加 输入选择器以在两个 ROI 摄像头视图之间切换。 引用 GStreamer 官员的 switch_timer 函数input-selector-test.c并在演示环境中验证其功能后、我将输入选择器集成到实际工程中。 从切sink_0换到时、视频流正常工作sink_1、但从切换回时sink_1sink_0、图像冻结。 -我尝试设置 GST_DEBUG 级别,在输出中没有出现相关的异常。 下面是 switch_timer 函数的实现方式和发生冻结的流水线图。
static gboolean switch_timer(GstElement *video_switch)
{
gint nb_sources;
GstPad *active_pad, *new_pad;
gchar *active_name;
g_message("switching");
g_object_get(G_OBJECT(video_switch), "n-pads", &nb_sources, NULL);
g_object_get(G_OBJECT(video_switch), "active-pad", &active_pad, NULL);
active_name = gst_pad_get_name(active_pad);
if (strcmp(active_name, "sink_0") == 0)
{
new_pad = gst_element_get_static_pad(video_switch, "sink_1");
}
else
{
new_pad = gst_element_get_static_pad(video_switch, "sink_0");
}
g_object_set(G_OBJECT(video_switch), "active-pad", new_pad, NULL);
g_free(active_name);
gst_object_unref(new_pad);
g_message("current number of sources : %d, active source %s",
nb_sources, gst_pad_get_name(active_pad));
return (GST_STATE(GST_ELEMENT(video_switch)) == GST_STATE_PLAYING);
}
