2014-05-08 112 views
1

在Linux系統上,我使用'export GST_DEBUG = <#>'來調試程序使用GStreamer的問題。我現在正在研究Android,並希望這樣做 - 請參閱logcat輸出中包含的GStreamer輸出。什麼是適用於Android的'export GST_DEBUG = <#>'等效物?

我有一個谷歌Nexus 5手機,我正在使用full_hammerhead_userdebug構建。我已經看到了如下提示:

Add the following in JNI_OnLoad: 
setenv("GST_DEBUG", "*:5", 1); 
setenv("GST_DEBUG_NO_COLOR", "1", 1); 

不幸的是,我試圖調試一個C庫,所以我寧願設置一些環境中啓用調試輸出。我試圖添加以下行build.prop:

export GST_DEBUG=3 
GST_DEBUG=3 
log.redirect-stdio=true 

這沒有奏效。要麼我沒有正確啓用GST_DEBUG,或者我沒有正確重定向。或者我的方式偏離軌道,我應該做其他事情。我如何在Android上啓用GST_DEBUG?

P.S.這個問題與one類似,但那個問題並沒有完全回答我的問題。

回答

2

我最終在另一個方向去解決這個問題。首先,我創建了自己的GstLogFunction()

void gstAndroidLog(GstDebugCategory * category, 
        GstDebugLevel  level, 
        const gchar  * file, 
        const gchar  * function, 
        gint    line, 
        GObject   * object, 
        GstDebugMessage * message, 
        gpointer   data) 
{ 
    if (level <= gst_debug_category_get_threshold (category)) 
    { 
    __android_log_print(ANDROID_LOG_ERROR, "MY_APP", "%s,%s: %s", 
         file, function, gst_debug_message_get(message)); 
    } 
} 

gst_init,然後進行()被調用時,我設置的日誌級別。如果我想看到的一切,我可以設置:

gst_debug_set_default_threshold(GST_LEVEL_DEBUG); 

如果我只是想看看什麼是在一個特定的類別發生的事情,我可以設置:

gst_debug_set_threshold_for_name ("tcpclientsink", GST_LEVEL_LOG); 

然後,我只需要註冊我創建的日誌功能:

gst_debug_add_log_function(&gstAndroidLog, NULL); 
+0

是的,它的工作原理! –

相關問題