模擬電視調諧
[與此頁面相關聯的功能,DirectShow是舊版功能。 它已被 MediaPlayer、IMFMediaEngine,以及媒體基礎中的音訊/視訊擷取功能 取代。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft強烈建議新程式代碼盡可能在媒體 基礎中使用 MediaPlayer、IMFMediaEngine 和 音訊/視訊擷取,而不是 DirectShow。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]
頻道調整是由電視調諧器控制,透過 IAMTVTuner 介面。 IAMTVTuner 介面會繼承 IAMTuner。 若要取得介面的指標,請呼叫 ICaptureGraphBuilder2::FindInterface 方法,如下所示:
IAMTVTuner *pTuner = NULL;
hr = pBuild->FindInterface(
&LOOK_UPSTREAM_ONLY, // Look upstream from pCap.
NULL, // No particular media type.
pCap, // Pointer to the capture filter.
IID_IAMTVTuner, (void**)&pTuner);
if (SUCCEEDED(hr))
{
// Use pTuner ...
pTuner->Release();
}
第一個參數表示要從擷取篩選中搜尋上游。
頻率數據表
在內部,TV Tuner 篩選器會保留頻率數據表的清單。 每個頻率數據表都會對應至指定國家/地區的廣播或纜線頻率。 也有一般「Unicable」頻率表,當國家/地區沒有標準的頻率指派集時,會使用這個頻率表。
每個頻率數據表都包含微調頻率的清單。 對於某些國家/地區,表格中的索引會直接對應至通道號碼,也就是說,渠道 n 的頻率是表格中的第 n 個條目。 不過,對於某些國家/地區,通道號碼和頻率之間沒有直接的對應。 在此情況下,應用程式必須保留將通道號碼(通常是由使用者選擇)對應至頻率數據表項目的清單。 例如,用戶視為「通道 5」的內容可能是頻率數據表中的項目號碼 12。
如需詳細資訊,請參閱 國際模擬電視微調。
基本微調作業
如果調諧器支持多種接收模式,例如電視和 FM 電臺,請呼叫 IAMTuner::put_Mode 來選取模式。 IAMTuner::GetAvailableModes 方法會傳回微調器支援的所有模式。 例如,下列程式代碼會檢查微調器是否支援 FM 無線電,如果是的話,則切換至該模式。
// Check whether the mode is supported.
long lModes = 0;
hr = m_pTuner->GetAvailableModes(&lModes);
if (SUCCEEDED(hr) && (lModes & AMTUNER_MODE_FM_RADIO))
{
// Set the mode.
hr = pTuner->put_Mode(AMTUNER_MODE_FM_RADIO);
}
若要設定國家/地區,請呼叫 IAMTuner::put_CountryCode 方法。 微調器會使用此值來選取適當的頻率數據表。 如需詳細資訊,請參閱 國家/地區指派。
若要設定通道,請呼叫 IAMTuner::put_Channel 方法。 這個方法的自變數實際上不是通道號碼,而是目前頻率數據表中的索引。 如先前所述,索引編號可能或可能不會對應至通道號碼。 IAMTuner::ChannelMinMax 方法會傳回目前頻率數據表的最小和最大索引值。
覆寫頻率條目
頻率數據表中的某些條目可能不正確或已過時。 因此,會提供一個機制,以使用註冊表機碼覆寫個別項目。
這些細節會在國際類比電視微調 主題中說明。 每個登錄機碼都會定義包含一或多個子機碼的「微調空間」。 每個子鍵都會覆蓋一個頻率項目。 若要設定目前的調諧空間,請使用 IAMTuner::put_TuningSpace。 啟用調整空間會覆寫當前頻率表中的頻率條目。 因此,應用程式必須維護微調空間與國家/地區之間的對應。 最佳方法是使用國家/地區標識符作為微調空間的名稱。
微調頻率條目
廣播站可上下調整數 kHz 的廣播頻率,以減少鄰近通道的潛在干擾。 根據名義頻率,調諧卡可以掃描確切的頻率。 TV Tuner 篩選器有一個機制可以將調校過的頻率儲存在註冊表中。
針對頻率表中的每個條目,呼叫 put_Channel 方法來調整至該頻率。 微調器會掃描最精確的頻率。 您可以呼叫 IAMTuner::SignalPresent來檢查微調器是否達到水平鎖定。 TV 調諧器濾鏡也會在內部儲存結果。
掃描所有頻率之後,呼叫 IAMTVTuner::StoreAutoTune 方法,將更新的值寫入登錄中。 更新的值會儲存在目前調整空間的註冊表項下。
相關主題