類比電視微調

[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]

微調是由 TV Tuner 篩選器透過 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();
}

第一個參數表示從擷取篩選準則向上游搜尋。

頻率資料表

在內部,電視微調器篩選器會保留頻率資料表的清單。 每個頻率資料表都會對應至指定國家/地區的廣播或纜線頻率。 另外還有一般「不可設定」頻率資料表,當國家/地區沒有一組標準的頻率指派時,就會使用這個資料表。

每個頻率資料表都包含微調頻率的清單。 對於某些國家/地區,資料表中的索引會直接對應到通道號碼,換句話說,channel n 的頻率是資料表中的第 n 個專案。 不過,對於某些國家/地區,通道號碼和頻率之間沒有直接對應。 在此情況下,應用程式必須保留一份清單,以將通道號碼對應 (通常由使用者) 頻率資料表專案選擇。 例如,使用者看到的「通道 5」可能是頻率資料表中的專案號碼 12。

如需詳細資訊,請參閱 國際類比電視微調

基本微調作業

如果微調器支援多種接收模式,例如電視和 FM 無線電,請呼叫 IAMTuner::p ut_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::p ut_CountryCode 方法。 微調工具會使用此值來選取適當的頻率資料表。 如需詳細資訊 ,請參閱國家/地區指派

若要設定通道,請呼叫 IAMTuner::p ut_Channel 方法。 這個方法的引數實際上不是通道編號,而是目前頻率資料表中的索引。 如先前所述,索引編號可能或可能不會對應至通道號碼。 IAMTuner::ChannelMinMax方法會傳回目前頻率資料表的最小和最大索引值。

覆寫頻率專案

頻率資料表中的某些專案可能不正確或已過時。 因此,會提供使用登錄機碼覆寫個別專案的機制。

國際類比電視微調主題會說明這些細節。 每個登錄機碼都會定義「微調空間」,其中包含一或多個子機碼。 每個子機碼都會覆寫一個頻率專案。 若要設定目前的微調空間,請使用 IAMTuner::p ut_TuningSpace 方法。 啟用微調空間會覆寫目前頻率資料表中的頻率專案。 因此,應用程式必須維持調整空間與國家/地區之間的對應。 最佳方法是使用國家/地區識別碼作為微調空間的名稱。

微調頻率專案

廣播頻率可由廣播站向上或向下調整數 kHz,以減少鄰近通道的潛在干擾。 假設有標準頻率,微調器卡片可以掃描確切的頻率。 電視微調器篩選器有一種機制,可在登錄中儲存調整的頻率。

針對 frequency 資料表中的每個專案,呼叫 put_Channel 方法來微調該頻率。 微調器會掃描最精確的頻率。 您可以藉由呼叫 IAMTuner::SignalPresent來檢查微調工具是否達到水準鎖定。 電視微調器篩選器也會在內部儲存結果。

掃描所有頻率之後,請呼叫 IAMTVTuner::StoreAutoTune 方法,將更新的值寫入登錄中。 更新的值會儲存在目前微調空間的登錄專案底下。

類比電視