Lines Matching refs:p_aout

83 static int WaveoutVolumeSet(audio_output_t * p_aout, float volume);
84 static int WaveoutMuteSet(audio_output_t * p_aout, bool mute);
170 static int Start( audio_output_t *p_aout, audio_sample_format_t *restrict fmt ) in set_category()
175 p_aout->time_get = WaveOutTimeGet; in set_category()
176 p_aout->play = Play; in set_category()
177 p_aout->pause = WaveOutPause; in set_category()
178 p_aout->flush = WaveOutFlush; in set_category()
181 p_aout->sys->b_soft = true; in set_category()
183 char *dev = var_GetNonEmptyString( p_aout, "waveout-audio-device"); in set_category()
187 msg_Warn( p_aout, "configured audio device '%s' not available, " in set_category()
197 msg_Dbg( p_aout, "Drivername: %ls", waveoutcaps.szPname); in set_category()
198 msg_Dbg( p_aout, "Driver Version: %d.%d", in set_category()
201 msg_Dbg( p_aout, "Manufacturer identifier: 0x%x", waveoutcaps.wMid ); in set_category()
202 msg_Dbg( p_aout, "Product identifier: 0x%x", waveoutcaps.wPid ); in set_category()
208 if( AOUT_FMT_SPDIF(fmt) && var_InheritBool (p_aout, "spdif") ) in set_category()
211 if( OpenWaveOut( p_aout, devid, VLC_CODEC_SPDIFL, in set_category()
221 p_aout->sys->i_buffer_size = fmt->i_bytes_per_frame; in set_category()
222 p_aout->sys->b_spdif = true; in set_category()
226 msg_Err( p_aout, in set_category()
235 fmt->i_format = var_InheritBool( p_aout, "waveout-float32" )? in set_category()
238 int max_chan = var_InheritInteger( p_aout, "waveout-audio-channels"); in set_category()
279 msg_Dbg( p_aout, "Trying %d channels", i_channels ); in set_category()
281 while( ( OpenWaveOutPCM( p_aout, devid, &fmt->i_format, in set_category()
288 msg_Err(p_aout, "Waveout couldn't find appropriate channel mapping"); in set_category()
294 p_aout->sys->i_buffer_size = FRAME_SIZE * fmt->i_bytes_per_frame; in set_category()
298 aout_GainRequest( p_aout, 1.0f ); in set_category()
299 p_aout->sys->b_soft = false; in set_category()
302 WaveoutMuteSet( p_aout, p_aout->sys->b_mute ); in set_category()
304 p_aout->sys->b_spdif = false; in set_category()
307 p_aout->sys->i_rate = fmt->i_rate; in set_category()
309 waveOutReset( p_aout->sys->h_waveout ); in set_category()
312 p_aout->sys->p_silence_buffer = in set_category()
313 malloc( p_aout->sys->i_buffer_size ); in set_category()
314 if( p_aout->sys->p_silence_buffer == NULL ) in set_category()
316 msg_Err( p_aout, "Couldn't alloc silence buffer... aborting"); in set_category()
319 p_aout->sys->i_repeat_counter = 0; in set_category()
323 memset( p_aout->sys->p_silence_buffer, 0, in set_category()
324 p_aout->sys->i_buffer_size ); in set_category()
327 p_aout->sys->i_frames = 0; in set_category()
328 p_aout->sys->i_played_length = 0; in set_category()
329 p_aout->sys->p_free_list = NULL; in set_category()
342 static void Play( audio_output_t *p_aout, block_t *block ) in Play() argument
348 msg_Err(p_aout, "Couldn't alloc WAVEHDR"); in Play()
356 if( block && p_aout->sys->chans_to_reorder ) in Play()
359 p_aout->sys->waveformat.Format.nChannels, in Play()
360 p_aout->sys->chan_table, p_aout->sys->format ); in Play()
362 while( PlayWaveOut( p_aout, p_aout->sys->h_waveout, p_waveheader, block, in Play()
363 p_aout->sys->b_spdif ) != VLC_SUCCESS ) in Play()
366 msg_Warn( p_aout, "Couln't write frame... sleeping"); in Play()
370 WaveOutClean( p_aout->sys ); in Play()
371 WaveoutPollVolume( p_aout ); in Play()
373 vlc_mutex_lock( &p_aout->sys->lock ); in Play()
374 p_aout->sys->i_frames++; in Play()
375 p_aout->sys->i_played_length += block->i_length; in Play()
376 vlc_mutex_unlock( &p_aout->sys->lock ); in Play()
382 static void Stop( audio_output_t *p_aout ) in Stop() argument
384 aout_sys_t *p_sys = p_aout->sys; in Stop()
390 msg_Err( p_aout, "waveOutReset failed 0x%x", result ); in Stop()
406 WaveOutFlush( p_aout, true ); in Stop()
411 WaveOutFlush( p_aout, true ); in Stop()
412 WaveOutClean( p_aout->sys ); in Stop()
417 msg_Err( p_aout, "waveOutClose failed" ); in Stop()
421 p_aout->sys->i_played_length = 0; in Stop()
428 static int OpenWaveOut( audio_output_t *p_aout, uint32_t i_device_id, int i_format, in OpenWaveOut() argument
436 #define waveformat p_aout->sys->waveformat in OpenWaveOut()
493 msg_Dbg( p_aout, "OpenWaveDevice-ID: %u", i_device_id); in OpenWaveOut()
494 msg_Dbg( p_aout,"waveformat.Format.cbSize = %d", in OpenWaveOut()
496 msg_Dbg( p_aout,"waveformat.Format.wFormatTag = %u", in OpenWaveOut()
498 msg_Dbg( p_aout,"waveformat.Format.nChannels = %u", in OpenWaveOut()
500 msg_Dbg( p_aout,"waveformat.Format.nSamplesPerSec = %d", in OpenWaveOut()
502 msg_Dbg( p_aout,"waveformat.Format.nAvgBytesPerSec = %u", in OpenWaveOut()
504 msg_Dbg( p_aout,"waveformat.Format.nBlockAlign = %d", in OpenWaveOut()
506 msg_Dbg( p_aout,"waveformat.Format.wBitsPerSample = %d", in OpenWaveOut()
508 msg_Dbg( p_aout,"waveformat.Samples.wValidBitsPerSample = %d", in OpenWaveOut()
510 msg_Dbg( p_aout,"waveformat.Samples.wSamplesPerBlock = %d", in OpenWaveOut()
512 msg_Dbg( p_aout,"waveformat.dwChannelMask = %u", in OpenWaveOut()
517 result = waveOutOpen( &p_aout->sys->h_waveout, i_device_id, in OpenWaveOut()
519 (DWORD_PTR)WaveOutCallback, (DWORD_PTR)p_aout, in OpenWaveOut()
523 msg_Warn( p_aout, "waveOutOpen failed WAVERR_BADFORMAT" ); in OpenWaveOut()
528 msg_Warn( p_aout, "waveOutOpen failed WAVERR_ALLOCATED" ); in OpenWaveOut()
533 msg_Warn( p_aout, "waveOutOpen failed" ); in OpenWaveOut()
537 p_aout->sys->chans_to_reorder = in OpenWaveOut()
540 p_aout->sys->chan_table ); in OpenWaveOut()
541 if( p_aout->sys->chans_to_reorder ) in OpenWaveOut()
542 msg_Dbg( p_aout, "channel reordering needed" ); in OpenWaveOut()
543 p_aout->sys->format = i_format; in OpenWaveOut()
554 static int OpenWaveOutPCM( audio_output_t *p_aout, uint32_t i_device_id, in OpenWaveOutPCM() argument
559 bool b_use_float32 = var_CreateGetBool( p_aout, "waveout-float32"); in OpenWaveOutPCM()
561 if( !b_use_float32 || OpenWaveOut( p_aout, i_device_id, VLC_CODEC_FL32, in OpenWaveOutPCM()
565 if ( OpenWaveOut( p_aout, i_device_id, VLC_CODEC_S16N, in OpenWaveOutPCM()
587 static int PlayWaveOut( audio_output_t *p_aout, HWAVEOUT h_waveout, in PlayWaveOut() argument
605 memcpy( p_aout->sys->p_silence_buffer, in PlayWaveOut()
607 p_aout->sys->i_buffer_size ); in PlayWaveOut()
608 p_aout->sys->i_repeat_counter = 2; in PlayWaveOut()
612 if(p_aout->sys->i_repeat_counter) in PlayWaveOut()
614 p_aout->sys->i_repeat_counter--; in PlayWaveOut()
615 if(!p_aout->sys->i_repeat_counter) in PlayWaveOut()
617 memset( p_aout->sys->p_silence_buffer, in PlayWaveOut()
618 0x00, p_aout->sys->i_buffer_size ); in PlayWaveOut()
621 p_waveheader->hdr.lpData = (LPSTR)p_aout->sys->p_silence_buffer; in PlayWaveOut()
622 p_waveheader->hdr.dwBufferLength = p_aout->sys->i_buffer_size; in PlayWaveOut()
631 msg_Err( p_aout, "waveOutPrepareHeader failed" ); in PlayWaveOut()
639 msg_Err( p_aout, "waveOutWrite failed" ); in PlayWaveOut()
655 audio_output_t *p_aout = (audio_output_t *)_p_aout; in WaveOutCallback() local
660 vlc_mutex_lock( &p_aout->sys->lock ); in WaveOutCallback()
661 p_waveheader->p_next = p_aout->sys->p_free_list; in WaveOutCallback()
662 p_aout->sys->p_free_list = p_waveheader; in WaveOutCallback()
663 p_aout->sys->i_frames--; in WaveOutCallback()
664 vlc_cond_broadcast( &p_aout->sys->cond ); in WaveOutCallback()
665 vlc_mutex_unlock( &p_aout->sys->lock ); in WaveOutCallback()
843 static int WaveOutTimeGet(audio_output_t * p_aout, mtime_t *delay) in WaveOutTimeGet() argument
848 if( !p_aout->sys->i_frames ) in WaveOutTimeGet()
851 if( waveOutGetPosition( p_aout->sys->h_waveout, &mmtime, sizeof(MMTIME) ) in WaveOutTimeGet()
854 msg_Err( p_aout, "waveOutGetPosition failed"); in WaveOutTimeGet()
858 mtime_t i_pos = (mtime_t) mmtime.u.sample * CLOCK_FREQ / p_aout->sys->i_rate; in WaveOutTimeGet()
859 *delay = p_aout->sys->i_played_length - i_pos; in WaveOutTimeGet()
863 static void WaveOutFlush( audio_output_t *p_aout, bool wait) in WaveOutFlush() argument
868 res = waveOutReset( p_aout->sys->h_waveout ); in WaveOutFlush()
869 p_aout->sys->i_played_length = 0; in WaveOutFlush()
871 msg_Err( p_aout, "waveOutReset failed"); in WaveOutFlush()
875 vlc_mutex_lock( &p_aout->sys->lock ); in WaveOutFlush()
876 while( p_aout->sys->i_frames ) in WaveOutFlush()
878 vlc_cond_wait( &p_aout->sys->cond, &p_aout->sys-> lock ); in WaveOutFlush()
880 vlc_mutex_unlock( &p_aout->sys->lock ); in WaveOutFlush()
884 static void WaveOutPause( audio_output_t * p_aout, bool pause, mtime_t date) in WaveOutPause() argument
890 vlc_timer_schedule( p_aout->sys->volume_poll_timer, false, 1, 200000 ); in WaveOutPause()
891 res = waveOutPause( p_aout->sys->h_waveout ); in WaveOutPause()
894 msg_Err( p_aout, "waveOutPause failed (0x%x)", res); in WaveOutPause()
900 vlc_timer_schedule( p_aout->sys->volume_poll_timer, false, 0, 0 ); in WaveOutPause()
901 res = waveOutRestart( p_aout->sys->h_waveout ); in WaveOutPause()
904 msg_Err( p_aout, "waveOutRestart failed (0x%x)", res); in WaveOutPause()
910 static int WaveoutVolumeSet( audio_output_t *p_aout, float volume ) in WaveoutVolumeSet() argument
912 aout_sys_t *sys = p_aout->sys; in WaveoutVolumeSet()
917 if ( !sys->b_mute && aout_GainRequest( p_aout, gain ) ) in WaveoutVolumeSet()
937 msg_Err( p_aout, "waveOutSetVolume failed (%u)", r ); in WaveoutVolumeSet()
943 vlc_mutex_lock(&p_aout->sys->lock); in WaveoutVolumeSet()
946 if( var_InheritBool( p_aout, "volume-save" ) ) in WaveoutVolumeSet()
947 config_PutFloat( p_aout, "waveout-volume", volume ); in WaveoutVolumeSet()
949 aout_VolumeReport( p_aout, volume ); in WaveoutVolumeSet()
950 vlc_mutex_unlock(&p_aout->sys->lock); in WaveoutVolumeSet()
955 static int WaveoutMuteSet( audio_output_t * p_aout, bool mute ) in WaveoutMuteSet() argument
957 aout_sys_t *sys = p_aout->sys; in WaveoutMuteSet()
962 if ( aout_GainRequest( p_aout, mute ? 0.f : gain ) ) in WaveoutMuteSet()
977 msg_Err( p_aout, "waveOutSetVolume failed (%u)", r ); in WaveoutMuteSet()
982 vlc_mutex_lock(&p_aout->sys->lock); in WaveoutMuteSet()
984 aout_MuteReport( p_aout, mute ); in WaveoutMuteSet()
985 vlc_mutex_unlock(&p_aout->sys->lock); in WaveoutMuteSet()
992 audio_output_t * p_aout = (audio_output_t *) aout; in WaveoutPollVolume() local
995 MMRESULT r = waveOutGetVolume( p_aout->sys->h_waveout, (LPDWORD) &vol ); in WaveoutPollVolume()
999 msg_Err( p_aout, "waveOutGetVolume failed (%u)", r ); in WaveoutPollVolume()
1006 vlc_mutex_lock(&p_aout->sys->lock); in WaveoutPollVolume()
1007 if( !p_aout->sys->b_mute && volume != p_aout->sys->f_volume ) in WaveoutPollVolume()
1009 p_aout->sys->f_volume = volume; in WaveoutPollVolume()
1011 if( var_InheritBool( p_aout, "volume-save" ) ) in WaveoutPollVolume()
1012 config_PutFloat( p_aout, "waveout-volume", volume ); in WaveoutPollVolume()
1014 aout_VolumeReport( p_aout, volume ); in WaveoutPollVolume()
1016 vlc_mutex_unlock(&p_aout->sys->lock); in WaveoutPollVolume()