Example #1
0
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;
}
Example #2
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;
}
Example #3
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;
    }
Example #4
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);
  }