Emit warning message if user supplied buffer/period size/time was rejected

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4773 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
malc 2008-06-21 20:09:32 +00:00
parent ece43b8d06
commit f3b5298316
1 changed files with 16 additions and 0 deletions

View File

@ -334,6 +334,8 @@ static int alsa_open (int in, struct alsa_params_req *req,
} }
if (req->buffer_size) { if (req->buffer_size) {
unsigned long obt;
if (size_in_usec) { if (size_in_usec) {
int dir = 0; int dir = 0;
unsigned int btime = req->buffer_size; unsigned int btime = req->buffer_size;
@ -344,6 +346,7 @@ static int alsa_open (int in, struct alsa_params_req *req,
&btime, &btime,
&dir &dir
); );
obt = btime;
} }
else { else {
snd_pcm_uframes_t bsize = req->buffer_size; snd_pcm_uframes_t bsize = req->buffer_size;
@ -353,15 +356,22 @@ static int alsa_open (int in, struct alsa_params_req *req,
hw_params, hw_params,
&bsize &bsize
); );
obt = bsize;
} }
if (err < 0) { if (err < 0) {
alsa_logerr2 (err, typ, "Failed to set buffer %s to %d\n", alsa_logerr2 (err, typ, "Failed to set buffer %s to %d\n",
size_in_usec ? "time" : "size", req->buffer_size); size_in_usec ? "time" : "size", req->buffer_size);
goto err; goto err;
} }
if (obt - req->buffer_size)
dolog ("Requested buffer %s %u was rejected, using %lu\n",
size_in_usec ? "time" : "size", req->buffer_size, obt);
} }
if (req->period_size) { if (req->period_size) {
unsigned long obt;
if (size_in_usec) { if (size_in_usec) {
int dir = 0; int dir = 0;
unsigned int ptime = req->period_size; unsigned int ptime = req->period_size;
@ -372,6 +382,7 @@ static int alsa_open (int in, struct alsa_params_req *req,
&ptime, &ptime,
&dir &dir
); );
obt = ptime;
} }
else { else {
snd_pcm_uframes_t psize = req->period_size; snd_pcm_uframes_t psize = req->period_size;
@ -381,6 +392,7 @@ static int alsa_open (int in, struct alsa_params_req *req,
hw_params, hw_params,
&psize &psize
); );
obt = psize;
} }
if (err < 0) { if (err < 0) {
@ -388,6 +400,10 @@ static int alsa_open (int in, struct alsa_params_req *req,
size_in_usec ? "time" : "size", req->period_size); size_in_usec ? "time" : "size", req->period_size);
goto err; goto err;
} }
if (obt - req->period_size)
dolog ("Requested period %s %u was rejected, using %lu\n",
size_in_usec ? "time" : "size", req->period_size, obt);
} }
err = snd_pcm_hw_params (handle, hw_params); err = snd_pcm_hw_params (handle, hw_params);