DirectShow рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд┐рдЬрд┐рдЯрд▓ рдЯреЗрд▓реАрд╡рд┐рдЬрди рдкреНрд░рд╕рд╛рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди

рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдВрдбреЛрдЬ 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; // -- LOCATOR -- locator = (IDVBTLocator)new DVBTLocator(); //set frequency hr = locator.put_CarrierFrequency(frequency); /* kGz */ if (hr < 0) return hr; //Not set parameters hr = locator.put_Bandwidth(-1); /* in Mgz */ if (hr < 0) return hr; hr = locator.put_SymbolRate(-1); if (hr < 0) return hr; hr = locator.put_OtherFrequencyInUse(false); if (hr < 0) return hr; hr = locator.put_LPInnerFEC(FECMethod.MethodNotSet); if (hr < 0) return hr; hr = locator.put_LPInnerFECRate(BinaryConvolutionCodeRate.RateNotSet); if (hr < 0) return hr; hr = locator.put_HAlpha(HierarchyAlpha.HAlphaNotSet); if (hr < 0) return hr; hr = locator.put_Mode(TransmissionMode.ModeNotSet); if (hr < 0) return hr; hr = locator.put_InnerFEC(FECMethod.MethodNotSet); if (hr < 0) return hr; hr = locator.put_InnerFECRate(BinaryConvolutionCodeRate.RateNotSet); if (hr < 0) return hr; hr = locator.put_OuterFEC(FECMethod.MethodNotSet); if (hr < 0) return hr; hr = locator.put_OuterFECRate(BinaryConvolutionCodeRate.RateNotSet); if (hr < 0) return hr; hr = locator.put_Modulation(ModulationType.ModNotSet); if (hr < 0) return hr; return 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; //Table with SID IDVB_SDT SDT; IDVB_SIT SIT; int channelCount = 0; short pwVal = 0; ITuneRequest tuneRequest = null; //get tune request hr = (((IGraphDVBT)ConcreteGraph).NetworkProvider as ITuner).get_TuneRequest(out tuneRequest); if (hr < 0 || tuneRequest == null) { return null; } IDVBTuneRequest DVBtuneRequest = tuneRequest as IDVBTuneRequest; IDVBTLocator locator; //set locator with necessary frequency hr = SetDVBTLocator(frequency, out locator); if (hr < 0 || locator == null) { return null; } hr = DVBtuneRequest.put_Locator(locator); if (hr < 0) { return null; } //mediaControl.Stop(); hr = (((IGraphDVBT)ConcreteGraph).NetworkProvider as ITuner).put_TuneRequest(DVBtuneRequest); if (hr < 0) { return null; } //mediaControl.Run(); //value is channel SID IDvbSiParser parser = (IDvbSiParser)new DvbSiParser(); hr = parser.Initialize(((IGraphDVBT)ConcreteGraph).TablesAndSections as IMpeg2Data); if (hr < 0) { return null; } //get table with channels hr = parser.GetPAT(out PAT); if (hr < 0) { //DsError.ThrowExceptionForHR(hr); return null; } //get count of channels hr = PAT.GetCountOfRecords(out channelCount); if (hr < 0) { return null; } string[] channelsDVBT = new string[channelCount]; //put channels number in the list for (int i = 0; i < channelCount; i++) { PAT.GetRecordProgramNumber(i,out pwVal); channelsDVBT[i] = "Channel_" + pwVal.ToString(); } return channelsDVBT; } 





рдиреЛрдЯ: рдЖрдк рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЧреНрд░рд╛рдлрд╝ рдХреЛ рдЪрд▓рд╛рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ (рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ)ред рдпрд╣ IMediaControl рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪреИрдирд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, IDVBTuneRequest рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред put_SID рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЙрд╕ рдЪреИрдирд▓ рдХреЗ SID рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рдЬрд╝рд░реВрд░рдд рд╣реИред

 /// <summary> /// Take tune request from Network Provider /// Set New SID and put tune request on the Network Provider /// </summary> /// <param name="SID">channel SID</param> public void SetDVBTChannels(int SID) { int hr = 0; ITuneRequest tuneRequest = null; //get tune request hr = (((IGraphDVBT)ConcreteGraph).NetworkProvider as ITuner).get_TuneRequest(out tuneRequest); if (tuneRequest == null) { return; } IDVBTuneRequest DVBtuneRequest = tuneRequest as IDVBTuneRequest; //set new channel hr = DVBtuneRequest.put_SID(SID); //put tune request hr = (((IGraphDVBT)ConcreteGraph).NetworkProvider as ITuner).put_TuneRequest(DVBtuneRequest); } 




рдЫрд╡рд┐

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

Source: https://habr.com/ru/post/In127913/


All Articles