Exemplo n.º 1
0
 public void UpdateRecordingKickTime(Common.SignalRecordingType recordingType, int recordingKickTime)
 {
     if (_recorder != null)
     {
         _recorder.UpdateRecordingKickTime(recordingType, recordingKickTime);
     }
 }
Exemplo n.º 2
0
 public void UpdateRecordingKickTime(Common.SignalRecordingType recordingType, int recordingKickTime)
 {
     if (processorWaveProvider != null)
     {
         processorWaveProvider.UpdateRecordingKickTime(recordingType, recordingKickTime);
     }
 }
Exemplo n.º 3
0
 public WaveStreamProcessor(string streamURL, string streamName, Common.ProcessRadioSignalingItemDelegate sigDelegate, Action <bool> propertyChangedAction, float initialVolume, bool recordingEnabled, Common.SignalRecordingType recordingType, int recordingKickTime, Common.NoiseFloor noiseFloor, int customNoiseFloor, bool removeNoise, bool decodeMDC1200, bool decodeGEStar, bool decodeFleetSync, bool decodeP25, string waveOutDevName)
 {
     _streamShouldPlay      = true;
     _streamURL             = streamURL;
     _streamName            = streamName;
     _sigDelegate           = sigDelegate;
     _propertyChangedAction = propertyChangedAction;
     playbackState          = StreamingPlaybackState.Stopped;
     _initialVolume         = Math.Max(initialVolume, 0.1f);
     _recordingEnabled      = recordingEnabled;
     _recordingType         = recordingType;
     _recordingKickTime     = recordingKickTime;
     _noiseFloor            = noiseFloor;
     _customNoiseFloor      = customNoiseFloor;
     _removeNoise           = removeNoise;
     _decodeMDC1200         = decodeMDC1200;
     _decodeGEStar          = decodeGEStar;
     _decodeFleetSync       = decodeFleetSync;
     _decodeP25             = decodeP25;
     _waveOutDevName        = waveOutDevName;
     System.Threading.Thread tWave = new Thread(WaveStreamProc);
     tWave.Name         = streamName;
     tWave.IsBackground = true;
     tWave.Start();
 }
Exemplo n.º 4
0
        public void UpdateRecordingKickTime(Common.SignalRecordingType recordingType, int recordingKickTime)
        {
            _recordingType = recordingType;
            switch (_recordingType)
            {
            case SignalRecordingType.Fixed:
            {
                RecordingKickTimeTicks = TimeSpan.FromMinutes(recordingKickTime).Ticks;
                break;
            }

            default:
            {
                RecordingKickTimeTicks = TimeSpan.FromSeconds(recordingKickTime).Ticks;
                break;
            }
            }
        }
Exemplo n.º 5
0
        public AudioRecorder(string streamSourceName, Common.SignalRecordingType recordingType, int recordingKickTime, WaveFormat sourceWaveFormat, WaveFormat fileWaveFormat, bool recordingEnabled)
        {
            _recordingType = recordingType;
            switch (_recordingType)
            {
            case SignalRecordingType.Fixed:
            {
                RecordingKickTimeTicks = TimeSpan.FromMinutes(recordingKickTime).Ticks;
                break;
            }

            default:
            {
                RecordingKickTimeTicks = TimeSpan.FromSeconds(recordingKickTime).Ticks;
                break;
            }
            }
            RecordingPrefix   = RadioSignalLogger.MakeSourceFilePrefix(streamSourceName);
            _sourceWaveFormat = sourceWaveFormat;
            if (fileWaveFormat == null)
            {
                _fileWaveFormat = sourceWaveFormat;
            }
            else
            {
                _fileWaveFormat = fileWaveFormat;
            }
            _recordingEnabled = recordingEnabled;

            if (_sourceWaveFormat.Equals(_fileWaveFormat))
            {
                _resampleStream = null;
                _useResampler   = false;
            }
            else
            {
                _resampleStream = new NAudio.Wave.Compression.AcmStream(_sourceWaveFormat, _fileWaveFormat);
                _useResampler   = true;
            }
        }
