// 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; }