Bagikan melalui


Penyetelan Televisi Analog

[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Pengambilan Audio/Video di Media Foundation. Fitur-fitur tersebut telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer, IMFMediaEngine , dan Pengambilan Audio/Video di Media Foundation alih-alih DirectShow, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

Penyetelan dikendalikan oleh filter Tuner TV, melalui antarmuka IAMTVTuner . Antarmuka IAMTVTuner mewarisi IAMTuner. Untuk mendapatkan pointer ke antarmuka, panggil metode ICaptureGraphBuilder2::FindInterface sebagai berikut:

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();
}

Parameter pertama menunjukkan untuk mencari upstram dari filter pengambilan.

Tabel Frekuensi

Secara internal, filter Tuner TV menyimpan daftar tabel frekuensi. Setiap tabel frekuensi sesuai dengan frekuensi siaran atau kabel untuk negara/wilayah tertentu. Ada juga tabel frekuensi "Unicable" generik, yang digunakan ketika negara/wilayah tidak memiliki serangkaian penetapan frekuensi standar.

Setiap tabel frekuensi berisi daftar frekuensi penyetelan. Untuk beberapa negara/wilayah, indeks dalam tabel sesuai langsung dengan nomor saluran — dengan kata lain, frekuensi untuk saluran n adalah entri ke-n dalam tabel. Namun, untuk beberapa negara/wilayah, tidak ada korespondensi langsung antara nomor saluran dan frekuensi. Dalam hal ini, aplikasi harus menyimpan daftar yang memetakan nomor saluran (biasanya dipilih oleh pengguna) ke entri tabel frekuensi. Misalnya, apa yang dilihat pengguna sebagai "saluran 5" mungkin nomor entri 12 dalam tabel frekuensi.

Untuk detailnya, lihat Penyetelan TV Analog Internasional.

Operasi Penyetelan Dasar

Jika tuner mendukung beberapa mode penerimaan, seperti televisi dan radio FM, panggil IAMTuner::p ut_Mode untuk memilih mode. Metode IAMTuner::GetAvailableModes mengembalikan semua mode yang didukung tuner. Misalnya, kode berikut memeriksa apakah tuner mendukung radio FM, dan jika demikian, beralih ke mode tersebut.

// 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);
}

Untuk mengatur negara/wilayah, panggil metode IAMTuner::p ut_CountryCode . Tuner menggunakan nilai ini untuk memilih tabel frekuensi yang sesuai. Lihat Penetapan Negara/Wilayah untuk informasi selengkapnya.

Untuk mengatur saluran, panggil metode IAMTuner::p ut_Channel . Argumen untuk metode ini sebenarnya bukan nomor saluran, melainkan indeks ke dalam tabel frekuensi saat ini. Seperti yang dijelaskan sebelumnya, nomor indeks mungkin atau mungkin tidak sesuai dengan nomor saluran. Metode IAMTuner::ChannelMinMax mengembalikan nilai indeks minimum dan maksimum untuk tabel frekuensi saat ini.

Mengesampingkan Entri Frekuensi

Ada kemungkinan bahwa beberapa entri dalam tabel frekuensi mungkin salah atau menjadi usang. Oleh karena itu, mekanisme disediakan untuk mengambil alih entri individual menggunakan kunci registri.

Spesifikasinya dijelaskan dalam topik International Analog TV Tuning. Setiap kunci registri mendefinisikan "ruang penyetelan" yang berisi satu atau beberapa subkey. Setiap subkuntang mengambil alih satu entri frekuensi. Untuk mengatur ruang penyetelan saat ini, gunakan metode IAMTuner::p ut_TuningSpace . Mengaktifkan ruang penyetelan akan menggantikan entri frekuensi dalam tabel frekuensi saat ini. Oleh karena itu, terserah aplikasi untuk mempertahankan korespondensi antara ruang penyetelan dan negara/wilayah. Pendekatan terbaik hanyalah menggunakan pengidentifikasi negara/wilayah sebagai nama ruang penyetelan.

Menyempurnakan Entri Frekuensi

Frekuensi siaran dapat disesuaikan naik atau turun beberapa kHz oleh stasiun siaran untuk mengurangi potensi gangguan dengan saluran tetangga. Mengingat frekuensi nominal, kartu tuner dapat memindai frekuensi yang tepat. Filter Tuner TV memiliki mekanisme untuk menyimpan frekuensi yang disesuaikan dalam registri.

Untuk setiap entri dalam tabel frekuensi, panggil metode put_Channel untuk menyempurnakan frekuensi tersebut. Tuner akan memindai frekuensi yang paling tepat. Anda dapat memeriksa apakah tuner mencapai kunci horizontal dengan memanggil IAMTuner::SignalPresent. Filter Tuner TV juga menyimpan hasilnya secara internal.

Setelah memindai semua frekuensi, panggil metode IAMTVTuner::StoreAutoTune untuk menulis nilai yang diperbarui ke dalam registri. Nilai yang diperbarui disimpan di bawah entri registri untuk ruang penyetelan saat ini.

Televisi Analog