Gstreamer调试输出多个文件的插件

时间:2013-12-27 17:36:44

标签: c++ gstreamer

我正在试图弄清楚如何在我正在编写的插件中设置Gstreamer 0.10。该插件跨越多个源文件,我无法弄清楚如何获取GST_WARNING,GST_DEBUG等。宏从主源文件的外部工作。

说我有两个文件:

plugin1.cpp
plugin1_helper.cpp

plugin1.cpp是从模板生成的,调试类别定义如下。

GST_DEBUG_CATEGORY_STATIC (gst_plugin1_debug);
#define GST_CAT_DEFAULT gst_plugin1_debug

它在plugin1_init()函数内初始化。

GST_DEBUG_CATEGORY_INIT (gst_plugin1_debug, "plugin1",
    0, "Template plugin1");

我查看了教程http://docs.gstreamer.com/display/GstSDK/Basic+tutorial+11%3A+Debugging+tools,但无法弄清楚如何处理多个文件。

当我从plugin_helper中调用GST_WARNING时,我得到一个带有default调试类别而不是plugin1的输出。

如果我尝试为帮助文件创建一个新类别,我会得到以下输出。

(gst-launch-0.10:4422): GStreamer-CRITICAL **: gst_debug_log_valist: assertion 'category != NULL' failed

那么GST_DEBUG如何处理插件的多个源文件呢?

1 个答案:

答案 0 :(得分:2)

在发布之前,我似乎并没有非常透过浏览gstinfo.h。

为了使用多个文件,您需要定义以不同方式跟踪gstreamer日志记录组的变量。本教程展示了如何使用静态日志记录变量,该变量仅在其定义的文件中可见。

为了使用多个文件,在plugin1.cpp中定义没有静态的日志记录变量:

GST_DEBUG_CATEGORY (gst_slxgpu_debug);
#define GST_CAT_DEFAULT gst_slxgpu_debug

然后在你想要使用的文件中,在plugin1_helper.cpp中将其定义为extern:

GST_DEBUG_CATEGORY_EXTERN (gst_slxgpu_debug);
#define GST_CAT_DEFAULT gst_slxgpu_debug