Fill the whole output buffer at a time by using dither_buffer()'s
ability to decode blocks.  Calculate how many samples fit into the
output buffer before each invocation.
---

 src/inputPlugins/mp3_plugin.c |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/inputPlugins/mp3_plugin.c b/src/inputPlugins/mp3_plugin.c
index 2a6346b..0a99cab 100644
--- a/src/inputPlugins/mp3_plugin.c
+++ b/src/inputPlugins/mp3_plugin.c
@@ -932,12 +932,18 @@ static int mp3Read(mp3DecodeData * data, struct decoder 
*decoder,
                                pcm_length -= data->dropSamplesAtEnd;
                }
 
-               for (; i < pcm_length; i++) {
-                       unsigned int num_samples;
+               while (i < pcm_length) {
+                       unsigned int num_samples =
+                               (data->outputBufferEnd - data->outputPtr) /
+                               (2 * MAD_NCHANNELS(&(data->frame).header));
+                       if (num_samples > pcm_length - i)
+                               num_samples = pcm_length - i;
+
+                       i += num_samples;
 
                        num_samples = dither_buffer((mpd_sint16 *) 
data->outputPtr,
                                                    &data->synth, &data->dither,
-                                                   i, i + 1,
+                                                   i - num_samples, i,
                                                    
MAD_NCHANNELS(&(data->frame).header));
                        data->outputPtr += 2 * num_samples;
 


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Musicpd-dev-team mailing list
Musicpd-dev-team@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/musicpd-dev-team

Reply via email to