コード例 #1
0
        public DVBTTuning()
        {
            InitializeComponent();

            int hr = 0;

            this.tuningSpace = (IDVBTuningSpace) new DVBTuningSpace();
            hr = this.tuningSpace.put_UniqueName("DVBT TuningSpace");
            hr = this.tuningSpace.put_FriendlyName("DVBT TuningSpace");
            hr = this.tuningSpace.put__NetworkType(typeof(DVBTNetworkProvider).GUID);
            hr = this.tuningSpace.put_SystemType(DVBSystemType.Terrestrial);

            ITuneRequest tr = null;

            hr = this.tuningSpace.CreateTuneRequest(out tr);
            DsError.ThrowExceptionForHR(hr);

            this.tuneRequest = (IDVBTuneRequest)tr;

            hr = this.tuneRequest.put_ONID(-1);
            hr = this.tuneRequest.put_TSID(-1);
            hr = this.tuneRequest.put_SID(-1);

            IDVBTLocator locator = (IDVBTLocator) new DVBTLocator();

            hr = locator.put_CarrierFrequency(-1);
            hr = tr.put_Locator(locator as ILocator);
        }
コード例 #2
0
        public void DoTests()
        {
            try
            {
                locator = (IDVBTLocator) new DVBTLocator();

                TestBandwidth();
                TestGuard();
                TestHAlpha();
                TestLPInnerFEC();
                TestMode();
                TestOtherFrequencyInUse();
            }
            finally
            {
                Marshal.ReleaseComObject(locator);
            }
        }
コード例 #3
0
        public static ITuneRequest CreateTuneRequest(ITuningSpace ts)
        {
            int          hr = 0;
            ITuneRequest tr = null;
            Guid         networkType;

            hr = ts.CreateTuneRequest(out tr);
            DsError.ThrowExceptionForHR(hr);

            hr = ts.get__NetworkType(out networkType);

            if (networkType == typeof(ATSCNetworkProvider).GUID)
            {
                // I know nothing about ATSC so thoses lines are pure speculation
                hr = (tr as IATSCChannelTuneRequest).put_Channel(-1);

                IATSCLocator locator = (IATSCLocator) new ATSCLocator();
                hr = locator.put_CarrierFrequency(-1);
                hr = tr.put_Locator(locator as ILocator);
            }
            else if (networkType == typeof(DVBTNetworkProvider).GUID)
            {
                hr = (tr as IDVBTuneRequest).put_ONID(-1);
                hr = (tr as IDVBTuneRequest).put_TSID(-1);
                hr = (tr as IDVBTuneRequest).put_SID(-1);

                IDVBTLocator locator = (IDVBTLocator) new DVBTLocator();
                hr = locator.put_CarrierFrequency(-1);
                hr = tr.put_Locator(locator as ILocator);
            }
            else if (networkType == typeof(DVBSNetworkProvider).GUID)
            {
                hr = (tr as IDVBTuneRequest).put_ONID(-1);
                hr = (tr as IDVBTuneRequest).put_TSID(-1);
                hr = (tr as IDVBTuneRequest).put_SID(-1);

                IDVBSLocator locator = (IDVBSLocator) new DVBSLocator();
                hr = locator.put_CarrierFrequency(-1);
                hr = locator.put_SymbolRate(-1);
                hr = tr.put_Locator(locator as ILocator);
            }

            return(tr);
        }
