【Ubuntu】KeyHoleTV Part.1【Debian】at LINUX
【Ubuntu】KeyHoleTV Part.1【Debian】 - 暇つぶし2ch60:login:Penguin
08/06/29 04:09:35 SH5PHlIn
>>59

SuSEでは、まったくそういうことが起きないのでよくわからないです。
音、と映像を処理するThreadが別々に存在します。映像Threadでは、
動画デコードとgdk_pixbuf_new_from_data を行い、pixbuf のポインタを
リングバッファに設定します。g_timeout_add_full で設定したタイマー
関数が、リングバッファを参照し、新しい内容が登録されている
場合、gdk_draw_pixbuf で表示を行い、g_object_unrefでpixbuf を
開放する動作をしています。

映像の遅れの原因のひとつは、g_timeout_add_fullがなんらの原因で、動作
遅れているまたは、25ミリ秒単位に呼び出されない可能性があります。

たぶん gdk_draw_pixbufの処理で内部でロックしているのが原因であると思います。
この結果、リングバッファが溢れて、g_object_unref の動作で、
segmentation fault していると思います。

gdk_pixbuf のソースを読んだとき、gdk_pixbuf_new_from_dataは、Xクライアント
内部で処理を行い、XServerと通信を行わないようになっていたと思いますので、
別のThread にしました。Version1.7 では、音声だけ別のThread で、
表示に関しては、g_timeout_add_fullで設定した関数で行っていました。
この場合でも同様に映像の遅れが発生したLinux がありました。この場合、
ブロックノイズになるのは、デコード処理が遅延により参照できない映像に
なって、ノイズの発生が生じました。

gdb lkeyholetv でstack をホームページから送っていただければ、
解析できると思います。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch