diff options
Diffstat (limited to 'apps/playback.c')
-rw-r--r-- | apps/playback.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/apps/playback.c b/apps/playback.c index d5f2b9024e..e4806507ef 100644 --- a/apps/playback.c +++ b/apps/playback.c | |||
@@ -951,19 +951,13 @@ static void* voice_request_buffer_callback(size_t *realsize, size_t reqsize) | |||
951 | case Q_AUDIO_PLAY: | 951 | case Q_AUDIO_PLAY: |
952 | LOGFQUEUE("voice < Q_AUDIO_PLAY"); | 952 | LOGFQUEUE("voice < Q_AUDIO_PLAY"); |
953 | if (playing) | 953 | if (playing) |
954 | { | 954 | swap_codec(); |
955 | if (audio_codec_loaded) | ||
956 | swap_codec(); | ||
957 | else | ||
958 | yield(); | ||
959 | } | ||
960 | break; | 955 | break; |
961 | 956 | ||
962 | #if defined(HAVE_RECORDING) && !defined(SIMULATOR) | 957 | #if defined(HAVE_RECORDING) && !defined(SIMULATOR) |
963 | case Q_ENCODER_RECORD: | 958 | case Q_ENCODER_RECORD: |
964 | LOGFQUEUE("voice < Q_ENCODER_RECORD"); | 959 | LOGFQUEUE("voice < Q_ENCODER_RECORD"); |
965 | if (audio_codec_loaded) | 960 | swap_codec(); |
966 | swap_codec(); | ||
967 | break; | 961 | break; |
968 | #endif | 962 | #endif |
969 | 963 | ||
@@ -1747,7 +1741,8 @@ static void codec_thread(void) | |||
1747 | LOGFQUEUE("codec < Q_CODEC_LOAD_DISK"); | 1741 | LOGFQUEUE("codec < Q_CODEC_LOAD_DISK"); |
1748 | audio_codec_loaded = true; | 1742 | audio_codec_loaded = true; |
1749 | #ifdef PLAYBACK_VOICE | 1743 | #ifdef PLAYBACK_VOICE |
1750 | if (voice_codec_loaded) | 1744 | /* Don't sent messages to voice codec if it's not current */ |
1745 | if (voice_codec_loaded && current_codec == CODEC_IDX_VOICE) | ||
1751 | { | 1746 | { |
1752 | LOGFQUEUE("codec > voice Q_AUDIO_PLAY"); | 1747 | LOGFQUEUE("codec > voice Q_AUDIO_PLAY"); |
1753 | queue_post(&voice_queue, Q_AUDIO_PLAY, 0); | 1748 | queue_post(&voice_queue, Q_AUDIO_PLAY, 0); |
@@ -1776,7 +1771,7 @@ static void codec_thread(void) | |||
1776 | 1771 | ||
1777 | audio_codec_loaded = true; | 1772 | audio_codec_loaded = true; |
1778 | #ifdef PLAYBACK_VOICE | 1773 | #ifdef PLAYBACK_VOICE |
1779 | if (voice_codec_loaded) | 1774 | if (voice_codec_loaded && current_codec == CODEC_IDX_VOICE) |
1780 | { | 1775 | { |
1781 | LOGFQUEUE("codec > voice Q_AUDIO_PLAY"); | 1776 | LOGFQUEUE("codec > voice Q_AUDIO_PLAY"); |
1782 | queue_post(&voice_queue, Q_AUDIO_PLAY, 0); | 1777 | queue_post(&voice_queue, Q_AUDIO_PLAY, 0); |
@@ -1794,7 +1789,7 @@ static void codec_thread(void) | |||
1794 | #if defined(HAVE_RECORDING) && !defined(SIMULATOR) | 1789 | #if defined(HAVE_RECORDING) && !defined(SIMULATOR) |
1795 | case Q_ENCODER_LOAD_DISK: | 1790 | case Q_ENCODER_LOAD_DISK: |
1796 | LOGFQUEUE("codec < Q_ENCODER_LOAD_DISK"); | 1791 | LOGFQUEUE("codec < Q_ENCODER_LOAD_DISK"); |
1797 | audio_codec_loaded = false; | 1792 | audio_codec_loaded = false; /* Not audio codec! */ |
1798 | #ifdef PLAYBACK_VOICE | 1793 | #ifdef PLAYBACK_VOICE |
1799 | if (voice_codec_loaded && current_codec == CODEC_IDX_VOICE) | 1794 | if (voice_codec_loaded && current_codec == CODEC_IDX_VOICE) |
1800 | { | 1795 | { |