mirror of
https://code.videolan.org/videolan/vlc
synced 2024-09-04 09:11:33 +02:00
v4l2: ALSA error handling.
This commit is contained in:
parent
191479d73b
commit
e43b973a16
@ -35,7 +35,6 @@
|
||||
|
||||
/*
|
||||
* TODO: Tuner partial implementation.
|
||||
* TODO: Alsa input support - experimental
|
||||
*/
|
||||
|
||||
/*****************************************************************************
|
||||
@ -1129,10 +1128,32 @@ static block_t* GrabAudio( demux_t *p_demux )
|
||||
{
|
||||
/* ALSA */
|
||||
i_read = snd_pcm_readi( p_sys->p_alsa_pcm, p_block->p_buffer, p_sys->i_alsa_chunk_size );
|
||||
/* TODO: ALSA ERROR HANDLING?? xrun?? */
|
||||
|
||||
/* convert from frames to bytes */
|
||||
if( i_read > 0 ) i_read *= p_sys->i_alsa_frame_size;
|
||||
if( i_read <= 0 )
|
||||
{
|
||||
int i_resume;
|
||||
switch( i_read )
|
||||
{
|
||||
case -EAGAIN:
|
||||
break;
|
||||
case -EPIPE:
|
||||
/* xrun */
|
||||
snd_pcm_prepare( p_sys->p_alsa_pcm );
|
||||
break;
|
||||
case -ESTRPIPE:
|
||||
/* suspend */
|
||||
i_resume = snd_pcm_resume( p_sys->p_alsa_pcm );
|
||||
if( i_resume < 0 && i_resume != -EAGAIN ) snd_pcm_prepare( p_sys->p_alsa_pcm );
|
||||
break;
|
||||
default:
|
||||
msg_Err( p_demux, "Failed to read alsa frame (%s)", snd_strerror( i_read ) );
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* convert from frames to bytes */
|
||||
i_read *= p_sys->i_alsa_frame_size;
|
||||
}
|
||||
}
|
||||
else
|
||||
#endif
|
||||
@ -1153,6 +1174,7 @@ static block_t* GrabAudio( demux_t *p_demux )
|
||||
if( !p_sys->b_use_alsa )
|
||||
#endif
|
||||
{
|
||||
/* OSS */
|
||||
if( ioctl( p_sys->i_fd_audio, SNDCTL_DSP_GETISPACE, &buf_info ) == 0 )
|
||||
{
|
||||
i_correct += buf_info.bytes;
|
||||
@ -1161,8 +1183,7 @@ static block_t* GrabAudio( demux_t *p_demux )
|
||||
#ifdef HAVE_ALSA
|
||||
else
|
||||
{
|
||||
/* TODO: ALSA timing */
|
||||
/* Very experimental code... */
|
||||
/* ALSA */
|
||||
int i_err;
|
||||
snd_pcm_sframes_t delay = 0;
|
||||
if( ( i_err = snd_pcm_delay( p_sys->p_alsa_pcm, &delay ) ) >= 0 )
|
||||
|
Loading…
Reference in New Issue
Block a user