互換チップセットをお使いでローコス勇者の皆さんなら、一度は悩んだ事のある「横ラインずれノイズ」(ほんとか?!) さすがに、自分一人の環境のみで解決法を生み出す事など出来ないので、このページでは、このノイズの発生傾向から、低減の方向を探ろう、という位置付けで行きましょう。とりあえず、サンプルをば。(比較的症状は軽い方です)
はにゃ〜ん、さくらちゃん〜(劇壊
- 作成環境
- ・AMD Athlon 600MHz(K75)
・MSI MS-6167 (AMD750 Chipset)
・PC100 CL2 128M+PC133 CL3 128M
・Matrox G400SH 32M
・Labway Xwave6000(YAMAHA YM744)
・IBM DPTA352050(On Board IDE)
・I/O DATA GV-BCTV3/PCI(Bt878)
- 取り込み設定
・取り込みソフト : AviCap.exe ・解像度 : 640x480 ・カラーフォーマット : 32Bit RGBA ・圧縮 : PIC Motion JPEG ・その他
- 24fps化、インタレース解除等のフィルタ処理を一切行っていません。
ノイズが出ていてかつ、フィールドずれの無いフレームを選びました。
- 横ラインずれノイズの原因(2001-8-8新規追加)
- ※原因がはっきりしたので、古い記事は下に追いやりました。
Bt8x8は、PCIのマスタとなってバスマスタ転送をするために、FIFOバッファというのを持っています。で、Bt8x8の場合、640x480、RGBA32Bit、30fpsのとき、仮に他のデバイスがバスマスタ転送中でマスタ権を奪えないとき、10nsでバッファがオーバーフローします。オーバーフローしてしまったデータは、他のデバイスと異なって転送を待ったり、保持しておくことが出来ないため、破棄するしかありません。この欠損したデータが横ラインずれノイズとして現れます。
PCIバスは理論値33MHzx32bitで133MB/secと言われていますが、それは常に単一のデバイスがマスタ動作したときの値であり、実際にはBt8x8然り、GA然り、サウンドカード然り。。。とたくさんのデバイスがPCIバスにつながっていて、奪い合いのようにマスタ権を要求してきます。そのときの実効値としては、50MB/secも出れば御の字と言われているそうです。
キャプチャ動作時は、Bt8x8がマスタになり、ホストブリッジをターゲットにしてデータを転送します(ホストブリッジからメモリへ)。そして、メモリ(ホストブリッジ)からIDEコントローラへとデータ転送するわけですから、無圧縮時だと、PCIバスを通るデータ量はキャプチャされたデータの少なくとも2倍流れることになります。無圧縮RGB+音声データはだいたい25MB/secですから、実効値50MB/secはかなり厳しい値であることがわかります。
すると、チップセットのPCIバス転送能力がもろに効いてくることがわかります。少しでも転送が下手だと、すぐにFIFOバッファがオーバーフローして横ラインずれノイズが発生してしまいます。チップセット依存、BIOS設定依存することが容易に想像つくかと思います。
- 対処法
- これに関しては過去の記事とほとんど変化はありませんが、ひとつだけ。IDE RAIDボードを導入すると良くなる、という方もいらっしゃいますが、上の原因から推測すると、本質解では無いことが分かります。良くなる環境の方は、おそらくオンボードIDEコントローラがプアで、遅延が大きいのでは無いか、と想像しています。モノによっては高い買い物ですから、ご購入される方は事前に情報を集めておくほうが良いでしょう。
過去記事の繰り返しになりますが、箇条書きで。
1)RGB32、24bitを使うくらいなら、16bit相当のYUY2を使う。
2)プレビューを切る(効果は薄いかな?)
3)メモリパフォーマンスを煮詰める(ホストブリッジの遅延を少なくする)
4)最新BIOSへのアップデート(PCI、メモリ周りの設定改善に期待する)
5)PCI Latency Timerを大きくする(Bt8x8のマスタ権を長く保持できるようにする)
6)(PCIバス転送の良く無い噂のあるマザーは避ける。。。この方面は疎いです、私)
- パワーユーザーの方へ
- ※訳わからない人はやらないほうが良いです。
PCI Latency Timerは、PCIの規格で定められており、PCIコンフィグレーションレジスタオフセット0DHに存在します。一般のBIOS設定で出来るLatency Timerは、ホストブリッジがマスタ動作したときのTimerだと思われ、効果が薄いと思います(確証は取れていません)。ですので、大きい効果を得たかったら、intelsat、wpcredit等のツールで直接Bt8x8のコンフィグレーションレジスタをいじったほうが良いです。が、デバイスNo.が環境に依存するので、そこは各自調べてください。
intelsatの設定例(Autoexec.batに記述)
c:\dos\intelsat.exe 0D 00 /d:11
デバイスNo.11(おいらの環境)のレジスタオフセット0DHに00Hを書きこむ例です。このレジスタは、PCI Latency Timer値を8bitで書きこみます。単位は"PCI Clocks"です。また、下位3Bitがリードオンリーになっているそうなので、8Clocks単位で書きこむことになります。一般に64(40H)以上が良いとされていますが、Bt8x8のデータシートにはデフォルト値=0となっていたので、おいらは0にしています。検証の結果、おいらの環境では32(20H)以上、または0で横ラインずれノイズは出ませんでした。ただ、0にすると何かキャプチャが軽かったので。。。0が何を意味するのか不明なのがあれですけど(^-^;;
おまけ── Canopus FAQより ──
DV Raptorの対処法のなかに、Latency Timer強制変更(iniファイル編集)というのがありますが、恐らくDV Raptorのこのレジスタをいじっているんでしょうね。”システムBIOSの値を強制変更”なんて書かれていますが。。。結果的にはそうだけど、違うよ、それ(^-^;;
以下は、以前の古い記事です。消すのも勿体無いので、残しておくことにします(汗
- 現時点でわかっている情報
- INTELチップセットだと出ないらしい。
- VIAなチップセットだと出やすいらしい。
- AMD750はその中間程度(=おいら)。
- オンボードIDEだと駄目らしい。
- SCSIボード増設して、SCSI HDDに取りこむと出なくなるらしい。
- 反面、内蔵OK、増設IDEカード経由だと駄目な人もいるらしい。
- DMA転送をやめると出なくなります。もちろん、コマ落ち多発(ぉ
- 取りこみ解像度を低くすると良くなる。
- RGBよりは、YUY2、UYVY、BtYUVなどのYUV系が良いらしい。
- 情報お待ちしております(ぉ
ちなみに、「らしい」という表現は、いろいろな掲示板で手に入れた情報で、
断定調なのは自分の実験結果です。
- 予想されうる事項
- このことから予想されうる事項は、
Bt8x8とチップセットの相性
と、おいらの嫌いな言葉しか出てこないっす(滝涙)それだけじゃ意味無いので、ちょっとまとめてみます。
- ・ノイズの出易さは、VIA>AMD>INTEL
- これは掲示板情報からもほぼ確実みたいです。もちろん、VIA環境でも出ない方もいらっしゃるので悲観することは無いですが、これからキャプチャーマシンを組む方は極力INTELにしたほうが良いでしょう。AMD750も640x480x24Bitで出ないので、許容範囲です。
- ・PCIを通るデータの量が多くなると出易い。
- これも一致した見解みたいです。キャプチャーは膨大な量のデータをキャプチャボード→メモリ→GA、HDDと、PCIの能力が問われる行為です。なので、640x480よりは320x480、RGB32Bitよりは24Bit、さらにYUV系と、流れるデータそのものを減らすのが得策のようです。また、メモリ→GAを減らす手としてプレビューを切るのも若干効果ありです。PCI GAをお使いの方なら、AGP GAに変えても効果有ります(体験しました)。
他に有効な手立てを見つけられた方がいらっしゃったら、動画なんでも掲示板で情報を教えていただけると助かります(^^;;;
- (2001-06-24追記)
- その後、いろいろ情報が集まりまして、この現象は大体回避可能であることが分かってきました。まずはこの現象について新しい情報も含めおさらいしますと、
- PCIのバス配分能力(広い意味で転送能力も含む)に依存し、能力の低いものはバスビジーが発生しデータ化け(=横ラインずれノイズ)を起こすこと。
- 何もBt8x8に限った現象ではないこと。PCProや、DV Raptorでも起こるマザーは起こるそうです。
- これは個人的な感触ですが、VIA KT133チップセットは弱いみたいです(^-^;;
です。こういうことなので、チップセット依存はもとより、BIOS設定(特にPCIコンフィグレーションレジスタ)にも依存することがわかります。で、対処法ですが、
- 最新BIOSへのアップデート
- PCI Latency Timerを大きくする(64以上?・・・DV Raptorと同じ手法)
- その他PCIパフォーマンス、メモリパフォーマンスに関する設定をいじる
という対策で改善可能です。さあ、がんばってみよう!