您的位置:首页 > 其它

gst_init之后如何再打开GST DEBUG呢?

2011-01-03 11:11 363 查看
打开gstreamer debug一般方法是:export GST_DEBUG=filesrc:5这样的做法,然后运行程序。但是通过看gstreamer的代码,这个环境变量是在gst_init的时候被读取并设置的,具体是在init_pre这个函数里面。如果程序已经在运行了,gst_init已经做过了,这个时候要打开debug怎么办呢?(Media server就有这样的需求)。

通过看init_pre中的代码,发现很简单,直接调用gst_debug_set_threshold_for_name或gst_debug_set_default_threshold就可以。下面是测试代码:

#include <gst/gst.h>
#include <unistd.h>

GstElement *pipeline, *source, *sink;

int main(int argc, char *argv[])
{
gst_init(&argc, &argv);

// create elements
pipeline = gst_pipeline_new("test-pipeline");
source = gst_element_factory_make("filesrc", "file-source");
sink = gst_element_factory_make("fakesink", "fake-sink");
if (!pipeline || !source || !sink) {
g_print("One element could not be created!\n");
return 1;
}

// set file name
g_object_set(G_OBJECT(source), "location", "/home/eric/rphonenfs/medias/Audios/lddgy.mp3", NULL);

// put all elements into bin
gst_bin_add_many(GST_BIN(pipeline), source, sink, NULL);

// link together
gst_element_link_many(source, sink, NULL);

// change state to PAUSED
g_print("Before debug on, Setting to PAUSED\n");
gst_element_set_state(pipeline, GST_STATE_PAUSED);
sleep(1);
g_print("Then we set pipeline to NULL\n");
gst_element_set_state(pipeline, GST_STATE_NULL);

// try to open debug
g_print("Open debug infos...\n");

// This function call is from "init_pre" which be called in "gst_init_check"
// gst_debug_set_threshold_for_name("filesrc", 5);
gst_debug_set_default_threshold(5);

g_print("Rechange pipeline to PAUSED\n");
gst_element_set_state(pipeline, GST_STATE_PAUSED);
sleep(1);
g_print("Change pipeline to NULL and terminate.\n");
gst_element_set_state(pipeline, GST_STATE_NULL);
gst_object_unref(GST_OBJECT(pipeline));

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: