Feature 'variable periodsize' allows to extend user period size up to
buffer_size/2 independent of slave period. On enlargement of the settings
for period_time.max and period_size.max the setting for openmax
was not updated.
This lead to the effect, that if the slave period itself had openmax
set it was still set on the extended size. Configuration of a period
matching half buffer size was thus rejected.
Example for failure: period size of 384 (half buffer size) is requested
which is rejected and rounded down to 352:
PERIOD_SIZE: [32 352]
BUFFER_SIZE: [64 768]
When correctly applying the openmax setting:
PERIOD_SIZE: [32 384]
BUFFER_SIZE: [64 768]
Signed-off-by: Andreas Pape <apape@de.adit-jv.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
return err;
if (dshare->var_periodsize) {
/* more tolerant settings... */
- if (dshare->shmptr->hw.buffer_size.max / 2 > period_size.max)
+ if (dshare->shmptr->hw.buffer_size.max / 2 > period_size.max) {
period_size.max = dshare->shmptr->hw.buffer_size.max / 2;
- if (dshare->shmptr->hw.buffer_time.max / 2 > period_time.max)
+ period_size.openmax = dshare->shmptr->hw.buffer_size.openmax;
+ }
+ if (dshare->shmptr->hw.buffer_time.max / 2 > period_time.max) {
period_time.max = dshare->shmptr->hw.buffer_time.max / 2;
+ period_time.openmax = dshare->shmptr->hw.buffer_time.openmax;
+ }
}
err = hw_param_interval_refine_one(params, SND_PCM_HW_PARAM_PERIOD_SIZE,