///<summary> /// Returns the channel scanner interface ///</summary> ///<returns></returns> public IAnalogChanelScan GetChannelScanner() { IAnalogChanelScan channelScanner = null; if (_tsFileSink != null) { channelScanner = (IAnalogChanelScan)_tsFileSink; } return(channelScanner); }
/// <summary> /// Tunes to the channel specified and will start scanning for any channel /// </summary> /// <param name="channel">channel to tune to</param> /// <param name="settings"></param> /// <returns>list of channels found</returns> public List <IChannel> Scan(IChannel channel, ScanParameters settings) { _card.IsScanning = true; _card.Tune(0, channel); if (_card.IsTunerLocked) { if (channel.IsTv) { if (_card.VideoFrequency == _previousFrequency) { return(new List <IChannel>()); } _previousFrequency = _card.VideoFrequency; } if (channel.IsTv) { try { _scanner = _card.GetChannelScanner(); _event = new ManualResetEvent(false); _scanner.SetCallBack(this); _scanner.Start(); _event.WaitOne(settings.TimeOutAnalog * 1000, true); IntPtr serviceName; _scanner.GetChannel(out serviceName); _scanner.Stop(); string channelName = DvbTextConverter.Convert(serviceName, ""); int pos = channelName.LastIndexOf("teletext", StringComparison.InvariantCultureIgnoreCase); if (pos != -1) { channelName = channelName.Substring(0, pos); } //Some times channel name includes program name after : pos = channelName.LastIndexOf(":"); if (pos != -1) { channelName = channelName.Substring(0, pos); } channelName = channelName.TrimEnd(new char[] { '\'', '\"', '´', '`' }); channelName = channelName.Trim(); if (channelName != "") { channel.Name = ""; for (int x = 0; x < channelName.Length; ++x) { char k = channelName[x]; if (k < (char)32 || k > (char)127) { break; } channel.Name += k.ToString(); } } } finally { if (_scanner != null) { _scanner.SetCallBack(null); _scanner.Stop(); } if (_event != null) { _event.Close(); } } } List <IChannel> list = new List <IChannel>(); list.Add(channel); _card.IsScanning = false; return(list); } _card.IsScanning = false; return(null); }
/// <summary> /// Tunes to the channel specified and will start scanning for any channel /// </summary> /// <param name="channel">channel to tune to</param> /// <param name="settings"></param> /// <returns>list of channels found</returns> public List<IChannel> Scan(IChannel channel, ScanParameters settings) { _card.IsScanning = true; _card.Tune(0, channel); if (_card.IsTunerLocked) { if (channel.IsTv) { if (_card.VideoFrequency == _previousFrequency) return new List<IChannel>(); _previousFrequency = _card.VideoFrequency; } if (channel.IsTv) { try { _scanner = _card.GetChannelScanner(); _event = new ManualResetEvent(false); _scanner.SetCallBack(this); _scanner.Start(); _event.WaitOne(settings.TimeOutAnalog * 1000, true); IntPtr serviceName; _scanner.GetChannel(out serviceName); _scanner.Stop(); string channelName = DvbTextConverter.Convert(serviceName, ""); int pos = channelName.LastIndexOf("teletext", StringComparison.InvariantCultureIgnoreCase); if (pos != -1) { channelName = channelName.Substring(0, pos); } //Some times channel name includes program name after : pos = channelName.LastIndexOf(":"); if (pos != -1) { channelName = channelName.Substring(0, pos); } channelName = channelName.TrimEnd(new char[] {'\'', '\"', '´', '`'}); channelName = channelName.Trim(); if (channelName != "") { channel.Name = ""; for (int x = 0; x < channelName.Length; ++x) { char k = channelName[x]; if (k < (char)32 || k > (char)127) break; channel.Name += k.ToString(); } } } finally { if (_scanner != null) { _scanner.SetCallBack(null); _scanner.Stop(); } if (_event != null) { _event.Close(); } } } List<IChannel> list = new List<IChannel>(); list.Add(channel); _card.IsScanning = false; return list; } _card.IsScanning = false; return null; }