Exemple #1
0
        public AudioResource(SpectrumVideoDemodConfig config, CanvasContext ctx)
        {
            //Set
            this.label = config.label;

            //Get demodulator
            switch (config.demodType)
            {
            case "WBFM": demodulator = new WbFmDemodulator(); break;

            default: throw new Exception("Unknown demodulator type.");
            }

            //Make buffers
            bufferSize            = ctx.BufferSize;
            generalBuffer         = UnsafeBuffer.Create(ctx.BufferSize, out generalBufferComplexPtr);
            generalBufferFloatPtr = (float *)generalBufferComplexPtr;
            audioABuffer          = UnsafeBuffer.Create(ctx.BufferSize, out audioABufferPtr);
            audioBBuffer          = UnsafeBuffer.Create(ctx.BufferSize, out audioBBufferPtr);

            //Init audio
            demodDecimator = ComplexDecimator.CalculateDecimator(ctx.DecimatedSampleRate, config.demodBandwidth, 20, config.demodBandwidth * 0.05f, out float demodSampleRate);
            float actualAudioRate = demodulator.Configure(ctx.BufferSize, demodSampleRate, config.outputSampleRate);

            audioResampler = new ArbitraryStereoResampler(actualAudioRate, config.outputSampleRate, ctx.BufferSize);

            //Create output
            output = ctx.OutputProvider.GetAudioOutput(config.outputFilename, config.outputSampleRate, bufferSize);
        }
Exemple #2
0
        protected override void PrepareBenchmark(int sampleRate, int bufferSize)
        {
            //Create buffers
            iqBuffer     = UnsafeBuffer.Create(bufferSize, out iqBufferPtr);
            audioABuffer = UnsafeBuffer.Create(bufferSize, out audioABufferPtr);
            audioBBuffer = UnsafeBuffer.Create(bufferSize, out audioBBufferPtr);

            //Create IQ decimator
            decimator = ComplexDecimator.CalculateDecimator(sampleRate, bandwidth, 15, bandwidth * 0.05f, out float decimatedIqRate);

            //Create demodulator
            demod = new WbFmDemodulator();
            demod.Configure(bufferSize, sampleRate, DecimationUtil.CalculateDecimationRate(decimatedIqRate, outputRateTarget, out float actualOutputRate));
            demod.UseRds();
        }