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