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;
}
通过看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;
}
相关文章推荐
- mac或linux中打开.bashrc,编辑完之后如何保存退出
- [MTK]如何默认打开user debug 选项
- 电脑中excel表格打开之后总会出现book1,如何删除这个book1
- 如何让一个层关闭之后,就算刷新页面了也不显示。除非关闭页面再次打开
- 手机通讯录备份之后,如何在电脑上打开并且如何方便快速的导入另一个手机中
- 魔兽地图头文件被破坏之后如何打开地图
- 如何打开pr_debug调试信息
- 新闻发布系统 笔记1 当我们换了电脑 或者文件夹更改了地址 之后 如何打开 原来的网站系统
- 如何打开多个界面之后按返回键直接退出应用
- #define(宏替换)以及如何打开预编译之后的“.i”文件看宏的本质
- 如何打开pr_debug调试信息
- 如何打开pr_debug调试信息
- 如何使得OnInitDialog之后执行某个函数
- 如何默认打开user版本 debug 选项, 默认打开adb 连接
- 如何打开pr_debug调试信息
- 如何打开pr_debug调试信息
- [原创]如何打开chrome react native developer debug and monitor the react native simulator
- MS CRM 2011——打完rollup 12 之后如何打开系统记录
- 如何在第一次打开网站弹框,之后在跳转过来就不打开
- android 如何判断activity是否是暂停之后回来的还是重新打开的