Commit f3b5298316aa7885b83d49b6499388189b3e08f7
1 parent
ece43b8d
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
Showing
1 changed file
with
16 additions
and
0 deletions
audio/alsaaudio.c
@@ -334,6 +334,8 @@ static int alsa_open (int in, struct alsa_params_req *req, | @@ -334,6 +334,8 @@ static int alsa_open (int in, struct alsa_params_req *req, | ||
334 | } | 334 | } |
335 | 335 | ||
336 | if (req->buffer_size) { | 336 | if (req->buffer_size) { |
337 | + unsigned long obt; | ||
338 | + | ||
337 | if (size_in_usec) { | 339 | if (size_in_usec) { |
338 | int dir = 0; | 340 | int dir = 0; |
339 | unsigned int btime = req->buffer_size; | 341 | unsigned int btime = req->buffer_size; |
@@ -344,6 +346,7 @@ static int alsa_open (int in, struct alsa_params_req *req, | @@ -344,6 +346,7 @@ static int alsa_open (int in, struct alsa_params_req *req, | ||
344 | &btime, | 346 | &btime, |
345 | &dir | 347 | &dir |
346 | ); | 348 | ); |
349 | + obt = btime; | ||
347 | } | 350 | } |
348 | else { | 351 | else { |
349 | snd_pcm_uframes_t bsize = req->buffer_size; | 352 | snd_pcm_uframes_t bsize = req->buffer_size; |
@@ -353,15 +356,22 @@ static int alsa_open (int in, struct alsa_params_req *req, | @@ -353,15 +356,22 @@ static int alsa_open (int in, struct alsa_params_req *req, | ||
353 | hw_params, | 356 | hw_params, |
354 | &bsize | 357 | &bsize |
355 | ); | 358 | ); |
359 | + obt = bsize; | ||
356 | } | 360 | } |
357 | if (err < 0) { | 361 | if (err < 0) { |
358 | alsa_logerr2 (err, typ, "Failed to set buffer %s to %d\n", | 362 | alsa_logerr2 (err, typ, "Failed to set buffer %s to %d\n", |
359 | size_in_usec ? "time" : "size", req->buffer_size); | 363 | size_in_usec ? "time" : "size", req->buffer_size); |
360 | goto err; | 364 | goto err; |
361 | } | 365 | } |
366 | + | ||
367 | + if (obt - req->buffer_size) | ||
368 | + dolog ("Requested buffer %s %u was rejected, using %lu\n", | ||
369 | + size_in_usec ? "time" : "size", req->buffer_size, obt); | ||
362 | } | 370 | } |
363 | 371 | ||
364 | if (req->period_size) { | 372 | if (req->period_size) { |
373 | + unsigned long obt; | ||
374 | + | ||
365 | if (size_in_usec) { | 375 | if (size_in_usec) { |
366 | int dir = 0; | 376 | int dir = 0; |
367 | unsigned int ptime = req->period_size; | 377 | unsigned int ptime = req->period_size; |
@@ -372,6 +382,7 @@ static int alsa_open (int in, struct alsa_params_req *req, | @@ -372,6 +382,7 @@ static int alsa_open (int in, struct alsa_params_req *req, | ||
372 | &ptime, | 382 | &ptime, |
373 | &dir | 383 | &dir |
374 | ); | 384 | ); |
385 | + obt = ptime; | ||
375 | } | 386 | } |
376 | else { | 387 | else { |
377 | snd_pcm_uframes_t psize = req->period_size; | 388 | snd_pcm_uframes_t psize = req->period_size; |
@@ -381,6 +392,7 @@ static int alsa_open (int in, struct alsa_params_req *req, | @@ -381,6 +392,7 @@ static int alsa_open (int in, struct alsa_params_req *req, | ||
381 | hw_params, | 392 | hw_params, |
382 | &psize | 393 | &psize |
383 | ); | 394 | ); |
395 | + obt = psize; | ||
384 | } | 396 | } |
385 | 397 | ||
386 | if (err < 0) { | 398 | if (err < 0) { |
@@ -388,6 +400,10 @@ static int alsa_open (int in, struct alsa_params_req *req, | @@ -388,6 +400,10 @@ static int alsa_open (int in, struct alsa_params_req *req, | ||
388 | size_in_usec ? "time" : "size", req->period_size); | 400 | size_in_usec ? "time" : "size", req->period_size); |
389 | goto err; | 401 | goto err; |
390 | } | 402 | } |
403 | + | ||
404 | + if (obt - req->period_size) | ||
405 | + dolog ("Requested period %s %u was rejected, using %lu\n", | ||
406 | + size_in_usec ? "time" : "size", req->period_size, obt); | ||
391 | } | 407 | } |
392 | 408 | ||
393 | err = snd_pcm_hw_params (handle, hw_params); | 409 | err = snd_pcm_hw_params (handle, hw_params); |