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

Reply via email to