信頼できるタイムレコーダーを手に入れるために、奇妙に思えるかもしれない何かをすることを考えています。バッファリングやオーディオタイムスタンプアービトレーションを単独で実行しないWiFi接続のオーディオ出力デバイスにバッファをプッシュする必要があります。ハードウェアサンプラーデバイスのタイミングと合理的に一致する定期的な間隔でバッファーを送信しないと、再生が破損し、途切れ始めます。
以下で説明する「ハック」を検討する前に、まず高解像度のタイミングを実行するための通常の容疑者を調べました。QueryPerformanceCounterは、Harddware Abstraction Layerでのバグのあるハードウェア実装と、QPC計算を台無しにする可変CPU速度ステッピングの複雑さについて読むまでは良さそうに見えました。また、Windowsマルチメディアタイマーは1ミリ秒までしか正確ではないため、44.1kHzのような高いサンプリングレートでの使用は疑わしいものです。そのため、私は次のことを検討しています。
CPUクロック周波数、したがってQueryPerformanceCounterが間違っていますか?
私の知る限り、現在製造されているすべてのWindows PCには、少なくともマイクのハードウェアサポートがあります。私が検討しているのは、既存のキャプチャデバイスのクロックを「ピギーバック」することです。WiFiオーディオ出力デバイスに送信されるオーディオの真のソースであるDirectShowプッシュソースフィルターがあります。キャプチャフィルターのサンプルレートをプッシュソースフィルターと一致させるように強制します。次に、セマフォを使用して、キャプチャフィルターのFillBuffer()呼び出しがバッファーを生成し、それによってキャプチャフィルターのバッファータイミングに乗るまで、プッシュソースフィルターのFillBuffer()呼び出しをロックします。
少なくとも1つのキャプチャデバイスを備えたユーザーのPCを信頼できますか?また、全体的な戦略についてのコメントをいただければ幸いです。