Re: snd_pcm_lib_read1 timeout

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I found another clue to this but can anyone please explain what could be going wrong?

The execution enters into the following function 

>static int snd_pcm_update_hw_ptr_interrupt(struct snd_pcm_substream >*substream)
>{
>	....
>	new_hw_ptr = hw_base + pos;
this gets updated correctly
>	...
>	hdelta = new_hw_ptr - old_hw_ptr;
>	jdelta = jiffies - runtime->hw_ptr_jiffies;
as far as I don't get into the following loop, am good...the moment I get into this loop my new_hw_ptr gets modified and it does not progress in capture. Any clues?
>	if (((hdelta * HZ) / runtime->rate) > jdelta + HZ/100) {
>		delta = jdelta /
>			(((runtime->period_size * HZ) / runtime->rate)
>								+ HZ/100);
>		hw_ptr_error(substream,
>			     "hw_ptr skipping! [Q] "
>			     "(pos=%ld, delta=%ld, period=%ld, "
>			     "jdelta=%lu/%lu/%lu)\n",
>			     (long)pos, (long)hdelta,
>			     (long)runtime->period_size, jdelta,
>			     ((hdelta * HZ) / runtime->rate), delta);
>		hw_ptr_interrupt = runtime->hw_ptr_interrupt +
>				   runtime->period_size * delta;
>		if (hw_ptr_interrupt >= runtime->boundary)
>			hw_ptr_interrupt -= runtime->boundary;
>		/* rebase to interrupt position */
>		hw_base = new_hw_ptr = hw_ptr_interrupt;
>		/* align hw_base to buffer_size */
>		hw_base -= hw_base % runtime->buffer_size;
>		delta = 0;
>	}
>      ...
>}

Thanks,
Harsha

______________________________________
From: Harsha, Priya 
Sent: Saturday, June 27, 2009 9:18 AM
To: alsa-devel@xxxxxxxxxxxxxxxx
Subject: snd_pcm_lib_read1 timeout

Hi,

I have a basic question;

There is a schedule_timeout() in snd_pcm_lib_read1 -> wait_for_avail_min. When and where does this timeout get signaled? What would be the reason that this timeout happens?


Thanks,
Harsha

_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux