Win32 Windows アプリケーションで gstreamer をテストしています (コンソール アプリケーションではありません)。「gstreamer」のデバッグ メッセージとエラー メッセージ (通常は win32 コンソール アプリケーションで出力される) を取得して、Win32 Windows アプリケーションでも表示するのが好きです。独自のメイン ウィンドウといくつかの子ウィンドウ (コマンド プロンプトではない) がある Win32 Windows アプリケーションでは、それらを表示できません。使用する
g_log_set_handler( G_LOG_DOMAIN, G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION, MyfGstGenLogHandle, NULL );
「MyfGstGenLogHandle」関数で「アプリケーション」ドメイン ログ メッセージのみを取得します。つまり、たとえば、私自身が自分のコードで g_debug( ... ) コマンドを使用した場所のみを取得します。「gstreamer」のデバッグ メッセージとエラー メッセージを取得して表示するために、次のコマンドを試しました (たとえば、playbin がメディアを再生しようとしているときに生成されます)。
g_log_set_default_handler( MyfGstGenLogHandle, NULL );
g_log_set_handler( G_LOG_DOMAIN , (GLogLevelFlags) ( G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION ), MyfGstGenLogHandle, NULL );
g_log_set_handler( NULL , (GLogLevelFlags) ( G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION ), MyfGstGenLogHandle, NULL );
g_log_set_handler( "GStreamer" , (GLogLevelFlags) ( G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION ), MyfGstGenLogHandle, NULL );
g_log_set_handler( "GLib-GObject" , (GLogLevelFlags) ( G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION ), MyfGstGenLogHandle, NULL );
g_log_set_handler( "GLib" , (GLogLevelFlags) ( G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION ), MyfGstGenLogHandle, NULL );
g_log_set_handler( "GModule" , (GLogLevelFlags) ( G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION ), MyfGstGenLogHandle, NULL );
g_log_set_handler( "GThread" , (GLogLevelFlags) ( G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION ), MyfGstGenLogHandle, NULL );
g_log_set_handler( "Gnt" , (GLogLevelFlags) ( G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION ), MyfGstGenLogHandle, NULL );
g_log_set_handler( "stderr" , (GLogLevelFlags) ( G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION ), MyfGstGenLogHandle, NULL );
g_log_set_handler( "stdout" , (GLogLevelFlags) ( G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION ), MyfGstGenLogHandle, NULL );
g_log_set_handler( "Gtk" , (GLogLevelFlags) ( G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION ), MyfGstGenLogHandle, NULL );
g_log_set_handler( "Gdk" , (GLogLevelFlags) ( G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION ), MyfGstGenLogHandle, NULL );
これまでのところ、Win32 Windows アプリケーションで gstreamer デバッグ メッセージを取得するのに役立つ試みはありませんでしたが、Win32 コンソール アプリケーションでコードを記述した場合、通常、g_log_set_handler を使用しないデバッグ メッセージがコマンド プロンプトに出力されます。この問題を解決する方法はありますか? 前もって感謝します。