summaryrefslogtreecommitdiff
path: root/apps/playback.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/playback.c')
-rw-r--r--apps/playback.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/apps/playback.c b/apps/playback.c
index 8c480c46c7..44aa8696fc 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -203,7 +203,7 @@ static unsigned char *iram_buf[2];
203static unsigned char *dram_buf[2]; 203static unsigned char *dram_buf[2];
204 204
205/* Step count to the next unbuffered track. */ 205/* Step count to the next unbuffered track. */
206static int last_peek_offset; 206static int last_peek_offset; /* Audio thread */
207 207
208/* Track information (count in file buffer, read/write indexes for 208/* Track information (count in file buffer, read/write indexes for
209 track ring structure. */ 209 track ring structure. */
@@ -674,7 +674,7 @@ void audio_preinit(void)
674 track_buffer_callback = NULL; 674 track_buffer_callback = NULL;
675 track_unbuffer_callback = NULL; 675 track_unbuffer_callback = NULL;
676 track_changed_callback = NULL; 676 track_changed_callback = NULL;
677 /* Just to prevent CUR_TI never be anything random. */ 677 /* Just to prevent CUR_TI from being anything random. */
678 track_ridx = 0; 678 track_ridx = 0;
679 679
680 mutex_init(&mutex_codecthread); 680 mutex_init(&mutex_codecthread);
@@ -1249,7 +1249,6 @@ static void codec_set_offset_callback(size_t value)
1249static void codec_advance_buffer_counters(size_t amount) 1249static void codec_advance_buffer_counters(size_t amount)
1250{ 1250{
1251 buf_ridx = RINGBUF_ADD(buf_ridx, amount); 1251 buf_ridx = RINGBUF_ADD(buf_ridx, amount);
1252
1253 ci.curpos += amount; 1252 ci.curpos += amount;
1254 CUR_TI->available -= amount; 1253 CUR_TI->available -= amount;
1255 1254
@@ -1963,12 +1962,11 @@ static bool audio_buffer_wind_forward(int new_track_ridx, int old_track_ridx)
1963 amount = tracks[old_track_ridx].filesize - ci.curpos; 1962 amount = tracks[old_track_ridx].filesize - ci.curpos;
1964 /* Then collect all data from tracks in between them */ 1963 /* Then collect all data from tracks in between them */
1965 amount += audio_buffer_count_tracks(old_track_ridx, new_track_ridx); 1964 amount += audio_buffer_count_tracks(old_track_ridx, new_track_ridx);
1965 logf("bwf:%ldB", (long) amount);
1966 1966
1967 if (amount > FILEBUFUSED) 1967 if (amount > FILEBUFUSED)
1968 return false; 1968 return false;
1969 1969
1970 logf("bwf:%ldB",amount);
1971
1972 /* Wind the buffer to the beginning of the target track or its codec */ 1970 /* Wind the buffer to the beginning of the target track or its codec */
1973 buf_ridx = RINGBUF_ADD(buf_ridx, amount); 1971 buf_ridx = RINGBUF_ADD(buf_ridx, amount);
1974 1972
@@ -2535,7 +2533,6 @@ static bool audio_load_track(int offset, bool start_play, bool rebuffer)
2535 tracks[track_widx].id3.offset = offset; 2533 tracks[track_widx].id3.offset = offset;
2536 break; 2534 break;
2537 } 2535 }
2538
2539 } 2536 }
2540 2537
2541 logf("alt:%s", trackname); 2538 logf("alt:%s", trackname);
@@ -2891,9 +2888,8 @@ static void audio_rebuffer_and_seek(size_t newpos)
2891 int fd; 2888 int fd;
2892 char *trackname; 2889 char *trackname;
2893 2890
2894 trackname = playlist_peek(0);
2895 /* (Re-)open current track's file handle. */ 2891 /* (Re-)open current track's file handle. */
2896 2892 trackname = playlist_peek(0);
2897 fd = open(trackname, O_RDONLY); 2893 fd = open(trackname, O_RDONLY);
2898 if (fd < 0) 2894 if (fd < 0)
2899 { 2895 {
@@ -3342,6 +3338,8 @@ static void audio_thread(void)
3342 3338
3343 case SYS_TIMEOUT: 3339 case SYS_TIMEOUT:
3344 LOGFQUEUE("audio < SYS_TIMEOUT"); 3340 LOGFQUEUE("audio < SYS_TIMEOUT");
3341 if (pcmbuf_output_completed())
3342 pcmbuf_play_stop(); /* Stop to ensure unboosted */
3345 break; 3343 break;
3346 3344
3347 default: 3345 default: