Author: awy
Date: Wed Oct 15 05:07:21 2008
New Revision: 3134
URL: http://svn.slimdevices.com?rev=3134&root=Jive&view=rev
Log:
Handle start-jiffies.
Use ms interval rather than bytes for pause-for so that same code can be reused
for start-jiffies, when the current frame-rate is not yet known.
Modified:
7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c
7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alsa.c
7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_portaudio.c
7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h
Modified: 7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c
URL:
http://svn.slimdevices.com/7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c?rev=3134&root=Jive&r1=3133&r2=3134&view=diff
==============================================================================
--- 7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c (original)
+++ 7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c Wed Oct 15
05:07:21 2008
@@ -36,7 +36,7 @@
bool_t decode_first_buffer = FALSE;
u32_t current_sample_rate = 44100;
size_t skip_ahead_bytes = 0;
-size_t add_silence_bytes = 0;
+int add_silence_ms = 0;
/* decoder fifo used to store decoded samples */
@@ -76,16 +76,22 @@
static void decode_resume_handler(void) {
- Uint32 start_jiffies;
-
- start_jiffies = mqueue_read_u32(&decode_mqueue);
+ int start_interval;
+
+ start_interval = mqueue_read_u32(&decode_mqueue) - SDL_GetTicks();
mqueue_read_complete(&decode_mqueue);
-
- DEBUG_TRACE("decode_resume_handler start_jiffies=%d", start_jiffies);
+
+ if (start_interval < 0) {
+ start_interval = 0;
+ }
+
+ DEBUG_TRACE("decode_resume_handler start_interval=%d", start_interval);
fifo_lock(&decode_fifo);
- // XXXX handle start_jiffies
+ if (start_interval) {
+ add_silence_ms = start_interval;
+ }
if (decoder) {
current_decoder_state |= DECODE_STATE_RUNNING;
@@ -111,7 +117,7 @@
DEBUG_TRACE("decode_pause_handler interval=%d", interval);
if (interval) {
- add_silence_bytes = SAMPLES_TO_BYTES((u32_t)((interval *
current_sample_rate) / 1000));
+ add_silence_ms = interval;
} else {
current_decoder_state &= ~DECODE_STATE_RUNNING;
current_audio_state &= ~DECODE_STATE_RUNNING;
Modified: 7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alsa.c
URL:
http://svn.slimdevices.com/7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alsa.c?rev=3134&root=Jive&r1=3133&r2=3134&view=diff
==============================================================================
--- 7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alsa.c
(original)
+++ 7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alsa.c Wed
Oct 15 05:07:21 2008
@@ -61,13 +61,15 @@
return;
}
- if (add_silence_bytes) {
- add_bytes = add_silence_bytes;
+ if (add_silence_ms) {
+ add_bytes = SAMPLES_TO_BYTES((u32_t)((add_silence_ms *
current_sample_rate) / 1000));
if (add_bytes > len) add_bytes = len;
memset(outputBuffer, 0, add_bytes);
outputBuffer += add_bytes;
len -= add_bytes;
- add_silence_bytes -= add_bytes;
+ add_silence_ms -= (BYTES_TO_SAMPLES(add_bytes) * 1000) /
current_sample_rate;
+ if (add_silence_ms < 2)
+ add_silence_ms = 0;
if (!len) return;
}
Modified:
7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_portaudio.c
URL:
http://svn.slimdevices.com/7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_portaudio.c?rev=3134&root=Jive&r1=3133&r2=3134&view=diff
==============================================================================
--- 7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_portaudio.c
(original)
+++ 7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_portaudio.c
Wed Oct 15 05:07:21 2008
@@ -64,13 +64,15 @@
fifo_lock(&decode_fifo);
- if (add_silence_bytes) {
- add_bytes = add_silence_bytes;
+ if (add_silence_ms) {
+ add_bytes = SAMPLES_TO_BYTES((u32_t)((add_silence_ms *
current_sample_rate) / 1000));
if (add_bytes > len) add_bytes = len;
memset(outputArray, 0, add_bytes);
outputArray += add_bytes;
len -= add_bytes;
- add_silence_bytes -= add_bytes;
+ add_silence_ms -= (BYTES_TO_SAMPLES(add_bytes) * 1000) /
current_sample_rate;
+ if (add_silence_ms < 2)
+ add_silence_ms = 0;
if (!len) {
fifo_unlock(&decode_fifo);
return paContinue;
Modified: 7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h
URL:
http://svn.slimdevices.com/7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h?rev=3134&root=Jive&r1=3133&r2=3134&view=diff
==============================================================================
--- 7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h
(original)
+++ 7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h Wed
Oct 15 05:07:21 2008
@@ -123,7 +123,7 @@
extern bool_t decode_first_buffer;
extern u32_t current_sample_rate;
extern size_t skip_ahead_bytes;
-extern size_t add_silence_bytes;
+extern int add_silence_ms;
/* The fifo used to store decoded samples */
extern u8_t decode_fifo_buf[DECODE_FIFO_SIZE];
_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/cgi-bin/mailman/listinfo/jive-checkins