summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2008-09-12 16:41:20 +0200
committerMax Kellermann <max@duempel.org>2008-09-12 16:41:20 +0200
commit265b8fffb270325f62a15a842fe4498c87a08204 (patch)
treec1ba0da95d684c354a6284b1180a8b62f2d107c8
parentebd194998aa6f140a0889a9d51fb356f76639361 (diff)
shout: make the shout_buffer static
Since the buffer size is known at compile time, we can save an indirection by declaring it as a char array instead of a pointer. That saves an extra allocation, and we can calculate with the compile-time constant sizeof(data) instead of the attribute "max_len".
-rw-r--r--src/audioOutputs/audioOutput_shout.c7
-rw-r--r--src/audioOutputs/audioOutput_shout.h3
-rw-r--r--src/audioOutputs/audioOutput_shout_mp3.c2
-rw-r--r--src/audioOutputs/audioOutput_shout_ogg.c4
4 files changed, 4 insertions, 12 deletions
diff --git a/src/audioOutputs/audioOutput_shout.c b/src/audioOutputs/audioOutput_shout.c
index f6f15ba49..f702acb00 100644
--- a/src/audioOutputs/audioOutput_shout.c
+++ b/src/audioOutputs/audioOutput_shout.c
@@ -25,8 +25,6 @@
#define CONN_ATTEMPT_INTERVAL 60
#define DEFAULT_CONN_TIMEOUT 2
-#define SHOUT_BUF_SIZE 8192
-
static int shout_init_count;
static const struct shout_encoder_plugin *const shout_encoder_plugins[] = {
@@ -68,9 +66,6 @@ static struct shout_data *new_shout_data(void)
ret->conn_attempts = 0;
ret->last_attempt = 0;
ret->timer = NULL;
- ret->buf.data = xmalloc(sizeof(unsigned char) *
- SHOUT_BUF_SIZE);
- ret->buf.max_len = SHOUT_BUF_SIZE;
clear_shout_buffer(ret);
return ret;
@@ -84,8 +79,6 @@ static void free_shout_data(struct shout_data *sd)
shout_free(sd->shout_conn);
if (sd->tag)
tag_free(sd->tag);
- if (sd->buf.data)
- free(sd->buf.data);
if (sd->timer)
timer_free(sd->timer);
diff --git a/src/audioOutputs/audioOutput_shout.h b/src/audioOutputs/audioOutput_shout.h
index b3ad00139..ddab852df 100644
--- a/src/audioOutputs/audioOutput_shout.h
+++ b/src/audioOutputs/audioOutput_shout.h
@@ -54,9 +54,8 @@ struct shout_encoder_plugin {
};
struct shout_buffer {
- unsigned char *data;
+ unsigned char data[8192];
size_t len;
- size_t max_len;
};
struct shout_data {
diff --git a/src/audioOutputs/audioOutput_shout_mp3.c b/src/audioOutputs/audioOutput_shout_mp3.c
index 8e2bb565f..7bc3b5fba 100644
--- a/src/audioOutputs/audioOutput_shout_mp3.c
+++ b/src/audioOutputs/audioOutput_shout_mp3.c
@@ -160,7 +160,7 @@ static int shout_mp3_encoder_encode(struct shout_data *sd,
bytes_out = lame_encode_buffer_float(ld->gfp, lamebuf[0], lamebuf[1],
samples, buf->data,
- buf->max_len - buf->len);
+ sizeof(buf->data) - buf->len);
free(lamebuf);
if (0 > bytes_out) {
diff --git a/src/audioOutputs/audioOutput_shout_ogg.c b/src/audioOutputs/audioOutput_shout_ogg.c
index 746341a75..9605f9737 100644
--- a/src/audioOutputs/audioOutput_shout_ogg.c
+++ b/src/audioOutputs/audioOutput_shout_ogg.c
@@ -75,7 +75,7 @@ static void copy_tag_to_vorbis_comment(struct shout_data *sd)
static int copy_ogg_buffer_to_shout_buffer(ogg_page *og,
struct shout_buffer *buf)
{
- if (buf->max_len - buf->len >= (size_t)og->header_len) {
+ if (sizeof(buf->data) - buf->len >= (size_t)og->header_len) {
memcpy(buf->data + buf->len,
og->header, og->header_len);
buf->len += og->header_len;
@@ -84,7 +84,7 @@ static int copy_ogg_buffer_to_shout_buffer(ogg_page *og,
return -1;
}
- if (buf->max_len - buf->len >= (size_t)og->body_len) {
+ if (sizeof(buf->data) - buf->len >= (size_t)og->body_len) {
memcpy(buf->data + buf->len,
og->body, og->body_len);
buf->len += og->body_len;