Author: richard
Date: Mon Jan 12 04:40:12 2009
New Revision: 3770

URL: http://svn.slimdevices.com?rev=3770&root=Jive&view=rev
Log:
Bug: N/A
Description:
Added hooks to allow closed source audio extensions.


Modified:
    7.4/trunk/squeezeplay/src/squeezeplay/share/jive/audio/Playback.lua
    7.4/trunk/squeezeplay/src/squeezeplay/src/audio/streambuf.c
    7.4/trunk/squeezeplay/src/squeezeplay/src/audio/streambuf.h

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/audio/Playback.lua
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/share/jive/audio/Playback.lua?rev=3770&root=Jive&r1=3769&r2=3770&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/audio/Playback.lua 
(original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/audio/Playback.lua Mon Jan 
12 04:40:12 2009
@@ -7,6 +7,7 @@
 local string                 = require("string")
 
 local hasDecode, Decode      = pcall(require, "squeezeplay.decode")
+local hasSprivate, spprivate = pcall(require, "spprivate")
 local Stream                 = require("squeezeplay.stream")
 local SlimProto              = require("jive.net.SlimProto")
 
@@ -80,6 +81,9 @@
        end)
        obj.timer:start()
 
+       if hasSprivate then
+               spprivate.initAudio(slimproto)
+       end
 
        self.threshold = 0
        self.tracksStarted = 0
@@ -270,8 +274,6 @@
 
 
 function _streamConnect(self, serverIp, serverPort)
-
-log:warn("CONNECT TO ", serverIp)
        self.stream = Stream:connect(serverIp, serverPort)
 
        log:info("connect streambuf")

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/streambuf.c
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/src/audio/streambuf.c?rev=3770&root=Jive&r1=3769&r2=3770&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/streambuf.c (original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/streambuf.c Mon Jan 12 
04:40:12 2009
@@ -9,6 +9,7 @@
 #include "common.h"
 
 #include "audio/fifo.h"
+#include "audio/streambuf.h"
 #include "audio/decode/decode.h"
 #include "audio/decode/decode_priv.h"
 
@@ -42,7 +43,8 @@
 static u64_t streambuf_bytes_received = 0;
 
 /* streambuf filter, used to parse metadata */
-static size_t (*streambuf_filter)(u8_t *buf, size_t min, size_t max, bool_t 
*streaming);
+static streambuf_filter_t streambuf_filter;
+static streambuf_filter_t streambuf_next_filter;
 
 /* shoutcast metadata state */
 static u32_t icy_meta_interval;
@@ -249,13 +251,19 @@
 
 
 size_t streambuf_read(u8_t *buf, size_t min, size_t max, bool_t *streaming) {
-       size_t n;
+       ssize_t n;
 
        fifo_lock(&streambuf_fifo);
 
        if (streambuf_filter) {
                /* filters are called with the streambuf locked */
                n = streambuf_filter(buf, min, max, streaming);
+
+               if (n < 0) {
+                       /* filter returned an error */
+                       current_decoder_state |= DECODE_STATE_ERROR;
+                       n = 0;
+               }
        }
        else {
                n = streambuf_fast_read(buf, min, max, streaming);
@@ -267,7 +275,16 @@
 }
 
 
-size_t streambuf_icy_filter(u8_t *buf, size_t min, size_t max, bool_t 
*streaming) {
+void streambuf_set_filter(streambuf_filter_t filter) {
+       fifo_lock(&streambuf_fifo);
+
+       streambuf_next_filter = filter;
+
+       fifo_unlock(&streambuf_fifo);
+}
+
+
+ssize_t streambuf_icy_filter(u8_t *buf, size_t min, size_t max, bool_t 
*streaming) {
        size_t avail, r, n = 0;
        
        /* streambuf is locked */
@@ -424,7 +441,8 @@
 
        streambuf_clear_loop();
        streambuf_bytes_received = 0;
-       streambuf_filter = NULL;
+       streambuf_filter = streambuf_next_filter;
+       streambuf_next_filter = NULL;
 
        return 1;
 }
@@ -631,6 +649,7 @@
                len -= n;
        }
 
+       /*
        if (shutdown(stream->fd, SHUT_WR) != 0) {
                CLOSESOCKET(stream->fd);
 
@@ -638,6 +657,7 @@
                lua_pushstring(L, strerror(SOCKETERROR));
                return 2;
        }
+       */
 
        lua_pushboolean(L, TRUE);
        return 1;

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/streambuf.h
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/src/audio/streambuf.h?rev=3770&root=Jive&r1=3769&r2=3770&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/streambuf.h (original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/streambuf.h Mon Jan 12 
04:40:12 2009
@@ -4,6 +4,9 @@
 ** This file is subject to the Logitech Public Source License Version 1.0. 
Please see the LICENCE file for details.
 */
 
+
+/* streambuf filter, used to parse metadata */
+typedef ssize_t (*streambuf_filter_t)(u8_t *buf, size_t min, size_t max, 
bool_t *streaming);
 
 extern size_t streambuf_get_size(void);
 
@@ -40,6 +43,8 @@
 
 extern ssize_t streambuf_feed_fd(int fd);
 
+extern void streambuf_set_filter(streambuf_filter_t filter);
+
 extern int streambuf_readL(lua_State *L);
 
 extern int luaopen_streambuf(lua_State *L);

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

Reply via email to