diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/pcmbuf.c | 41 |
1 files changed, 9 insertions, 32 deletions
diff --git a/apps/pcmbuf.c b/apps/pcmbuf.c index 89f9e27798..7e6954c280 100644 --- a/apps/pcmbuf.c +++ b/apps/pcmbuf.c | |||
@@ -37,10 +37,8 @@ | |||
37 | #include "dsp.h" | 37 | #include "dsp.h" |
38 | #include "thread.h" | 38 | #include "thread.h" |
39 | 39 | ||
40 | /* Define PCMBUF_MUTING if the codec requires muting to prevent pops | 40 | /* Define PCMBUF_MUTING if the codec requires muting to prevent pops */ |
41 | * Currently assumes anything other than tlv320 and uda1380 require it | 41 | #if !defined(HAVE_UDA1380) && !defined(HAVE_TLV320) && !defined(HAVE_AS3514) |
42 | */ | ||
43 | #if !defined(HAVE_UDA1380) && !defined(HAVE_TLV320) | ||
44 | #define PCMBUF_MUTING | 42 | #define PCMBUF_MUTING |
45 | #endif | 43 | #endif |
46 | 44 | ||
@@ -363,15 +361,7 @@ bool pcmbuf_crossfade_init(bool manual_skip) | |||
363 | 361 | ||
364 | void pcmbuf_play_stop(void) | 362 | void pcmbuf_play_stop(void) |
365 | { | 363 | { |
366 | /** Prevent a very tiny pop from happening by muting audio | ||
367 | * until dma has been initialized. */ | ||
368 | #ifdef PCMBUF_MUTING | ||
369 | pcm_mute(true); | ||
370 | #endif | ||
371 | pcm_play_stop(); | 364 | pcm_play_stop(); |
372 | #ifdef PCMBUF_MUTING | ||
373 | pcm_mute(false); | ||
374 | #endif | ||
375 | 365 | ||
376 | pcmbuf_unplayed_bytes = 0; | 366 | pcmbuf_unplayed_bytes = 0; |
377 | pcmbuf_mix_chunk = NULL; | 367 | pcmbuf_mix_chunk = NULL; |
@@ -491,7 +481,8 @@ unsigned char * pcmbuf_get_meminfo(size_t *length) | |||
491 | } | 481 | } |
492 | #endif | 482 | #endif |
493 | 483 | ||
494 | void pcmbuf_pause(bool pause) { | 484 | void pcmbuf_pause(bool pause) |
485 | { | ||
495 | #ifdef PCMBUF_MUTING | 486 | #ifdef PCMBUF_MUTING |
496 | if (pause) | 487 | if (pause) |
497 | pcm_mute(true); | 488 | pcm_mute(true); |
@@ -507,26 +498,12 @@ void pcmbuf_pause(bool pause) { | |||
507 | /* Force playback. */ | 498 | /* Force playback. */ |
508 | void pcmbuf_play_start(void) | 499 | void pcmbuf_play_start(void) |
509 | { | 500 | { |
510 | if (!pcm_is_playing() && pcmbuf_unplayed_bytes) | 501 | if (!pcm_is_playing() && pcmbuf_unplayed_bytes && pcmbuf_read != NULL) |
511 | { | 502 | { |
512 | #ifdef PCMBUF_MUTING | 503 | last_chunksize = pcmbuf_read->size; |
513 | /** Prevent a very tiny pop from happening by muting audio | 504 | pcmbuf_unplayed_bytes -= last_chunksize; |
514 | * until dma has been initialized. */ | 505 | pcm_play_data(pcmbuf_callback, |
515 | pcm_mute(true); | 506 | (unsigned char *)pcmbuf_read->addr, last_chunksize); |
516 | #endif | ||
517 | |||
518 | if (pcmbuf_read != NULL) | ||
519 | { | ||
520 | last_chunksize = pcmbuf_read->size; | ||
521 | pcmbuf_unplayed_bytes -= last_chunksize; | ||
522 | pcm_play_data(pcmbuf_callback, | ||
523 | (unsigned char *)pcmbuf_read->addr, last_chunksize); | ||
524 | } | ||
525 | |||
526 | #ifdef PCMBUF_MUTING | ||
527 | /* Now unmute the audio. */ | ||
528 | pcm_mute(false); | ||
529 | #endif | ||
530 | } | 507 | } |
531 | } | 508 | } |
532 | 509 | ||