コード例 #4
0
ファイル: TvCardDVBT.cs プロジェクト: thomasr3/MediaPortal-1
        private bool BeforeTune(IChannel channel, ref int subChannelId)
        {
            DVBTChannel dvbtChannel = channel as DVBTChannel;

            if (dvbtChannel == null)
            {
                Log.Log.WriteFile("dvbt:Channel is not a DVBT channel!!! {0}", channel.GetType().ToString());
                return(false);
            }
            if (_graphState == GraphState.Idle)
            {
                BuildGraph();
                if (_mapSubChannels.ContainsKey(subChannelId) == false)
                {
                    subChannelId = GetNewSubChannel(channel);
                }
            }
            if (useInternalNetworkProvider)
            {
                return(true);
            }

            if (_previousChannel == null || _previousChannel.IsDifferentTransponder(dvbtChannel))
            {
                //_pmtPid = -1;
                ILocator locator;
                _tuningSpace.get_DefaultLocator(out locator);
                IDVBTLocator dvbtLocator = (IDVBTLocator)locator;
                dvbtLocator.put_Bandwidth(dvbtChannel.BandWidth);
                IDVBTuneRequest tuneRequest = (IDVBTuneRequest)_tuneRequest;
                tuneRequest.put_ONID(dvbtChannel.NetworkId);
                tuneRequest.put_SID(dvbtChannel.ServiceId);
                tuneRequest.put_TSID(dvbtChannel.TransportId);
                locator.put_CarrierFrequency((int)dvbtChannel.Frequency);
                _tuneRequest.put_Locator(locator);
            }
            return(true);
        }
コード例 #5
0
ファイル: TvCardDVBT.cs プロジェクト: thomasr3/MediaPortal-1
        /// <summary>
        /// Creates the tuning space.
        /// </summary>
        protected void CreateTuningSpace()
        {
            Log.Log.WriteFile("dvbt:CreateTuningSpace()");
            ITuner                tuner = (ITuner)_filterNetworkProvider;
            SystemTuningSpaces    systemTuningSpaces = new SystemTuningSpaces();
            ITuningSpaceContainer container          = systemTuningSpaces as ITuningSpaceContainer;

            if (container == null)
            {
                Log.Log.Error("CreateTuningSpace() Failed to get ITuningSpaceContainer");
                return;
            }
            IEnumTuningSpaces enumTuning;

            ITuningSpace[] spaces = new ITuningSpace[2];
            ITuneRequest   request;

            container.get_EnumTuningSpaces(out enumTuning);
            while (true)
            {
                int fetched;
                enumTuning.Next(1, spaces, out fetched);
                if (fetched != 1)
                {
                    break;
                }
                string name;
                spaces[0].get_UniqueName(out name);
                if (name == "MediaPortal DVBT TuningSpace")
                {
                    Log.Log.WriteFile("dvbt:found correct tuningspace {0}", name);
                    _tuningSpace = (IDVBTuningSpace)spaces[0];
                    tuner.put_TuningSpace(_tuningSpace);
                    _tuningSpace.CreateTuneRequest(out request);
                    _tuneRequest = (IDVBTuneRequest)request;
                    return;
                }
                Release.ComObject("ITuningSpace", spaces[0]);
            }
            Release.ComObject("IEnumTuningSpaces", enumTuning);
            Log.Log.WriteFile("dvbt:Create new tuningspace");
            _tuningSpace = (IDVBTuningSpace) new DVBTuningSpace();
            IDVBTuningSpace tuningSpace = (IDVBTuningSpace)_tuningSpace;

            tuningSpace.put_UniqueName("MediaPortal DVBT TuningSpace");
            tuningSpace.put_FriendlyName("MediaPortal DVBT TuningSpace");
            tuningSpace.put__NetworkType(typeof(DVBTNetworkProvider).GUID);
            tuningSpace.put_SystemType(DVBSystemType.Terrestrial);

            IDVBTLocator locator = (IDVBTLocator) new DVBTLocator();

            locator.put_CarrierFrequency(-1);
            locator.put_InnerFEC(FECMethod.MethodNotSet);
            locator.put_InnerFECRate(BinaryConvolutionCodeRate.RateNotSet);
            locator.put_Modulation(ModulationType.ModNotSet);
            locator.put_OuterFEC(FECMethod.MethodNotSet);
            locator.put_OuterFECRate(BinaryConvolutionCodeRate.RateNotSet);
            locator.put_SymbolRate(-1);
            object newIndex;

            _tuningSpace.put_DefaultLocator(locator);
            container.Add(_tuningSpace, out newIndex);
            tuner.put_TuningSpace(_tuningSpace);
            Release.ComObject("ITuningSpaceContainer", container);
            _tuningSpace.CreateTuneRequest(out request);
            _tuneRequest = request;
        }