Beispiel #1
0
	// The framework feeds input to our DSP using this method.
	// Each chunk contains a number of samples with the same
	// stream characteristics, i.e. same sample rate, channel count
	// and channel configuration.
	virtual bool on_chunk(audio_chunk * chunk,abort_callback & p_abort) {
		if (!isShown) {
			mainWindow->ShowWindow(SW_SHOW);
			isShown = 1;
		}
        if (!LiveRecordingCheck()) {
			if (!chunk->is_empty()) {
				int nsamples  = chunk->get_sample_count();
				int nch = chunk->get_channels();
				int srate = chunk->get_srate();

				if (nsamples < 10000) {
					float *samples = (float *)malloc(nsamples*nch*sizeof(float));
					audio_sample *psample = chunk->get_data();
					for (int i=0;i<nsamples*nch;i++) {
						audio_sample sample = *psample++;
						samples[i] = (sample);
					}
					handleAllOutput((float *)samples, nsamples, nch, srate);
					if (samples) {
						free(samples);
					}
				}
			}
        }
  	    return true;
	}
int encode_samples(struct winampDSPModule *this_mod, short int *short_samples, int numsamples, int bps, int nch, int srate)
{
	float	samples[8196*16];
	static short lastSample = 0;
	static signed int sample;

  
	int	samplecount = 0;
	short int *psample = short_samples;

    if (!LiveRecordingCheck()) {
        for (int i=0;i<numsamples*nch;i++) {
            sample = *psample++;
            samples[i] = sample/32767.f;
        }
    
        int ret = handleAllOutput((float *)&samples, numsamples, nch, srate);
    }
	return numsamples;
}