int inp_alsa_upload (VisPluginData *plugin, VisAudio *audio) { int16_t data[PCM_BUF_SIZE]; alsaPrivate *priv = NULL; int rcnt; visual_return_val_if_fail(audio != NULL, -1); visual_return_val_if_fail(plugin != NULL, -1); priv = visual_object_get_private (VISUAL_OBJECT (plugin)); visual_return_val_if_fail(priv != NULL, -1); #if 0 { /* DEBUG STUFF, REMOVE IN RELEASE FIXME FIXME XXX TODO WHATEVER */ VisBuffer buffer; visual_buffer_init (&buffer, data, 512, NULL); for (i = 0; i < 16; i++) { visual_audio_samplepool_input (audio->samplepool, &buffer, VISUAL_AUDIO_SAMPLE_RATE_44100, VISUAL_AUDIO_SAMPLE_FORMAT_S16, VISUAL_AUDIO_SAMPLE_CHANNEL_STEREO); } return 0; } #endif do { rcnt = snd_pcm_readi(priv->chandle, data, PCM_BUF_SIZE / 2); if (rcnt > 0) { VisBuffer buffer; visual_buffer_init (&buffer, data, rcnt, NULL); visual_audio_samplepool_input (audio->samplepool, &buffer, VISUAL_AUDIO_SAMPLE_RATE_44100, VISUAL_AUDIO_SAMPLE_FORMAT_S16, VISUAL_AUDIO_SAMPLE_CHANNEL_STEREO); } if (rcnt < 0) { if (rcnt == -EPIPE) { visual_log(VISUAL_LOG_WARNING, _("ALSA: Buffer Overrun")); if (snd_pcm_prepare(priv->chandle) < 0) { visual_log(VISUAL_LOG_ERROR, _("Failed to prepare interface")); return(-1); } } } } while (rcnt > 0); return 0; }
static int inp_debug_upload (VisPluginData *plugin, VisAudio *audio) { /* FIXME: Wave is incrementally calculated and will very gradually increase/decrease in frequency due to error accumulation */ DebugPriv *priv = visual_object_get_private (VISUAL_OBJECT (plugin)); int16_t data[OUTPUT_SAMPLES]; int i; for(i = 0; i < VISUAL_TABLESIZE(data); i++) { data[i] = (int16_t) (65535/2 * priv->ampltitude * sin (priv->angle)); priv->angle += priv->angle_step; if (priv->angle >= 2 * VISUAL_MATH_PI) { priv->angle -= 2 * VISUAL_MATH_PI; } } VisBuffer *buffer = visual_buffer_new_wrap_data (data, VISUAL_TABLESIZE (data)); visual_audio_samplepool_input (audio->samplepool, buffer, VISUAL_AUDIO_SAMPLE_RATE_44100, VISUAL_AUDIO_SAMPLE_FORMAT_S16, VISUAL_AUDIO_SAMPLE_CHANNEL_STEREO); visual_buffer_free (buffer); return 0; }
static int upload_callback( VisInput*, VisAudio *audio, void* ) { VisBuffer buf; visual_buffer_init( &buf, pcm_data, 1024, 0 ); visual_audio_samplepool_input( audio->samplepool, &buf, VISUAL_AUDIO_SAMPLE_RATE_44100, VISUAL_AUDIO_SAMPLE_FORMAT_S16, VISUAL_AUDIO_SAMPLE_CHANNEL_STEREO ); return 0; }
static void update_lv(void * data, gavl_audio_frame_t * frame) { lv_priv_t * priv; VisBuffer buffer; priv = (lv_priv_t*)data; visual_buffer_init(&buffer, frame->samples.s_16, frame->valid_samples * 2, NULL); visual_audio_samplepool_input(priv->audio->samplepool, &buffer, VISUAL_AUDIO_SAMPLE_RATE_44100, VISUAL_AUDIO_SAMPLE_FORMAT_S16, VISUAL_AUDIO_SAMPLE_CHANNEL_STEREO); visual_audio_analyze(priv->audio); }