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