public override ServiceTuning GetLiveStreamTuningDetails(LiveStream liveStream) { ServiceTuning result = null; lock (_liveStreamsLock) { if (_liveStreams.ContainsKey(liveStream.RtspUrl)) { IUser tve3User = _liveStreamUsers[liveStream.RtspUrl]; IChannel channel = TvServerPlugin.TvController_CurrentChannel(tve3User); var dvbSChannel = channel as TvLibrary.Channels.DVBSChannel; if (dvbSChannel != null) { result = new ServiceTuning() { CardType = ArgusTV.DataContracts.Tuning.CardType.DvbS, Frequency = (int)dvbSChannel.Frequency, InnerFecRate = (ArgusTV.DataContracts.Tuning.FecCodeRate)dvbSChannel.InnerFecRate, Modulation = (ArgusTV.DataContracts.Tuning.Modulation)dvbSChannel.ModulationType, Name = dvbSChannel.Name, ONID = dvbSChannel.NetworkId, OrbitalPosition = dvbSChannel.SatelliteIndex, // TODO: check if this is the right number Pilot = (ArgusTV.DataContracts.Tuning.Pilot)dvbSChannel.Pilot, ProviderName = dvbSChannel.Provider, IsFreeToAir = dvbSChannel.FreeToAir, RollOff = (ArgusTV.DataContracts.Tuning.RollOff)dvbSChannel.Rolloff, SID = dvbSChannel.ServiceId, SignalPolarisation = (ArgusTV.DataContracts.Tuning.SignalPolarisation)dvbSChannel.Polarisation, SymbolRate = dvbSChannel.SymbolRate, TSID = dvbSChannel.TransportId }; } else { var dvbCChannel = channel as TvLibrary.Channels.DVBCChannel; if (dvbCChannel != null) { result = new ServiceTuning() { CardType = ArgusTV.DataContracts.Tuning.CardType.DvbC, Frequency = (int)dvbCChannel.Frequency, Modulation = (ArgusTV.DataContracts.Tuning.Modulation)dvbCChannel.ModulationType, Name = dvbCChannel.Name, ONID = dvbCChannel.NetworkId, ProviderName = dvbCChannel.Provider, IsFreeToAir = dvbCChannel.FreeToAir, SID = dvbCChannel.ServiceId, SymbolRate = dvbCChannel.SymbolRate, TSID = dvbCChannel.TransportId }; } else { var dvbTChannel = channel as TvLibrary.Channels.DVBTChannel; if (dvbTChannel != null) { result = new ServiceTuning() { CardType = ArgusTV.DataContracts.Tuning.CardType.DvbT, Frequency = (int)dvbTChannel.Frequency, Bandwidth = dvbTChannel.BandWidth, Name = dvbTChannel.Name, ONID = dvbTChannel.NetworkId, ProviderName = dvbTChannel.Provider, IsFreeToAir = dvbTChannel.FreeToAir, SID = dvbTChannel.ServiceId, TSID = dvbTChannel.TransportId }; } else { var atscChannel = channel as TvLibrary.Channels.ATSCChannel; if (atscChannel != null) { result = new ServiceTuning() { CardType = ArgusTV.DataContracts.Tuning.CardType.Atsc, Frequency = (int)atscChannel.Frequency, MajorChannel = atscChannel.MajorChannel, MinorChannel = atscChannel.MinorChannel, Name = atscChannel.Name, PhysicalChannel = atscChannel.PhysicalChannel, ProviderName = atscChannel.Provider, IsFreeToAir = atscChannel.FreeToAir, SID = atscChannel.ServiceId, TSID = atscChannel.TransportId }; } else { var analogChannel = channel as TvLibrary.Implementations.AnalogChannel; if (analogChannel != null) { result = new ServiceTuning() { CardType = ArgusTV.DataContracts.Tuning.CardType.Analog, Frequency = (int)analogChannel.Frequency, Name = analogChannel.Name, IsFreeToAir = analogChannel.FreeToAir, PhysicalChannel = analogChannel.ChannelNumber }; } else { var dvbIPChannel = channel as TvLibrary.Channels.DVBIPChannel; if (dvbIPChannel != null) { result = new ServiceTuning() { CardType = ArgusTV.DataContracts.Tuning.CardType.DvbIP, Url = dvbIPChannel.Url, Name = dvbIPChannel.Name, ProviderName = dvbIPChannel.Provider, IsFreeToAir = dvbIPChannel.FreeToAir }; } } } } } } if (result != null) { result.SignalQuality = TvServerPlugin.TvController_SignalQuality(tve3User.CardId); result.SignalStrength = TvServerPlugin.TvController_SignalLevel(tve3User.CardId); } } } return(result); }