mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-04 13:29:59 -05:00
fix fragment size calculation for module-alsa-source
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@852 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
parent
b6812029ba
commit
7abf17edcd
1 changed files with 9 additions and 5 deletions
|
|
@ -118,7 +118,11 @@ static void do_read(struct userdata *u) {
|
||||||
u->memchunk.index = 0;
|
u->memchunk.index = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(u->memchunk.memblock && u->memchunk.memblock->data && u->memchunk.length && u->memchunk.memblock->length && (u->memchunk.length % u->frame_size) == 0);
|
assert(u->memchunk.memblock);
|
||||||
|
assert(u->memchunk.length);
|
||||||
|
assert(u->memchunk.memblock->data);
|
||||||
|
assert(u->memchunk.memblock->length);
|
||||||
|
assert(u->memchunk.length % u->frame_size == 0);
|
||||||
|
|
||||||
if ((frames = snd_pcm_readi(u->pcm_handle, (uint8_t*) u->memchunk.memblock->data + u->memchunk.index, u->memchunk.length / u->frame_size)) < 0) {
|
if ((frames = snd_pcm_readi(u->pcm_handle, (uint8_t*) u->memchunk.memblock->data + u->memchunk.index, u->memchunk.length / u->frame_size)) < 0) {
|
||||||
if (frames == -EAGAIN)
|
if (frames == -EAGAIN)
|
||||||
|
|
@ -331,12 +335,12 @@ int pa__init(pa_core *c, pa_module*m) {
|
||||||
frame_size = pa_frame_size(&ss);
|
frame_size = pa_frame_size(&ss);
|
||||||
|
|
||||||
periods = 12;
|
periods = 12;
|
||||||
fragsize = 1024;
|
fragsize = frame_size*1024;
|
||||||
if (pa_modargs_get_value_u32(ma, "fragments", &periods) < 0 || pa_modargs_get_value_u32(ma, "fragment_size", &fragsize) < 0) {
|
if (pa_modargs_get_value_u32(ma, "fragments", &periods) < 0 || pa_modargs_get_value_u32(ma, "fragment_size", &fragsize) < 0) {
|
||||||
pa_log(__FILE__": failed to parse buffer metrics");
|
pa_log(__FILE__": failed to parse buffer metrics");
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
period_size = fragsize;
|
period_size = fragsize/frame_size;
|
||||||
|
|
||||||
u = pa_xmalloc0(sizeof(struct userdata));
|
u = pa_xmalloc0(sizeof(struct userdata));
|
||||||
m->userdata = u;
|
m->userdata = u;
|
||||||
|
|
@ -419,9 +423,9 @@ int pa__init(pa_core *c, pa_module*m) {
|
||||||
}
|
}
|
||||||
|
|
||||||
u->frame_size = frame_size;
|
u->frame_size = frame_size;
|
||||||
u->fragment_size = period_size;
|
u->fragment_size = period_size * frame_size;
|
||||||
|
|
||||||
pa_log(__FILE__": using %u fragments of size %lu bytes.", periods, (long unsigned)u->fragment_size);
|
pa_log(__FILE__": using %u fragments of size %lu bytes.", periods, (long unsigned) u->fragment_size);
|
||||||
|
|
||||||
u->memchunk.memblock = NULL;
|
u->memchunk.memblock = NULL;
|
||||||
u->memchunk.index = u->memchunk.length = 0;
|
u->memchunk.index = u->memchunk.length = 0;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue