Fine-Tuning情報の収集
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
ケーブル周波数は一般に正確であると予想されますが、ブロードキャスト周波数は、近隣チャネルとの潜在的な干渉を軽減するために、ブロードキャストステーションによって数kHzの上下に調整される可能性があります。
テレビチューナフィルタがチャンネルにチューニングされると、最も正確な信号をスキャンします。 この情報を後続のチューニング操作のためにレジストリに保存するには、次の操作を行います。
- IAMTuner::ChannelMinMax を呼び出して、現在の頻度テーブル内の頻度エントリの範囲を決定します。
- 範囲内の頻度インデックスごとに IAMTuner::p ut_Channel メソッドを 1 回呼び出します。
- IAMTVTuner::StoreAutoTune を呼び出して、微調整情報をレジストリに保存します。 情報は、現在のチューニング領域のレジストリ キーの下に格納されます。
これらの手順を示すコードは次のようになります。
long lMin = 0, lMax = 0;
hr = pTuner->ChannelMinMax(&lMin, &lMax);
if (SUCCEEDED(hr))
{
for (long i = lMin; i <= lMax; i++)
{
pTuner->put_Channel(i, AMTUNER_SUBCHAN_DEFAULT,
AMTUNER_SUBCHAN_DEFAULT)
}
pTuner->StoreAutoTune();
}
以前のバージョンの TV チューナ フィルターでは、微調整のために IAMTVTuner::AutoTune メソッドが推奨されていました。 ただし、このメソッドは頻度のオーバーライドを無視するため、その使用は推奨されなくなりました。 次のコードは AutoTune メソッドと同じですが、頻度オーバーライドで正しく動作します。
HRESULT MyAutoTune(IAMTVTuner *pTuner, long lIndex, long *plFoundSignal)
{
long SignalStrength = AMTUNER_NOSIGNAL;
HRESULT hr;
hr = pTuner->put_Channel(lIndex, AMTUNER_SUBCHAN_DEFAULT, AMTUNER_SUBCHAN_DEFAULT);
if (NOERROR == hr)
pTuner->SignalPresent(&SignalStrength);
*plFoundSignal = (SignalStrength != AMTUNER_NOSIGNAL);
return hr;
}
ブロードキャスト受信では、画像は表示可能ですが、常に水平ロックを取得できるわけではありません。 このような場合、チューナハードウェアは周波数ロックを持ちますが、デコーダーは水平ロックを持っていません。 この条件は、戻りコードを調べることで 、put_Channel または AutoTune を使用するときに検出できます。
値 | 説明 |
---|---|
S_OK | チューニング操作に成功し、チューナが周波数ロックを取得しました。 |
S_FALSE | チューニング操作中にエラーはありませんでしたが、チューナは周波数ロックを取得できませんでした。 この操作の結果として、表示可能なチャネルが存在する可能性は非常に低いです。 |
その他のリターン コードは、何らかのエラーが発生したことを示します。
S_OKの戻り値は、デコーダーに水平ロックがあることを保証するものではありません。 AutoTune メソッドは FoundSignal パラメーターを更新して、水平ロックが達成されたかどうかを示します。 IAMTuner::SignalPresent メソッドは同じ情報を返します。
ただし、戻り値がS_OK場合、チューナが周波数ロックを報告しているため、アプリケーションには FoundSignal パラメーターを無視するオプションがあります。 ノイズの周波数ロックの可能性がありますが、この可能性は、表示可能なチャネルをスキップする可能性と比較して検討する必要があります。
レジストリ変換
頻度のオーバーライドをサポートするために、微調整情報を保持するレジストリ キーの内部形式が変更されました。 元の形式は下位互換性のために引き続きサポートされていますが、頻度のオーバーライドはサポートされていません。
IAMTVTuner::StoreAutoTune メソッドが呼び出されるたびに、古いレジストリ形式が新しい形式に変換されます。 アプリケーションで頻度オーバーライドを追加する場合は、 StoreAutoTune メソッドを呼び出して新しいレジストリ形式に変換する必要があります。 StoreAutoTune を呼び出す前に、微調整情報を収集する必要はありません。
関連トピック