index

2007年 5月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
2007年 6月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  
2007年 7月
              1
  2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
  30 31          

アレ

インタレ動画再生時,フィールドオーダが反転する   ▽20070612a #コンピュータ #動画圧縮

概要

インタレースの動画を VMR9 で DXVA 再生する時, プレイヤでシークするとフィールドオーダの認識が反転してしまう.

対処法

KB919071 をインストールする.

経緯

うちにある Windows XP の PC 3台は以下のよーになっている.

No. OS CPU VGA
1 (silvia) Windows XP Proffesional Athlon64 X2 4600+ Galaxy GF7600GS-Z
2 (curren) Windows XP MediaCenter 2005 Athlon64 X2 4400+ Galaxy GF7600GS-Z
3 (integra) Windows XP MediaCenter 2005 Core2Duo E6600 MSI NX7600GS T2D256EH

で,この curren が動画再生によく使う PC で,いつもはこいつで再生してる. こいつだと,30i のインタレース動画を ffdshow のハードウェアデインタレース有効で MPC の VMR9(renderless) で再生すると,とても滑らかに 60 フレーム bob 再生できたんで, まぁそういうもんだと思ってたわけですよ.

んが,silvia だとどういうわけか, ほぼ完全に同じ状況(ffdshow と MPC と GeForce 関連のレジストリ設定までよーっく見て,まぁ大体ほとんど同じ) でも現象が異なるのね.

具体的には. VMR9(renderless) では,60フレームなんだけど,片方のフィールドを縦2倍したものを 2フレームずつ表示したようになって, ぱっと見はきちんとインタレ解除されて 30p 表示になってるかのようなんだけど, 縦解像度がグダグダになっちゃう. で,VMR9(windowed) では,curren と同じようにインタレ解除されてるように見えるんだけど, シークするとフィールドオーダがランダムに解釈されるようになって, トップとボトムを間違えたような再生になってしまう.

integra はどうかというと silvia と同じ状況.ていうかなぜ curren だけきれいに再生できるのか謎.

しばらく前からこの現象に気づいてたんだけど, 今日,やっと原因(というか対処法)がわかった. それが冒頭に書いた KB919071 だ.

FIX:ちらつくのが Windows XP で有効な DXVA での ビデオ ミキサー レンダラ 9(VMR9)を介してインターレース内容を再生するとき、シークの後、発生することがあります。

日本語でおk ( ´ω`)

まぁつまり何だ,「ffdshow と MPC と GeForce 関連」まで同じに揃えていたつもりだったけど, どうやらもっと深くの DXVA 周りの問題だったらしい,と. DirectX 関連もファイルの同一性程度までは見たんだけど.Windows は奥が深い(悪い意味でw

File name ファイルのバージョン ファイル サイズ 日付 時間 プラットフォー
Quartz.dll 6.5.2600.2905 1,287,680の 10-may-2006 12:51 x86

うちにあったファイルは,3台とも

File name ファイルのバージョン ファイル サイズ 日付 時間 プラットフォー
Quartz.dll 6.5.2600.2749 1,275,392の 30-aug-2005 12:55 x86

ということで,まぁ古いものではあるんだけど, きちんと再生できる curren もその古い同じバージョンだからなぁ.

でもまぁいちおう入れてみる.上述ページから windowsxp-kb919071-x86-enu.exe をダウンロードし, 実行すると「言語が違うのでインスコできませぬ」とか抜かしよるので, そのダイアログを表示したまま c:/ にあるテンポラリディレクトリを漁って Quartz.dll をゲット.

でもって普通に c:/Windows/System32/Quartz.dll を置き換えちゃうと, MPC 起動時に WindowsXP SP2 の機能で元に戻されちゃうので, c:/Windows/System32/dllcache/Quartz.dll を先に置き換えておきましょう.

Windows が「知らんバージョン入ってるよ? ヤバくね?」とかグダグダ抜かすけど, うっせバカてめーのバグだろハゲ,とか聞くに耐えない悪態を吐きつつ「黙れ」ボタンを押下.

TODO

というわっけで~. 見事に silvia と curren が同じように再生できるようになりました.イェァー. 今後の課題は, 「なぜ curren は昔から正常に再生できていたのか?」の究明と, integra でも同様の処置をする(面倒だからやってない)のと, その前にできれば KB919071 のもっとスマートなインスコ方法を模索すること.かな.

index