2009年7月11日

[plamo:29908] Re: vlc, juk locale patches

本多です

前回投稿したphononのpatchに(大きな)ミスがありましたので、再修正版を投稿します。
詳しい事は後述。 あと、いくつかの問題が解決したので報告も。

1) 以前このMLのどれかのmailでxine-lib-1.1.16.3だとjuk等がcrashするという話を書きましたが
この件の顛末です。

これはxine-lib-1.1.16.2のplugins dir (/usr/lib/xine/plugins/1.25)が残っていた為でした。
どうも1.25があると現象が発生するようです。ですので以前書いたthread lockというのはウソで、
このcrashは(これもバグでしょうが) /usr/lib/xine/plugins/1.25を消去する事で解決しました。

2) vlc-1.0.0について

glibcを2.10.1にしたついでにvlc-1.0.0にしてみました。
#glibcの方は(私の環境では)まったく問題がありませんでした。現在のmachineだと
#compileも瞬時に終わりますし、昔とは様変わりです。

前回投稿した vlc-0.9.9aに関するbugは直っていませんが(fileが変っていますで),
この問題は前回のpatchの方法で解決します(dvdnav.cのutf8_statはutf8_openになったのでopenにする)。

1.0.0を使用してみた感想ですが、0.9.9aにあった結構大きなbugsが修正されていてかなり快適です
(さすがgolden ...の名前を冠していますな)。幾つか例をあげると
* directoryを読み込む再生だとthread lockが良く発生していたのですが、解決されていました。
* oggの再生でdriftが狂って音飛びしていた問題が解決しています。
* 全画面でcontrolが画面下部に出るようになりました。

#まあ、私個人はそれほどなのですが、vlcは家族がdvd/cd/oggs等で使うので、この
#改善はやはりありがたいです。。

3)さて問題のphononですが。

前回のpatchはscope outで解放されたobjectのstorage pointerを渡していました。
#すいません。patchを作る時に綺麗にまとめたつもりが仇となりました。。
これを修正しました。

#あと、お詫びというわけではないですがdeinterlaceが正常に動くようにしておきました
#phonon経由のDVD再生もこれで綺麗になるはずです。現状ではPhonon.Xine.xine.confの
#設定やsystem settingの設定はdeinterlaceに関しては無効な上、動いていません。
------------------------------------------------------------------------------------
*** xinestream.cpp.old 2009-07-11 01:10:25.000000000 +0900
--- xinestream.cpp 2009-07-11 00:42:23.000000000 +0900
***************
*** 259,265 ****
--- 259,283 ----

// xine_open can call functions from ByteStream which will block waiting
for data.
//debug() << Q_FUNC_INFO << "xine_open(" << m_mrl.constData() << ")";
+ #ifdef ORIGINAL_CODE
if (xine_open(m_stream, m_mrl.constData()) == 0) {
+ #else
+ const char *target_url;
+ QByteArray target_path; /* should be here */
+
+ if (m_mrl.startsWith("file:/"))
+ {
+ QByteArray s_data = QByteArray::fromPercentEncoding(m_mrl);
+ QString target_qpath = QString::fromUtf8(s_data.constData());
+ debug() << Q_FUNC_INFO << "Target path =" << target_qpath;
+ target_path = target_qpath.toLocal8Bit();
+ target_url = target_path.constData();
+ }
+ else
+ target_url = m_mrl.constData();
+
+ if (xine_open(m_stream, target_url) == 0) {
+ #endif
debug() << Q_FUNC_INFO << "xine_open failed for m_mrl =" <<
m_mrl.constData();
switch (xine_get_error(m_stream)) {
case XINE_ERROR_NONE:
***************
*** 312,318 ****
--- 330,340 ----
debug() << Q_FUNC_INFO << "creating xine_stream with null video
port";
videoPort = nullVideoPort();
}
+ #ifdef ORIGINAL_CODE
m_deinterlacer = xine_post_init(m_xine, "tvtime", 1, 0, &videoPort);
+ #else
+ m_deinterlacer = xine_post_init(m_xine,
"tvtime:method=LinearBlend,cheap_mode=1,pulldown=0,use_progressive_frame_flag=1",
1, 0, &videoPort);
+ #endif
if (m_deinterlacer) {
// set method
xine_post_in_t *paraInput = xine_post_input(m_deinterlacer,
"parameters");
-------------------------------------------------------------------------------------------------

投稿者 xml-rpc : 2009年7月11日 01:35
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/86608
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。