summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffrey Goode <jeffg7@gmail.com>2009-08-15 14:36:49 +0000
committerJeffrey Goode <jeffg7@gmail.com>2009-08-15 14:36:49 +0000
commit0fe4417da85fc2189b45b712d3a6a7e842300f4c (patch)
treec9807fb3ffbc1e3aaff309bd21527697e0c0abce
parentac77c08f11205fddaed93b53d07c803dd445d88f (diff)
downloadrockbox-0fe4417da85fc2189b45b712d3a6a7e842300f4c.tar.gz
rockbox-0fe4417da85fc2189b45b712d3a6a7e842300f4c.zip
FS#10526: mpegplayer audio out of sync, reverts r22280
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22321 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/plugins/mpegplayer/audio_thread.c15
1 files changed, 3 insertions, 12 deletions
diff --git a/apps/plugins/mpegplayer/audio_thread.c b/apps/plugins/mpegplayer/audio_thread.c
index d04257ac30..a901b721d8 100644
--- a/apps/plugins/mpegplayer/audio_thread.c
+++ b/apps/plugins/mpegplayer/audio_thread.c
@@ -643,8 +643,8 @@ static void audio_thread(void)
643 struct pcm_frame_header *dst_hdr = pcm_output_get_buffer(); 643 struct pcm_frame_header *dst_hdr = pcm_output_get_buffer();
644 const char *src[2] = 644 const char *src[2] =
645 { (char *)synth.pcm.samples[0], (char *)synth.pcm.samples[1] }; 645 { (char *)synth.pcm.samples[0], (char *)synth.pcm.samples[1] };
646 int out_count = rb->dsp_output_count(td.dsp, (synth.pcm.length * 646 int out_count = (synth.pcm.length * CLOCK_RATE
647 CLOCK_RATE + (td.samplerate - 1)) / td.samplerate); 647 + (td.samplerate - 1)) / td.samplerate;
648 ssize_t size = sizeof(*dst_hdr) + out_count*4; 648 ssize_t size = sizeof(*dst_hdr) + out_count*4;
649 649
650 /* Wait for required amount of free buffer space */ 650 /* Wait for required amount of free buffer space */
@@ -657,17 +657,8 @@ static void audio_thread(void)
657 goto message_process; 657 goto message_process;
658 } 658 }
659 659
660 int inp_count = rb->dsp_input_count(td.dsp, out_count);
661
662 if (inp_count <= 0)
663 break;
664
665 /* Input size has grown, no error, just don't write more than length */
666 if (inp_count > synth.pcm.length)
667 inp_count = synth.pcm.length;
668
669 out_count = rb->dsp_process(td.dsp, dst_hdr->data, src, 660 out_count = rb->dsp_process(td.dsp, dst_hdr->data, src,
670 inp_count); 661 synth.pcm.length);
671 662
672 if (out_count <= 0) 663 if (out_count <= 0)
673 break; 664 break;