summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2006-09-17 18:52:31 +0000
committerMichael Sevakis <jethead71@rockbox.org>2006-09-17 18:52:31 +0000
commit9d56f2d2cf8889465fdf95ffefce195a06024f83 (patch)
tree36efe64d97c5ef76563cbc783e1e02c22742af42
parentd8f32834d697d32efb7736117190ad9bbf120669 (diff)
downloadrockbox-9d56f2d2cf8889465fdf95ffefce195a06024f83.tar.gz
rockbox-9d56f2d2cf8889465fdf95ffefce195a06024f83.zip
SWCODEC recording hang fixed. Fixed other trouble spots for codec swapping when playing. Removed call to audio_set_recording_options from fm_recording_settings on SWCODEC (Not proper to do ! My bad.).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10978 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/playback.c17
-rw-r--r--apps/recorder/radio.c6
2 files changed, 8 insertions, 15 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 {
diff --git a/apps/recorder/radio.c b/apps/recorder/radio.c
index 208e7b67fa..caaba67404 100644
--- a/apps/recorder/radio.c
+++ b/apps/recorder/radio.c
@@ -1635,19 +1635,17 @@ static bool fm_recording_settings(void)
1635{ 1635{
1636 bool ret = recording_menu(true); 1636 bool ret = recording_menu(true);
1637 1637
1638#if CONFIG_CODEC != SWCODEC
1638 if (!ret) 1639 if (!ret)
1639 { 1640 {
1640 rec_set_recording_options(global_settings.rec_frequency, 1641 rec_set_recording_options(global_settings.rec_frequency,
1641 global_settings.rec_quality, 1642 global_settings.rec_quality,
1642#if CONFIG_CODEC == SWCODEC
1643 AUDIO_SRC_FMRADIO, SRCF_FMRADIO_PLAYING,
1644#else
1645 AUDIO_SRC_LINEIN, 0, 1643 AUDIO_SRC_LINEIN, 0,
1646#endif
1647 global_settings.rec_channels, 1644 global_settings.rec_channels,
1648 global_settings.rec_editable, 1645 global_settings.rec_editable,
1649 global_settings.rec_prerecord_time); 1646 global_settings.rec_prerecord_time);
1650 } 1647 }
1648#endif
1651 1649
1652 return ret; 1650 return ret;
1653} 1651}