рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдВрдбреЛрдЬ 7, рдбрд╛рдпрд░реЗрдХреНрдЯрдПрдХреНрд╕ 9 рдХреЗ рддрд╣рдд рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЯреНрдпреВрдирд░ рдореЙрдбрд▓ рдПрд╡рд░рдЯреАрд╡реА рдбреБрдУ рд╣рд╛рдЗрдмреНрд░рд┐рдб рдкреАрд╕реАрдЖрдИ-рдИ 2, рднрд╛рд╖рд╛ # рд╣реИ
рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдЯреАрд╡реА рдЯреЗрдХреНрдиреЛрд▓реЙрдЬреАрдЬ рдЗрдВрдЯрд░рдиреЗрд╢рдирд▓ ред рдпрд╣ рдЖрд▓реЗрдЦ рдбрд┐рдЬрд┐рдЯрд▓ рдЯреЗрд▓реАрд╡рд┐рдЬрд╝рди рдкреНрд░рд╕рд╛рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╛рдлрд╝ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЧреНрд░рд╛рдлрд╝ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рднреАред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
1. рдПрдХ рдЧреНрд░рд╛рдл рдмрдирд╛рдПрдБредрдореЗрд░реЗ рдЧреНрд░рд╛рдл рдореЗрдВ, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд┐рд▓реНрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:
тАв Microsoft DVB-T рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░рджрд╛рддрд╛
AVERMedia 716x BDA DVBT рдЯреНрдпреВрдирд░ (рдЖрдкрдХреЗ рдЯреНрдпреВрдирд░ рдореЙрдбрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░)
AVERMedia 716x BDA рдбрд┐рдЬрд┐рдЯрд▓ рдХреИрдкреНрдЪрд░ (рдЖрдкрдХреЗ рдЯреНрдпреВрдирд░ рдореЙрдбрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░)
тАв рдПрдордкреАрдИрдЬреА 2 рдбреЗрдорд▓реНрдЯреАрдкреНрд▓реЗрдХреНрд╕
тАв BDA MPEG2 рдкрд░рд┐рд╡рд╣рди рд╕реВрдЪрдирд╛ рдлрд╝рд┐рд▓реНрдЯрд░
тАв рдПрдордкреАрдИрдЬреА -2 рдЕрдиреБрднрд╛рдЧ рдФрд░ рддрд╛рд▓рд┐рдХрд╛рдПрдБ
тАв рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдбреАрдЯреАрд╡реА-рдбреАрд╡реАрдбреА рд╡реАрдбрд┐рдпреЛ рдбрд┐рдХреЛрдбрд░
тАв рд╡реАрдбрд┐рдпреЛ рдорд┐рдХреНрд╕рд┐рдВрдЧ рд░реЗрдВрдбрд░рд░ 9
2. рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░рджрд╛рддрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ:рдкреНрд░рджрд╛рддрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ DVBTuningSpace рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛ рдФрд░ DVB-T рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдПрдХ TuneRequest рдСрдмреНрдЬреЗрдХреНрдЯ DVBTuningSpace рд╡рд░реНрдЧ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
3. рд▓реЛрдХреЗрдЯрд░ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдЖрд╡реГрддреНрддрд┐ рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВредрд▓реЛрдХреЗрдЯрд░ DVBTLocator рд╡рд░реНрдЧ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рд╡рд╛рд╣рдХ рдЖрд╡реГрддреНрддрд┐ред (рдХреБрдЫ рдЯреНрдпреВрдирд░ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рд╕реНрдХреИрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЧрд▓рдд рд╡рд╛рд╣рдХ рдЖрд╡реГрддреНрддрд┐ рд╕реЗрдЯ рд╣реИ, рддреЛ рдЧреНрд░рд╛рдл рдЪреИрдирд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛)ред
рдЕрдм рд╣рдо рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реЗ рдирд┐рдкрдЯреЗрдВрдЧреЗ:
1. рдмреАрдбреАрдП рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░рджрд╛рддрд╛ рдбрд┐рдЬрд┐рдЯрд▓ рдЯреЗрд▓реАрд╡рд┐рдЬрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреНрд░рд╛рдлрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд░реЛрдд рдлрд╝рд┐рд▓реНрдЯрд░ рд╣реИред рдЗрд╕ рд╢реНрд░реЗрдгреА рдореЗрдВ рдХрдИ рдлрд┐рд▓реНрдЯрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:
рдУ рдбреАрд╡реАрдмреА-рдПрд╕ (рд╕реИрдЯреЗрд▓рд╛рдЗрдЯ рдЯреАрд╡реА) рдХреЗ рд▓рд┐рдП: рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдбреАрд╡реАрдмреА-рдПрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░рджрд╛рддрд╛
рдУ рдбреАрд╡реАрдмреА-рдЯреА (рд╕реНрдерд▓реАрдп рдЯреАрд╡реА) рдХреЗ рд▓рд┐рдП: рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдбреАрд╡реАрдмреА-рдЯреА рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░рджрд╛рддрд╛
рдУ рдбреАрд╡реАрдмреА-рд╕реА (рдХреЗрдмрд▓ рдЯреАрд╡реА) рдХреЗ рд▓рд┐рдП: рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдбреАрд╡реАрдмреА-рд╕реА рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░рджрд╛рддрд╛
рдУ рдПрдЯреАрдПрд╕ (рдЕрдореЗрд░рд┐рдХрди рдбрд┐рдЬрд┐рдЯрд▓ рдЯреАрд╡реА рд╕реНрдЯреИрдВрдбрд░реНрдб) рдХреЗ рд▓рд┐рдП: Microsoft рдПрдЯреАрдПрд╕рд╕реА рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░рджрд╛рддрд╛
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо Microsoft DVB-T рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░рджрд╛рддрд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ
рд╡рд╛рд╣рдХ рдЖрд╡реГрддреНрддрд┐ рдХреЗ рдЕрдиреБрд░реВрдк рдЪреИрдирд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, MPEG-2 рдЕрдиреБрднрд╛рдЧ рдФрд░ рдЯреЗрдмрд▓ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЖрдк рдкреАрдПрдЯреА рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдЪреИрдирд▓реЛрдВ рдХреЗ рдПрд╕рдЖрдИрдбреА рд╣реИрдВред
IDVBTuneRequest рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪреИрдирд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред put_SID рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЙрд╕ рдЪреИрдирд▓ рдХреЗ SID рдХреЛ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдиреЛрдЯ: рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдирдИ рдЖрд╡реГрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рдиреЗ рдкрд░, рдЖрдкрдХреЛ рдЧреНрд░рд╛рдлрд╝ рдХреЛ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛, рдЕрдЧрд░ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЧреНрд░рд╛рдлрд╝ рдХреЛ рд░реЛрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЬрдм рдЖрдк рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, MPEG-2 рд╕реЗрдХреНрд╢рди рдФрд░ рдЯреЗрдмрд▓реНрд╕ рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реЗ PAT рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдкрд░, рдЖрдкрдХреЛ рдПрдХ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗрдЧрд╛ рдЬреЛ рдирдП рдкреНрд░рджрд╛рддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИред
рдЖрд▓реЗрдЦреАрдп рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ DVB-T рдЧреНрд░рд╛рдл:
рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдЬреЛрдбрд╝реЗрдВ:
#region add filters methods int IGraphDVBT.AddNetworkProvider() { pNetworkProvider = (IBaseFilter)Activator.CreateInstance(Type.GetTypeFromCLSID(typeof(DVBTNetworkProvider).GUID)); return pGraph.AddFilter(pNetworkProvider, "Network Provider"); } int IGraphDVBT.AddTuner() { pDVBTTuner = DirectShowTools.CreateFilter(FilterCategory.BDASourceFiltersCategory, "AVerMedia 716x BDA DVBT Tuner"); return pGraph.AddFilter(pDVBTTuner, "DVBT Tuner"); } int IGraphDVBT.AddCapture() { pDigitalCapture = DirectShowTools.CreateFilter(FilterCategory.BDAReceiverComponentsCategory, "AVerMedia 716x BDA Digital Capture"); return pGraph.AddFilter(pDigitalCapture, "Digital Capture"); } int IGraphDVBT.AddMPEG2Demultiplexer() { pMPEGDemux = (IBaseFilter)new MPEG2Demultiplexer(); return pGraph.AddFilter(pMPEGDemux, "MPEG2 Demultiplexer"); } int IGraphDVBT.AddBDAMPEG2TIF() { pBDAMPEGTIF = DirectShowTools.CreateFilter(FilterCategory.LegacyAmFilterCategory, "BDA MPEG2 Transport Information Filter"); return pGraph.AddFilter(pBDAMPEGTIF, "BDA MPEG2 TIF"); } int IGraphDVBT.AddMPEG2SectAndTables() { pMPEGSectAndTables = DirectShowTools.CreateFilter(FilterCategory.LegacyAmFilterCategory, "MPEG-2 Sections and Tables"); return pGraph.AddFilter(pMPEGSectAndTables, "MPEG2 Section and Tables"); } int IGraphDVBT.AddVideoDecoder() { pVideoDecoder = DirectShowTools.CreateFilter(FilterCategory.LegacyAmFilterCategory, "Microsoft DTV-DVD Video Decoder"); return pGraph.AddFilter(pVideoDecoder, "DTV-DVD Video Decode"); } int IGraphDVBT.AddVideoRenderer() { pVideoRenderer = (IBaseFilter)new VideoMixingRenderer9(); return pGraph.AddFilter(pVideoRenderer, "Video Renderer"); } int IGraphDVBT.AddAudioDecoder() { pAudioDecoder = DirectShowTools.CreateFilter(FilterCategory.LegacyAmFilterCategory, "Microsoft DTV-DVD Audio Decoder"); return pGraph.AddFilter(pAudioDecoder, "DTV-DVD Audio Decode"); } int IGraphDVBT.AddAudioRenderer() { pAudioRenderer = DirectShowTools.CreateFilter(FilterCategory.AudioRendererCategory, "Default DirectSound Device"); return pGraph.AddFilter(pAudioRenderer, "Audio Renderer"); } #endregion
рдлрд╝рд┐рд▓реНрдЯрд░
рдкрд┐рди рдХреЛ рдЖрдкрд╕ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
(рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд┐рди рдирд╛рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ) :
int IGraphDVBT.ConnectFilters() { int hr; IPin outPin; IPin inPin; outPin = DirectShowTools.FindPin(pNetworkProvider, new string[] { "Antenna Out" }); inPin = DirectShowTools.FindPin(pDVBTTuner, new string[] { "0" }); hr = pGraph.Connect(outPin, inPin); if (hr < 0) return hr; outPin = DirectShowTools.FindPin(pDVBTTuner, new string[] { "1" }); inPin = DirectShowTools.FindPin(pDigitalCapture, new string[] { "0" }); hr = pGraph.Connect(outPin, inPin); if (hr < 0) return hr; outPin = DirectShowTools.FindPin(pDigitalCapture, new string[] { "1" }); inPin = DirectShowTools.FindPin(pMPEGDemux, new string[] { "MPEG-2 Stream" }); hr = pGraph.Connect(outPin, inPin); if (hr < 0) return hr; outPin = DirectShowTools.FindPin(pMPEGDemux, new string[] { "001" }); inPin = DirectShowTools.FindPin(pBDAMPEGTIF, new string[] { "IB Input" }); hr = pGraph.Connect(outPin, inPin); if (hr < 0) return hr; outPin = DirectShowTools.FindPin(pMPEGDemux, new string[] { "002" }); inPin = DirectShowTools.FindPin(pMPEGSectAndTables, new string[] { "In" }); hr = pGraph.Connect(outPin, inPin); if (hr < 0) return hr; outPin = DirectShowTools.FindPin(pMPEGDemux, new string[] { "003" }); inPin = DirectShowTools.FindPin(pVideoDecoder, new string[] { "Video Input" }); hr = pGraph.Connect(outPin, inPin); if (hr < 0) return hr; outPin = DirectShowTools.FindPin(pMPEGDemux, new string[] { "007" }); inPin = DirectShowTools.FindPin(pAudioDecoder, new string[] { "In" }); hr = pGraph.Connect(outPin, inPin); if (hr < 0) return hr; outPin = DirectShowTools.FindPin(pVideoDecoder, new string[] { "Video Output 1" }); inPin = DirectShowTools.FindPin(pVideoRenderer, new string[] { "VMR Input0" }); hr = pGraph.Connect(outPin, inPin); if (hr < 0) return hr; outPin = DirectShowTools.FindPin(pAudioDecoder, new string[] { "Out" }); inPin = DirectShowTools.FindPin(pAudioRenderer, new string[] { "Audio Input pin (rendered)" }); hr = pGraph.Connect(outPin, inPin); if (hr < 0) return hr; return 0; }
рдЕрдм DVB-T рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ DVBTuningSpace рд╡рд░реНрдЧ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд DVB-T рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред Put_TuneRequest рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдкреНрд░рджрд╛рддрд╛ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ рд╡рд╕реНрддреБ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддреЗ рд╣реИрдВред
int IGraphDVBT.SetNetworkProvider() { int hr; IDVBTuningSpace tuningSpace = (IDVBTuningSpace)new DVBTuningSpace(); hr = tuningSpace.put_UniqueName("DVBT TuningSpace"); if (hr < 0) return hr; hr = tuningSpace.put_FriendlyName("DVBT TuningSpace"); if (hr < 0) return hr; hr = tuningSpace.put_NetworkType("{" + typeof(DVBTNetworkProvider).GUID.ToString() + "}"); if (hr < 0) return hr; hr = tuningSpace.put_SystemType(DVBSystemType.Terrestrial); if (hr < 0) return hr; ITuneRequest tr; hr = tuningSpace.CreateTuneRequest(out tr); if (hr < 0) return hr; IDVBTuneRequest tuneRequest = (IDVBTuneRequest)tr; hr = (pNetworkProvider as ITuner).put_TuneRequest(tuneRequest); if (hr < 0) return hr; return 0; }
рдЬреБрдбрд╝реЗ рд╣реБрдП рдЧреНрд░рд╛рдл рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдЯреНрдпреВрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ IDVBTLocator рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рд╡рд╛рд╣рдХ рдЖрд╡реГрддреНрддрд┐ рд╕реЗрдЯ рдХрд░реЗрдВрдЧреЗред рд╣рдореЗрдВ рдЕрдиреНрдп рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрдирдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
private int SetDVBTLocator(int frequency, out IDVBTLocator locator) { int hr = 0;
рдЕрдм рдЖрдк рд╡рд╛рд╣рдХ рдЖрд╡реГрддреНрддрд┐ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдЪреИрдирд▓ рдЗрд╕ рдкрд░ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкреНрд░рджрд╛рддрд╛ рд╕реЗ рдзреБрди рдорд┐рд▓рддреА рд╣реИ, рд╣рдорд╛рд░реЗ рд▓реЛрдХреЗрдЯрд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ, рд╣рдорд╛рд░реЗ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдирдИ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ, рдФрд░ IMpeg2Data рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдореЗрдВ 'MPEG-2 рдЕрдиреБрднрд╛рдЧреЛрдВ рдФрд░ рдЯреЗрдмрд▓реНрд╕' рдлрд┐рд▓реНрдЯрд░ рд╕реЗ PAT рддрд╛рд▓рд┐рдХрд╛ рдорд┐рд▓рддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд╛рд╣рдХ рдЖрд╡реГрддреНрддрд┐ рдХреЗ рдЕрдиреБрд░реВрдк рдЪреИрдирд▓ рд╣реЛрдВрдЧреЗред ред рдпрджрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЪрдпрдирд┐рдд рдЖрд╡реГрддреНрддрд┐ рдЧрд▓рдд рд╣реИ, рддреЛ GetPAT рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ HRESULT рд▓реМрдЯрд╛ рджреЗрдЧреАред
public string[] SetFrequency(int frequency) { if (((IGraphDVBT)ConcreteGraph).NetworkProvider == null || ((IGraphDVBT)ConcreteGraph).TablesAndSections == null) { return null; } int hr = 0; IPAT PAT;
рдиреЛрдЯ: рдЖрдк рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЧреНрд░рд╛рдлрд╝ рдХреЛ рдЪрд▓рд╛рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ (рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ)ред рдпрд╣ IMediaControl рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪреИрдирд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, IDVBTuneRequest рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред put_SID рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЙрд╕ рдЪреИрдирд▓ рдХреЗ SID рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рдЬрд╝рд░реВрд░рдд рд╣реИред

рдкреВрд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛрдб рдирд┐рдореНрди рд▓рд┐рдВрдХ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ:
рдХреЛрдб