现在,为appsrc设置上限的几种方法中,哪一种是好的和合适的? 我在Linux上用C++编写实验性的gStuffER应用程序。在尝试创建一个appsrc来发出算法生成的帧时,我在线找到了几种设置appsrc源pad caps的方法。我想有些已经过时了。有些可能适用于旧的gst 0.1,不使用。我发现示例代码没有标记为gstreamer版本。这是一堆乱七八糟的东西。我发现的大多数方法都可以在下面的代码库中进行总结: source = gst_element_factory_make("appsrc", "MyAwesomeSource"); #if (1) #if (1) auto caps = gst_caps_new_simple("video/x-raw", // auto caps = gst_video_format_new_caps("video/x-raw", "format", G_TYPE_STRING, "RGB", "width", G_TYPE_INT, FrameWidth, "height", G_TYPE_INT, FrameHeight, "framerate", GST_TYPE_FRACTION, framerate, 1, "interlace-mode", G_TYPE_STRING, "progressive", nullptr); #else auto caps = gst_caps_new_simple ("video/x-raw-rgb", "bpp",G_TYPE_INT,24, "depth",G_TYPE_INT,24, "width", G_TYPE_INT, 640, "height", G_TYPE_INT, 480, NULL); #endif #else GstVideoInfo vi; gst_video_info_set_format(&vi, GST_VIDEO_FORMAT_RGBx, FrameWidth, FrameHeight); auto caps = gst_video_info_to_caps(&vi); #endif g_object_set(source, "caps", caps, ...

现在,为appsrc设置上限的几种方法中,哪一种是好的和合适的? 我在Linux上用C++编写实验性的gStuffER应用程序。在尝试创建一个appsrc来发出算法生成的帧时,我在线找到了几种设置appsrc源pad caps的方法。我想有些已经过时了。有些可能适用于旧的gst 0.1,不使用。我发现示例代码没有标记为gstreamer版本。这是一堆乱七八糟的东西。我发现的大多数方法都可以在下面的代码库中进行总结: source = gst_element_factory_make("appsrc", "MyAwesomeSource"); #if (1) #if (1) auto caps = gst_caps_new_simple("video/x-raw", // auto caps = gst_video_format_new_caps("video/x-raw", "format", G_TYPE_STRING, "RGB", "width", G_TYPE_INT, FrameWidth, "height", G_TYPE_INT, FrameHeight, "framerate", GST_TYPE_FRACTION, framerate, 1, "interlace-mode", G_TYPE_STRING, "progressive", nullptr); #else auto caps = gst_caps_new_simple ("video/x-raw-rgb", "bpp",G_TYPE_INT,24, "depth",G_TYPE_INT,24, "width", G_TYPE_INT, 640, "height", G_TYPE_INT, 480, NULL); #endif #else GstVideoInfo vi; gst_video_info_set_format(&vi, GST_VIDEO_FORMAT_RGBx, FrameWidth, FrameHeight); auto caps = gst_video_info_to_caps(&vi); #endif g_object_set(source, "caps", caps, ...,gstreamer,Gstreamer,我正在寻找一个清晰的解释,说明在gstreamer-1.0中什么是正确的、正确的方法,以及为什么其他方法没有那么好。我想介绍的一些细节:当“格式”属性设置为“rgb”时,video/x-raw和video/x-raw-rgb之间有什么区别。“RGBx”文字中的“x”,是alpha通道可选“a”的占位符,还是“8”、“16”的占位符或每个通道的位数,还是其他什么?正确的方法是第二种选择(gst\u caps\u new\u simple(..) video/x-raw-rgb是旧样式(0.10样式

我正在寻找一个清晰的解释,说明在gstreamer-1.0中什么是正确的、正确的方法,以及为什么其他方法没有那么好。我想介绍的一些细节:当“格式”属性设置为“rgb”时,video/x-raw和video/x-raw-rgb之间有什么区别。“RGBx”文字中的“x”,是alpha通道可选“a”的占位符,还是“8”、“16”的占位符或每个通道的位数,还是其他什么?

正确的方法是第二种选择(gst\u caps\u new\u simple(..)

video/x-raw-rgb是旧样式(0.10样式),用于从
应使用Gstreamer-1.0 video/x-raw,格式=(字符串)(还应列出“gst-inspect-1.0 | grep typefindfunctions”)。“RGBx”文本中的“x”不是一个占位符,它只是媒体类型定义的概念。

正确的方法是第二个选项(gst\u caps\u new\u simple(…)

video/x-raw-rgb是旧样式(0.10样式),用于从 应使用Gstreamer-1.0 video/x-raw,格式=(字符串)(还应列出“gst-inspect-1.0 | grep typefindfunctions”)。“RGBx”文本中的“x”不是占位符,它只是媒体类型定义的概念