On Tue, 16 Sep 2003, James Courtier-Dutton wrote:
I would expect to be able to use the "set_period_size_near" with direction +1, so if period_size=buffer_size/8 did not work, the alsa-lib would automatically select the next best one, even if it is buffer_size/2, but this seems to fail as well.
We found that it fails in the case when buffer_size cannot be divided by any value (buffer_size is odd). We cannot do anything to fix it at this moment.
Now that bit of infomation helps me a lot. I will therefore not use the buffer_time_near function any more, because it might decide on a buffer_size odd.
I can also not use buffer_size_near, because that might do the same.
So, I am reduced to using buffer_size together with application level retries to get a buffer size close to what I need. The trouble then, is that the application cannot access the contraints due to hardware, and thus, is really guessing in the dark.
I will also try the save state idea you gave in the last email, so I could try the buffer_time_near and period size functions, but it they fail use an alternative method. I could even have 3 methods, if method 1 fails, try method 2, then try method 3. The different methods would consist of trying different functions/values based on an educated guess as to why the previous values did not work.
A possible solution to all this could be linking the period, periods, and buffer_size constraints.
So, the application does the following: -
1) I want there to be 8 periods or less, with a minimum of 2.
2) I want the buffer to be about 500ms long or less, with a minimum or 100ms
3) I want the period size to have a min value of x, and a max value or y.
4) Now calculate the actual sizes based on all the above information. (i.e. The buffer_size, and period_size values are not set until stage (4).
At this point, alsa-lib would use the contrains above, and calculate the best values for buffer_size and period size based on the above, and also what the hardware can do.
The reason I think it might help this way, is because period_size and buffer_size and number of periods are all closely linked, so we should not have to set them one at a time, but set them as a group.
Jaroslav
----- Jaroslav Kysela <[EMAIL PROTECTED]> Linux Kernel Sound Maintainer ALSA Project, SuSE Labs
Cheers James
------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ Alsa-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-devel