Exemplo n.º 6
0
        public WaveInChannelProcessor(string streamName, string waveInSourceName, int waveInChannel, Common.ProcessRadioSignalingItemDelegate sigDelegate, Action<bool> propertyChangedAction, float initialVolume, bool recordingEnabled, Common.SignalRecordingType recordingType, int recordingKickTime, Common.NoiseFloor noiseFloor, int customNoiseFloor, bool removeNoise, bool decodeMDC1200, bool decodeGEStar, bool decodeFleetSync, bool decodeP25, string waveOutDevName)
        {
            _streamShouldPlay = true;
            _streamName = streamName;
            _waveInSourceName = waveInSourceName;
            _waveInChannel = waveInChannel;
            _sigDelegate = sigDelegate;
            _propertyChangedAction = propertyChangedAction;
            sourceActive = false;
            _recordingEnabled = recordingEnabled;
            _recordingType = recordingType;
            _recordingKickTime = recordingKickTime;
            _noiseFloor = noiseFloor;
            _customNoiseFloor = customNoiseFloor;
            _removeNoise = removeNoise;
            _decodeMDC1200 = decodeMDC1200;
            _decodeGEStar = decodeGEStar;
            _decodeFleetSync = decodeFleetSync;
            _decodeP25 = decodeP25;
            _waveOutDevName = waveOutDevName;

            bufferedWaveProvider = new BufferedWaveProvider(AudioProcessingGlobals.GetWaveFormatForChannels(1));
            bufferedWaveProvider.BufferDuration = TimeSpan.FromSeconds(3);
            processorWaveProvider = new ProcessorWaveProvider(streamName, bufferedWaveProvider, ProcessRadioSignalingItem, propertyChangedAction, recordingEnabled, recordingType, recordingKickTime, noiseFloor, customNoiseFloor, removeNoise, decodeMDC1200, decodeGEStar, decodeFleetSync, decodeP25);

            volumeProvider = new VolumeWaveProvider16(processorWaveProvider);
            volumeProvider.Volume = initialVolume;

            FirePropertyChangedAction(true);

            WaveInManager.Instance.SetupForProcessor(this);

            sourceActive = true;

            waveOut = CreateWaveOut();
            waveOut.Init(volumeProvider);
            waveOut.Play();
        }
Exemplo n.º 7
0
        public WaveInChannelProcessor(string streamName, string waveInSourceName, int waveInChannel, Common.ProcessRadioSignalingItemDelegate sigDelegate, Action <bool> propertyChangedAction, float initialVolume, bool recordingEnabled, Common.SignalRecordingType recordingType, int recordingKickTime, Common.NoiseFloor noiseFloor, int customNoiseFloor, bool removeNoise, bool decodeMDC1200, bool decodeGEStar, bool decodeFleetSync, bool decodeP25, string waveOutDevName)
        {
            _streamShouldPlay      = true;
            _streamName            = streamName;
            _waveInSourceName      = waveInSourceName;
            _waveInChannel         = waveInChannel;
            _sigDelegate           = sigDelegate;
            _propertyChangedAction = propertyChangedAction;
            sourceActive           = false;
            _recordingEnabled      = recordingEnabled;
            _recordingType         = recordingType;
            _recordingKickTime     = recordingKickTime;
            _noiseFloor            = noiseFloor;
            _customNoiseFloor      = customNoiseFloor;
            _removeNoise           = removeNoise;
            _decodeMDC1200         = decodeMDC1200;
            _decodeGEStar          = decodeGEStar;
            _decodeFleetSync       = decodeFleetSync;
            _decodeP25             = decodeP25;
            _waveOutDevName        = waveOutDevName;

            bufferedWaveProvider = new BufferedWaveProvider(AudioProcessingGlobals.GetWaveFormatForChannels(1));
            bufferedWaveProvider.BufferDuration = TimeSpan.FromSeconds(3);
            processorWaveProvider = new ProcessorWaveProvider(streamName, bufferedWaveProvider, ProcessRadioSignalingItem, propertyChangedAction, recordingEnabled, recordingType, recordingKickTime, noiseFloor, customNoiseFloor, removeNoise, decodeMDC1200, decodeGEStar, decodeFleetSync, decodeP25);

            volumeProvider        = new VolumeWaveProvider16(processorWaveProvider);
            volumeProvider.Volume = initialVolume;

            FirePropertyChangedAction(true);

            WaveInManager.Instance.SetupForProcessor(this);

            sourceActive = true;

            waveOut = CreateWaveOut();
            waveOut.Init(volumeProvider);
            waveOut.Play();
        }
