From 265b8fffb270325f62a15a842fe4498c87a08204 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 12 Sep 2008 16:41:20 +0200 Subject: 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". --- src/audioOutputs/audioOutput_shout.c | 7 ------- src/audioOutputs/audioOutput_shout.h | 3 +-- src/audioOutputs/audioOutput_shout_mp3.c | 2 +- src/audioOutputs/audioOutput_shout_ogg.c | 4 ++-- 4 files changed, 4 insertions(+), 12 deletions(-) (limited to 'src') 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; -- cgit v1.2.3