Author: ayoung
Date: Wed May  5 13:35:05 2010
New Revision: 8763

URL: http://svn.slimdevices.com/jive?rev=8763&view=rev
Log:
bug 15361: Can't play 24/48 or 24/96 flac without stutter and rebuffering 
Implement outputThreshold

Modified:
    7.5/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c
    7.5/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alsa_backend.c
    7.5/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_portaudio.c
    7.5/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h

Modified: 7.5/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c
URL: 
http://svn.slimdevices.com/jive/7.5/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c?rev=8763&r1=8762&r2=8763&view=diff
==============================================================================
--- 7.5/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c (original)
+++ 7.5/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c Wed May  5 
13:35:05 2010
@@ -275,7 +275,6 @@
        LOG_INFO(log_audio_decode, "init decoder %s", decoder->name);
 
        decode_first_buffer = TRUE;
-       // XXXX decode_set_output_threshold(output_threshold);
        decode_output_set_transition(transition_type, transition_period);
        decode_output_set_track_gain(replay_gain);
        decode_set_track_polarity_inversion(polarity_inversion);
@@ -283,6 +282,7 @@
        decoder_data = decoder->start(params, num_params);
 
        decode_audio_lock();
+       decode_audio->output_threshold = output_threshold;
        decode_output_begin();
        decode_audio_unlock();
 }

Modified: 
7.5/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alsa_backend.c
URL: 
http://svn.slimdevices.com/jive/7.5/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alsa_backend.c?rev=8763&r1=8762&r2=8763&view=diff
==============================================================================
--- 
7.5/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alsa_backend.c 
(original)
+++ 
7.5/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alsa_backend.c 
Wed May  5 13:35:05 2010
@@ -277,7 +277,11 @@
        decode_frames = BYTES_TO_SAMPLES(fifo_bytes_used(&decode_audio->fifo));
 
        /* Should we start the audio now based on having enough decoded data? */
-       if (decode_audio->state & DECODE_STATE_AUTOSTART && decode_frames > 
(output_frames * (3 + state->period_count))) {
+       if (decode_audio->state & DECODE_STATE_AUTOSTART
+                       && decode_frames > (output_frames * (3 + 
state->period_count))
+                       && decode_frames > (decode_audio->output_threshold * 
state->pcm_sample_rate / 10)
+               )
+       {
                decode_audio->state &= ~DECODE_STATE_AUTOSTART;
                decode_audio->state |= DECODE_STATE_RUNNING;
        }

Modified: 
7.5/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_portaudio.c
URL: 
http://svn.slimdevices.com/jive/7.5/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_portaudio.c?rev=8763&r1=8762&r2=8763&view=diff
==============================================================================
--- 7.5/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_portaudio.c 
(original)
+++ 7.5/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_portaudio.c 
Wed May  5 13:35:05 2010
@@ -57,7 +57,11 @@
        bytes_used = fifo_bytes_used(&decode_audio->fifo);
 
        /* Should we start the audio now based on having enough decoded data? */
-       if (decode_audio->state & DECODE_STATE_AUTOSTART && bytes_used >=  len) 
{
+       if (decode_audio->state & DECODE_STATE_AUTOSTART
+                       && bytes_used >=  len
+                       && bytes_used >= 
SAMPLES_TO_BYTES((u32_t)((decode_audio->output_threshold * stream_sample_rate) 
/ 10))
+               )
+       {
                decode_audio->state &= ~DECODE_STATE_AUTOSTART;
                decode_audio->state |= DECODE_STATE_RUNNING;
        }

Modified: 7.5/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h
URL: 
http://svn.slimdevices.com/jive/7.5/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h?rev=8763&r1=8762&r2=8763&view=diff
==============================================================================
--- 7.5/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h 
(original)
+++ 7.5/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h Wed 
May  5 13:35:05 2010
@@ -119,6 +119,8 @@
        s32_t capture_lgain, capture_rgain;
        u32_t set_sample_rate;
 
+       u32_t output_threshold; /* tenths of a second */
+
        u32_t sync_elapsed_samples;
        u32_t sync_elapsed_timestamp;
 

_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/jive-checkins

Reply via email to