Exemplo n.º 8
0
 public WaveStreamProcessor(string streamURL, string streamName, Common.ProcessRadioSignalingItemDelegate sigDelegate, Action<bool> propertyChangedAction, float initialVolume, bool recordingEnabled, Common.SignalRecordingType recordingType, int recordingKickTime, Common.NoiseFloor noiseFloor, int customNoiseFloor, bool removeNoise, bool decodeMDC1200, bool decodeGEStar, bool decodeFleetSync, bool decodeP25, string waveOutDevName)
 {
     _streamShouldPlay = true;
     _streamURL = streamURL;
     _streamName = streamName;
     _sigDelegate = sigDelegate;
     _propertyChangedAction = propertyChangedAction;
     playbackState = StreamingPlaybackState.Stopped;
     _initialVolume = Math.Max(initialVolume, 0.1f);
     _recordingEnabled = recordingEnabled;
     _recordingType = recordingType;
     _recordingKickTime = recordingKickTime;
     _noiseFloor = noiseFloor;
     _customNoiseFloor = customNoiseFloor;
     _removeNoise = removeNoise;
     _decodeMDC1200 = decodeMDC1200;
     _decodeGEStar = decodeGEStar;
     _decodeFleetSync = decodeFleetSync;
     _decodeP25 = decodeP25;
     _waveOutDevName = waveOutDevName;
     System.Threading.Thread tWave = new Thread(WaveStreamProc);
     tWave.Name = streamName;
     tWave.IsBackground = true;
     tWave.Start();
 }
Exemplo n.º 9
0
        public ProcessorWaveProvider(string sourceName, IWaveProvider sourceWaveProvider, string waveFilePath, WaveFormat outFormat, Common.ProcessRadioSignalingItemDelegate sigDelegate, Action <bool> hasPropertyChanged, bool recordEnabled, Common.SignalRecordingType recordType, int recordKickTime, Common.NoiseFloor noiseFloor, int customNoiseFloor, bool removeNoise, bool decodeMDC1200, bool decodeGEStar, bool decodeFleetSync, bool decodeP25)
            : base(sourceWaveProvider, waveFilePath)
        {
            LastValidStreamTitle = string.Empty;
            _sourceName          = sourceName;
            _sourceFormat        = sourceWaveProvider.WaveFormat;
            _outFormat           = outFormat;
            _hasPropertyChanged  = hasPropertyChanged;

            _silenceHelper = new SilenceHelper(outFormat.AverageBytesPerSecond / (outFormat.BitsPerSample / 8), noiseFloor, removeNoise, customNoiseFloor);

            if (outFormat.Equals(sourceWaveProvider.WaveFormat))
            {
                _resampleStream = null;
                _useResampler   = false;
            }
            else
            {
                if (Common.AppSettings.Instance.DiagnosticMode)
                {
                    Common.ConsoleHelper.ColorWriteLine(ConsoleColor.Magenta, "{0}: Source Format <> Out Format [{1}] <> [{2}]", sourceName, sourceWaveProvider.WaveFormat, outFormat);
                }
                _resampleStream = new NAudio.Wave.Compression.AcmStream(sourceWaveProvider.WaveFormat, outFormat);
                _useResampler   = true;
            }
            if (decodeMDC1200)
            {
                _mdc = new Decoders.MDC1200(outFormat.SampleRate, ProcessMDC1200, sourceName);
            }
            else
            {
                _mdc = null;
            }
            if (decodeGEStar)
            {
                _star = new Decoders.STAR(outFormat.SampleRate, ProcessSTAR, Decoders.STAR.star_format.star_format_1_16383, sourceName);
            }
            else
            {
                _star = null;
            }
            _rootDecoder = new Decoders.RootDecoder(outFormat.SampleRate, decodeFleetSync, decodeP25, ProcessRootDecoder);

            _recorder       = new AudioRecorder(sourceName, recordType, recordKickTime, outFormat, AudioProcessingGlobals.DefaultSaveFileWaveFormat, recordEnabled);
            _bytesPerSample = outFormat.BitsPerSample / 8;
            _encoding       = outFormat.Encoding;
            _sigDelegate    = sigDelegate;
        }
Exemplo n.º 10
0
 public ProcessorWaveProvider(string sourceName, IWaveProvider sourceWaveProvider, Common.ProcessRadioSignalingItemDelegate sigDelegate, Action <bool> hasPropertyChanged, bool recordEnabled, Common.SignalRecordingType recordType, int recordKickTime, Common.NoiseFloor noiseFloor, int customNoiseFloor, bool removeNoise, bool decodeMDC1200, bool decodeGEStar, bool decodeFleetSync, bool decodeP25) : this(sourceName, sourceWaveProvider, string.Empty, AudioProcessingGlobals.DefaultProcessingWaveFormat, sigDelegate, hasPropertyChanged, recordEnabled, recordType, recordKickTime, noiseFloor, customNoiseFloor, removeNoise, decodeMDC1200, decodeGEStar, decodeFleetSync, decodeP25)
 {
 }