HTC DriverGate –オーディオバージョン

読書時間アイコン 4分。 読んだ


読者は MSpoweruser のサポートを支援します。私たちのリンクを通じて購入すると、手数料が発生する場合があります。 ツールチップアイコン

MSPoweruser の編集チームの維持にどのように貢献できるかについては、開示ページをお読みください。 続きを読む

ドライバーゲート

さて、Windows MobileのXNUMX日かXNUMX日が気分が良くなった後、私たちはデバイスを不必要に悩ませているいくつかの問題に戻ります。

ドライバーは、HTC Touch Diamond、Touch Pro、HD、Xperiaなどのすべてのハイエンドの現在の世代のデバイスを含む選択されたHTCデバイスに再び影響を与えているようです。 ヘッドホンまたはスピーカーから定期的に(通常は5分に2回)サウンドを再生すると、オーディオに短い「スキップ」が聞こえます。 音はラグ/スキップ/しゃっくり/ダニ/ブリップとして説明されています。 問題は、waveデバイスドライバーまたはおそらくハードウェアwaveデバイス自体に深くあるように見えます(Qualcommが再び動作していますか?)この問題はAXNUMXDPには存在しないようです。

HTCが問題を解決したように見えるので、問題は主にサードパーティのプレーヤーに影響しますが、カスタムウェーブドライバーを構築することによって自分自身だけに影響します。

Conduits Pocket Playerチームはこの問題を調査しており、落胆して戻ってきました。 これは、その主題について言わなければならなかったことです。

HTCオーディオスキップの問題に関して広範なテストを実施しましたが、コンジットが対処できるものではないという結論に達しました。 HTC Audio Managerプログラム、およびその他のいくつかのファイル(HTCのDirectShow Audio Renderer HTCRenderFlt2.dllやHTCADXRenderer4.dllなど)を分析したところ、どちらもWaveOutドライバーに対して非常に特殊なシステムコールを行っていることがわかりました。

これが私たちが見つけたもののいくつかの技術的な詳細です。 まず、スレッドまたはプロセスの優先順位が問題とは何の関係もないと考えています。 通常のオーディオアプリケーションは、システムがプルして再生するためのオーディオデータでオーディオ出力を「フル」に保つ「waveOutバッファ」のサイクルを使用します。 アプリケーションは、標準のwaveOutWrite関数を使用してこれらのバッファーを埋めます。 Pocket Playerの観点からは、これらのバッファーは常にいっぱいであり、優先順位を調整してもこれには影響しません。 (HTC TyTNに影響を与えた)オーディオスキップを改善するXNUMXつの方法は、HKLM \ Drivers \ Builtin \ WaveOutの下のレジストリ値を編集して、WaveOutドライバーのスレッド優先度を上げることでした。 このアプローチはここでは機能しませんでした。 興味深いことに、これらのスキップの問題はデスクトップPCで発生します。 そこでは、問題は、処理に「時間がかかりすぎる」リアルタイムドライバーに関連しており、オーディオドライバーが次のサウンドバッチを処理できなくなります。 これは、一部のMacBookドライバを搭載したVistaで発生します。

オーディオマネージャーは、標準のwaveOut呼び出しとは異なる出力メカニズムを使用します。これは、オーディオを送信する別の方法であるDirectShowオーディオレンダラーフィルターを使用します。 それがどのように機能するかの内部を見ると、それは完全に異なるメカニズムを使用しています。 独自のwaveOutMessage呼び出しを使用して新しいメッセージキューを開き、オーディオが「ストリーミング」されます。

Pocket Player(およびその他のアプリケーション)は、独自のwaveOutルーチンの代わりにHTC Audio Rendererを使用することでこの問題を解決できる可能性がありますが、クロスフェードやその他のPocketPlayer固有の機能が失われます。 DirectShowフィルターグラフ(オーディオレンダラーを完備)を作成するための初期テストをいくつか行いましたが、それでもスキップが発生したため、追加の手順が必要です。

その結果、コンジットはこれを、製造元が修正する必要のあるデバイス固有の問題と見なしています。 または、HTCがオーディオ出力ドライバーの特別な「ストリーミングモード」を文書化する場合は、そのモデルへの適応を検討できます。

ROMからWavedev.dllを抽出すると、「MP3ストリーム」などに関する無数のデバッグメッセージが表示され、ソフトウェアからの音楽の完全に別個のオーディオパスが示されます。 必要に応じて、DirectShow出力を使用するWaveOut出力プラグイン(出力ルーチンは他のプラグインタイプと同じようにプライベートプラグインアーキテクチャを使用します)を書き直します。

HTCは、サードパーティのソフトウェアをサポートしていないとして、問題をどのように解決したかを文書化することを拒否しました。

もちろん、XDA-Developersは、このような状況を嘘にすることは決してありません。 Thx1200は、この問題に対するオープンソースソリューションを作成し、コミュニティで利用できるようにすることができる開発者に報奨金を提供し始めています。 現在の賞金はわずか30ドルですが、サードパーティのオーディオソフトウェアを使用している人なら誰でも、この厄介な問題に対処するためにさらに多くの寄付を生み出すことができると確信しています。

XDA-Developersのスレッド全文をここで読む、そして、これが修正が必要な状況であると感じた場合にも、誓約を追加することを忘れないでください。

トピックの詳細: オーディオドライバー, HTC