Lines Matching refs:audio_data

508 win32_play_data (Win32_Audio_Data *audio_data)
512 readcount = (audio_data->remaining > audio_data->bufferlen) ? audio_data->bufferlen : (int) audio_data->remaining ;
514 short *lpData = (short *) (void *) audio_data->whdr [audio_data->current].lpData ;
515 thisread = (int) sf_read_short (audio_data->sndfile, lpData, readcount) ;
517 audio_data->remaining -= thisread ;
521 if (thisread < audio_data->bufferlen)
522 audio_data->whdr [audio_data->current].dwBufferLength = thisread * sizeof (short) ;
525 waveOutWrite (audio_data->hwave, (LPWAVEHDR) &(audio_data->whdr [audio_data->current]), sizeof (WAVEHDR)) ;
528 EnterCriticalSection (&audio_data->mutex) ;
529 audio_data->BuffersInUse ++ ;
530 LeaveCriticalSection (&audio_data->mutex) ;
533 audio_data->current = (audio_data->current + 1) % 2 ;
541 { Win32_Audio_Data *audio_data ;
556 audio_data = (Win32_Audio_Data*) data ;
560 { EnterCriticalSection (&audio_data->mutex) ;
561 audio_data->BuffersInUse -- ;
562 LeaveCriticalSection (&audio_data->mutex) ;
563 SetEvent (audio_data->Event) ;
571 { Win32_Audio_Data audio_data ;
576 audio_data.sndfile = NULL ;
577 audio_data.hwave = 0 ;
582 if (! (audio_data.sndfile = sf_open (argv [k], SFM_READ, &(audio_data.sfinfo))))
587 audio_data.remaining = audio_data.sfinfo.frames * audio_data.sfinfo.channels ;
588 audio_data.current = 0 ;
590 InitializeCriticalSection (&audio_data.mutex) ;
591 audio_data.Event = CreateEvent (0, FALSE, FALSE, 0) ;
593 wf.nChannels = audio_data.sfinfo.channels ;
598 wf.nSamplesPerSec = audio_data.sfinfo.samplerate ;
600 wf.nBlockAlign = audio_data.sfinfo.channels * sizeof (short) ;
604 error = waveOutOpen (&(audio_data.hwave), WAVE_MAPPER, &wf, (DWORD_PTR) win32_audio_out_callback,
605 (DWORD_PTR) &audio_data, CALLBACK_FUNCTION) ;
608 audio_data.hwave = 0 ;
612 audio_data.whdr [0].lpData = (char*) audio_data.buffer ;
613 audio_data.whdr [1].lpData = ((char*) audio_data.buffer) + sizeof (audio_data.buffer) / 2 ;
615 audio_data.whdr [0].dwBufferLength = sizeof (audio_data.buffer) / 2 ;
616 audio_data.whdr [1].dwBufferLength = sizeof (audio_data.buffer) / 2 ;
618 audio_data.whdr [0].dwFlags = 0 ;
619 audio_data.whdr [1].dwFlags = 0 ;
622 audio_data.bufferlen = sizeof (audio_data.buffer) / 2 / sizeof (short) ;
625 if ((error = waveOutPrepareHeader (audio_data.hwave, &(audio_data.whdr [0]), sizeof (WAVEHDR))))
627 waveOutClose (audio_data.hwave) ;
631 if ((error = waveOutPrepareHeader (audio_data.hwave, &(audio_data.whdr [1]), sizeof (WAVEHDR))))
633 waveOutUnprepareHeader (audio_data.hwave, &(audio_data.whdr [0]), sizeof (WAVEHDR)) ;
634 waveOutClose (audio_data.hwave) ;
639 audio_data.BuffersInUse = 0 ;
640 win32_play_data (&audio_data) ;
641 win32_play_data (&audio_data) ;
644 while (audio_data.BuffersInUse > 0)
647 WaitForSingleObject (audio_data.Event, INFINITE) ;
650 win32_play_data (&audio_data) ;
653 waveOutUnprepareHeader (audio_data.hwave, &(audio_data.whdr [0]), sizeof (WAVEHDR)) ;
654 waveOutUnprepareHeader (audio_data.hwave, &(audio_data.whdr [1]), sizeof (WAVEHDR)) ;
656 waveOutClose (audio_data.hwave) ;
657 audio_data.hwave = 0 ;
659 DeleteCriticalSection (&audio_data.mutex) ;
661 sf_close (audio_data.sndfile) ;