summaryrefslogtreecommitdiff
path: root/apps/playback.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/playback.c')
-rw-r--r--apps/playback.c58
1 files changed, 28 insertions, 30 deletions
diff --git a/apps/playback.c b/apps/playback.c
index 53dbe07823..7873700247 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -340,7 +340,7 @@ void mp3_play_data(const unsigned char* start, int size,
340 LOGFQUEUE("mp3 > voice Q_VOICE_STOP"); 340 LOGFQUEUE("mp3 > voice Q_VOICE_STOP");
341 queue_post(&voice_queue, Q_VOICE_STOP, 0); 341 queue_post(&voice_queue, Q_VOICE_STOP, 0);
342 LOGFQUEUE("mp3 > voice Q_VOICE_PLAY"); 342 LOGFQUEUE("mp3 > voice Q_VOICE_PLAY");
343 queue_post(&voice_queue, Q_VOICE_PLAY, &voice_clip); 343 queue_post(&voice_queue, Q_VOICE_PLAY, (intptr_t)&voice_clip);
344 voice_thread_start = true; 344 voice_thread_start = true;
345 trigger_cpu_boost(); 345 trigger_cpu_boost();
346#else 346#else
@@ -355,7 +355,7 @@ void mp3_play_stop(void)
355#ifdef PLAYBACK_VOICE 355#ifdef PLAYBACK_VOICE
356 queue_remove_from_head(&voice_queue, Q_VOICE_STOP); 356 queue_remove_from_head(&voice_queue, Q_VOICE_STOP);
357 LOGFQUEUE("mp3 > voice Q_VOICE_STOP"); 357 LOGFQUEUE("mp3 > voice Q_VOICE_STOP");
358 queue_post(&voice_queue, Q_VOICE_STOP, (void *)1); 358 queue_post(&voice_queue, Q_VOICE_STOP, 1);
359#endif 359#endif
360} 360}
361 361
@@ -500,7 +500,7 @@ bool audio_load_encoder(int afmt)
500 ci.enc_codec_loaded = 0; /* clear any previous error condition */ 500 ci.enc_codec_loaded = 0; /* clear any previous error condition */
501 501
502 LOGFQUEUE("audio > Q_AUDIO_LOAD_ENCODER"); 502 LOGFQUEUE("audio > Q_AUDIO_LOAD_ENCODER");
503 queue_post(&audio_queue, Q_AUDIO_LOAD_ENCODER, (void *)enc_fn); 503 queue_post(&audio_queue, Q_AUDIO_LOAD_ENCODER, (intptr_t)enc_fn);
504 504
505 while (ci.enc_codec_loaded == 0) 505 while (ci.enc_codec_loaded == 0)
506 yield(); 506 yield();
@@ -601,7 +601,7 @@ void audio_play(long offset)
601 /* Truncate any existing voice output so we don't have spelling 601 /* Truncate any existing voice output so we don't have spelling
602 * etc. over the first part of the played track */ 602 * etc. over the first part of the played track */
603 LOGFQUEUE("mp3 > voice Q_VOICE_STOP"); 603 LOGFQUEUE("mp3 > voice Q_VOICE_STOP");
604 queue_post(&voice_queue, Q_VOICE_STOP, (void *)1); 604 queue_post(&voice_queue, Q_VOICE_STOP, 1);
605#endif 605#endif
606 606
607 /* Start playback */ 607 /* Start playback */
@@ -615,7 +615,7 @@ void audio_play(long offset)
615 LOGFQUEUE("audio > audio Q_AUDIO_STOP"); 615 LOGFQUEUE("audio > audio Q_AUDIO_STOP");
616 queue_post(&audio_queue, Q_AUDIO_STOP, 0); 616 queue_post(&audio_queue, Q_AUDIO_STOP, 0);
617 LOGFQUEUE("audio > audio Q_AUDIO_PLAY"); 617 LOGFQUEUE("audio > audio Q_AUDIO_PLAY");
618 queue_post(&audio_queue, Q_AUDIO_PLAY, (void *)offset); 618 queue_post(&audio_queue, Q_AUDIO_PLAY, offset);
619 } 619 }
620 620
621 /* Don't return until playback has actually started */ 621 /* Don't return until playback has actually started */
@@ -637,13 +637,13 @@ void audio_stop(void)
637void audio_pause(void) 637void audio_pause(void)
638{ 638{
639 LOGFQUEUE("audio > audio Q_AUDIO_PAUSE"); 639 LOGFQUEUE("audio > audio Q_AUDIO_PAUSE");
640 queue_post(&audio_queue, Q_AUDIO_PAUSE, (void *)true); 640 queue_post(&audio_queue, Q_AUDIO_PAUSE, true);
641} 641}
642 642
643void audio_resume(void) 643void audio_resume(void)
644{ 644{
645 LOGFQUEUE("audio > audio Q_AUDIO_PAUSE resume"); 645 LOGFQUEUE("audio > audio Q_AUDIO_PAUSE resume");
646 queue_post(&audio_queue, Q_AUDIO_PAUSE, (void *)false); 646 queue_post(&audio_queue, Q_AUDIO_PAUSE, false);
647} 647}
648 648
649void audio_next(void) 649void audio_next(void)
@@ -654,7 +654,7 @@ void audio_next(void)
654 pcmbuf_beep(5000, 100, 2500*global_settings.beep); 654 pcmbuf_beep(5000, 100, 2500*global_settings.beep);
655 655
656 LOGFQUEUE("audio > audio Q_AUDIO_SKIP 1"); 656 LOGFQUEUE("audio > audio Q_AUDIO_SKIP 1");
657 queue_post(&audio_queue, Q_AUDIO_SKIP, (void *)1); 657 queue_post(&audio_queue, Q_AUDIO_SKIP, 1);
658 /* Keep wps fast while our message travels inside deep playback queues. */ 658 /* Keep wps fast while our message travels inside deep playback queues. */
659 wps_offset++; 659 wps_offset++;
660 track_changed = true; 660 track_changed = true;
@@ -675,7 +675,7 @@ void audio_prev(void)
675 pcmbuf_beep(5000, 100, 2500*global_settings.beep); 675 pcmbuf_beep(5000, 100, 2500*global_settings.beep);
676 676
677 LOGFQUEUE("audio > audio Q_AUDIO_SKIP -1"); 677 LOGFQUEUE("audio > audio Q_AUDIO_SKIP -1");
678 queue_post(&audio_queue, Q_AUDIO_SKIP, (void *)-1); 678 queue_post(&audio_queue, Q_AUDIO_SKIP, -1);
679 /* Keep wps fast while our message travels inside deep playback queues. */ 679 /* Keep wps fast while our message travels inside deep playback queues. */
680 wps_offset--; 680 wps_offset--;
681 track_changed = true; 681 track_changed = true;
@@ -691,13 +691,13 @@ void audio_prev(void)
691void audio_next_dir(void) 691void audio_next_dir(void)
692{ 692{
693 LOGFQUEUE("audio > audio Q_AUDIO_DIR_SKIP 1"); 693 LOGFQUEUE("audio > audio Q_AUDIO_DIR_SKIP 1");
694 queue_post(&audio_queue, Q_AUDIO_DIR_SKIP, (void *)1); 694 queue_post(&audio_queue, Q_AUDIO_DIR_SKIP, 1);
695} 695}
696 696
697void audio_prev_dir(void) 697void audio_prev_dir(void)
698{ 698{
699 LOGFQUEUE("audio > audio Q_AUDIO_DIR_SKIP -1"); 699 LOGFQUEUE("audio > audio Q_AUDIO_DIR_SKIP -1");
700 queue_post(&audio_queue, Q_AUDIO_DIR_SKIP, (void *)-1); 700 queue_post(&audio_queue, Q_AUDIO_DIR_SKIP, -1);
701} 701}
702 702
703void audio_pre_ff_rewind(void) 703void audio_pre_ff_rewind(void)
@@ -709,7 +709,7 @@ void audio_pre_ff_rewind(void)
709void audio_ff_rewind(long newpos) 709void audio_ff_rewind(long newpos)
710{ 710{
711 LOGFQUEUE("audio > audio Q_AUDIO_FF_REWIND"); 711 LOGFQUEUE("audio > audio Q_AUDIO_FF_REWIND");
712 queue_post(&audio_queue, Q_AUDIO_FF_REWIND, (int *)newpos); 712 queue_post(&audio_queue, Q_AUDIO_FF_REWIND, newpos);
713} 713}
714 714
715void audio_flush_and_reload_tracks(void) 715void audio_flush_and_reload_tracks(void)
@@ -1139,7 +1139,7 @@ static void* voice_request_buffer_callback(size_t *realsize, size_t reqsize)
1139 1139
1140 case Q_VOICE_STOP: 1140 case Q_VOICE_STOP:
1141 LOGFQUEUE("voice < Q_VOICE_STOP"); 1141 LOGFQUEUE("voice < Q_VOICE_STOP");
1142 if (ev.data == (void *)1 && !playing && pcm_is_playing()) 1142 if (ev.data == 1 && !playing && pcm_is_playing())
1143 { 1143 {
1144 /* Aborting: Slight hack - flush PCM buffer if 1144 /* Aborting: Slight hack - flush PCM buffer if
1145 only being used for voice */ 1145 only being used for voice */
@@ -1192,7 +1192,7 @@ static void* voice_request_buffer_callback(size_t *realsize, size_t reqsize)
1192 1192
1193 voice_is_playing = true; 1193 voice_is_playing = true;
1194 trigger_cpu_boost(); 1194 trigger_cpu_boost();
1195 voice_data = ev.data; 1195 voice_data = (struct voice_info *)ev.data;
1196 voice_remaining = voice_data->size; 1196 voice_remaining = voice_data->size;
1197 voicebuf = voice_data->buf; 1197 voicebuf = voice_data->buf;
1198 voice_getmore = voice_data->callback; 1198 voice_getmore = voice_data->callback;
@@ -1573,11 +1573,11 @@ static void codec_advance_buffer_callback(size_t amount)
1573 1573
1574 if (amount > CUR_TI->available) 1574 if (amount > CUR_TI->available)
1575 { 1575 {
1576 int result; 1576 intptr_t result;
1577 LOGFQUEUE("codec >| audio Q_AUDIO_REBUFFER_SEEK"); 1577 LOGFQUEUE("codec >| audio Q_AUDIO_REBUFFER_SEEK");
1578 1578
1579 result = (int)(intptr_t)queue_send(&audio_queue, Q_AUDIO_REBUFFER_SEEK, 1579 result = queue_send(&audio_queue, Q_AUDIO_REBUFFER_SEEK,
1580 (void *)(uintptr_t)(ci.curpos + amount)); 1580 ci.curpos + amount);
1581 1581
1582 switch (result) 1582 switch (result)
1583 { 1583 {
@@ -1716,11 +1716,10 @@ static bool codec_seek_buffer_callback(size_t newpos)
1716 /* We need to reload the song. */ 1716 /* We need to reload the song. */
1717 if (newpos < CUR_TI->start_pos) 1717 if (newpos < CUR_TI->start_pos)
1718 { 1718 {
1719 int result; 1719 intptr_t result;
1720 1720
1721 LOGFQUEUE("codec >| audio Q_AUDIO_REBUFFER_SEEK"); 1721 LOGFQUEUE("codec >| audio Q_AUDIO_REBUFFER_SEEK");
1722 result = (int)(intptr_t)queue_send(&audio_queue, Q_AUDIO_REBUFFER_SEEK, 1722 result = queue_send(&audio_queue, Q_AUDIO_REBUFFER_SEEK, newpos);
1723 (void *)(uintptr_t)newpos);
1724 1723
1725 switch (result) 1724 switch (result)
1726 { 1725 {
@@ -1851,7 +1850,7 @@ static void codec_track_skip_done(bool was_manual)
1851 1850
1852static bool codec_load_next_track(void) 1851static bool codec_load_next_track(void)
1853{ 1852{
1854 int result; 1853 intptr_t result;
1855 1854
1856 prev_track_elapsed = CUR_TI->id3.elapsed; 1855 prev_track_elapsed = CUR_TI->id3.elapsed;
1857 1856
@@ -1872,8 +1871,7 @@ static bool codec_load_next_track(void)
1872 1871
1873 trigger_cpu_boost(); 1872 trigger_cpu_boost();
1874 LOGFQUEUE("codec >| audio Q_AUDIO_CHECK_NEW_TRACK"); 1873 LOGFQUEUE("codec >| audio Q_AUDIO_CHECK_NEW_TRACK");
1875 result = (int)(intptr_t)queue_send(&audio_queue, Q_AUDIO_CHECK_NEW_TRACK, 1874 result = queue_send(&audio_queue, Q_AUDIO_CHECK_NEW_TRACK, 0);
1876 NULL);
1877 1875
1878#if 0 /* Q_CODEC_REQUEST_PENDING never posted anyway */ 1876#if 0 /* Q_CODEC_REQUEST_PENDING never posted anyway */
1879 while (1) 1877 while (1)
@@ -2007,7 +2005,7 @@ static void codec_thread(void)
2007 if (voice_codec_loaded && current_codec == CODEC_IDX_VOICE) 2005 if (voice_codec_loaded && current_codec == CODEC_IDX_VOICE)
2008 { 2006 {
2009 LOGFQUEUE("codec > voice Q_ENCODER_RECORD"); 2007 LOGFQUEUE("codec > voice Q_ENCODER_RECORD");
2010 queue_post(&voice_queue, Q_ENCODER_RECORD, NULL); 2008 queue_post(&voice_queue, Q_ENCODER_RECORD, 0);
2011 } 2009 }
2012 mutex_lock(&mutex_codecthread); 2010 mutex_lock(&mutex_codecthread);
2013#endif 2011#endif
@@ -2097,7 +2095,7 @@ static void codec_thread(void)
2097 const char *codec_fn = get_codec_filename(CUR_TI->id3.codectype); 2095 const char *codec_fn = get_codec_filename(CUR_TI->id3.codectype);
2098 LOGFQUEUE("codec > codec Q_CODEC_LOAD_DISK"); 2096 LOGFQUEUE("codec > codec Q_CODEC_LOAD_DISK");
2099 queue_post(&codec_queue, Q_CODEC_LOAD_DISK, 2097 queue_post(&codec_queue, Q_CODEC_LOAD_DISK,
2100 (void *)codec_fn); 2098 (intptr_t)codec_fn);
2101 } 2099 }
2102 } 2100 }
2103 break; 2101 break;
@@ -2533,7 +2531,7 @@ static bool audio_loadcodec(bool start_play)
2533 ci.taginfo_ready = &CUR_TI->taginfo_ready; 2531 ci.taginfo_ready = &CUR_TI->taginfo_ready;
2534 ci.curpos = 0; 2532 ci.curpos = 0;
2535 LOGFQUEUE("codec > codec Q_CODEC_LOAD_DISK"); 2533 LOGFQUEUE("codec > codec Q_CODEC_LOAD_DISK");
2536 queue_post(&codec_queue, Q_CODEC_LOAD_DISK, (void *)codec_fn); 2534 queue_post(&codec_queue, Q_CODEC_LOAD_DISK, (intptr_t)codec_fn);
2537 return true; 2535 return true;
2538 } 2536 }
2539 else 2537 else
@@ -3569,7 +3567,7 @@ static void audio_thread(void)
3569 3567
3570 while (1) 3568 while (1)
3571 { 3569 {
3572 void *result = NULL; 3570 intptr_t result = 0;
3573 3571
3574 if (filling) 3572 if (filling)
3575 { 3573 {
@@ -3643,18 +3641,18 @@ static void audio_thread(void)
3643 3641
3644 case Q_AUDIO_REBUFFER_SEEK: 3642 case Q_AUDIO_REBUFFER_SEEK:
3645 LOGFQUEUE("audio < Q_AUDIO_REBUFFER_SEEK"); 3643 LOGFQUEUE("audio < Q_AUDIO_REBUFFER_SEEK");
3646 result = (void *)(intptr_t)audio_rebuffer_and_seek((size_t)ev.data); 3644 result = audio_rebuffer_and_seek(ev.data);
3647 break; 3645 break;
3648 3646
3649 case Q_AUDIO_CHECK_NEW_TRACK: 3647 case Q_AUDIO_CHECK_NEW_TRACK:
3650 LOGFQUEUE("audio < Q_AUDIO_CHECK_NEW_TRACK"); 3648 LOGFQUEUE("audio < Q_AUDIO_CHECK_NEW_TRACK");
3651 result = (void *)(intptr_t)audio_check_new_track(); 3649 result = audio_check_new_track();
3652 break; 3650 break;
3653 3651
3654 case Q_AUDIO_DIR_SKIP: 3652 case Q_AUDIO_DIR_SKIP:
3655 LOGFQUEUE("audio < Q_AUDIO_DIR_SKIP"); 3653 LOGFQUEUE("audio < Q_AUDIO_DIR_SKIP");
3656 playlist_end = false; 3654 playlist_end = false;
3657 audio_initiate_dir_change((long)ev.data); 3655 audio_initiate_dir_change(ev.data);
3658 break; 3656 break;
3659 3657
3660 case Q_AUDIO_NEW_PLAYLIST: 3658 case Q_AUDIO_NEW_PLAYLIST: