I am trying to understand how most applications configure ATSC. Suppose I already have an ATSC setup request that I received through
ITuneRequest *pITuneRequest = NULL;
pATSCTuningSpace->CreateTuneRequest(&pTuneRequest)`
There seem to be three common methods:
1) Create a list of all major.minor channels and map them to a physical channel , then tune in to this physical channel whenever a major.minor request is requested. This map is built using the following code:
for i = 2 to 69
tune_to_physical_channel(i)
if (tuner_has_lock())
add_to_known_list(i, major_of(i), minor_of(i));
next
The user interface displays only the list of major.minor channels for the user.
, , , , , ; , 30 43.1, , , 43.2! ?
2) major.minor. , . , : 8.1, 8.2, 43.1, 43.2, 43.3, 49.1, 49.2.
8.1 8.2 , :
IATSCChannelTuneRequest* pIATSCChannelTuneRequest = NULL;
IATSCLocator *pIATSCLocator = NULL;
hr = pITuneRequest->QueryInterface( IID_IATSCChannelTuneRequest,
(void**)&pIATSCChannelTuneRequest);
pIATSCChannelTuneRequest->put_Channel(lMajorChannel);
pIATSCChannelTuneRequest->put_MinorChannel(lMinorChannel);
::CoCreateInstance( CLSID_ATSCLocator, 0, CLSCTX_INPROC, IID_IATSCLocator,
(void**)&pIATSCLocator);
pIATSCLocator->put_CarrierFrequency(-1);
pIATSCLocator->put_SymbolRate(-1);
pIATSCLocator->put_PhysicalChannel(-1);
pIATSCChannelTuneRequest->put_Locator(pIATSCLocator);
. ? ( WinTV) .
3) major.minor, . , , , , , . , .
, , major.minor → frequency, # 1:
foreach (frequency f in frequency_array)
tune_to_frequency (f)
if (tuner_has_lock())
add_to_known_list(f, major_of(f), minor_of(f));
next
, : / ATSC?