aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2010-05-02 15:16:59 +0200
committerMax Kellermann <max@duempel.org>2010-05-02 17:46:06 +0200
commitd093fb2441ee99722670f0401215031fc324bb31 (patch)
tree44c2747cd2120c1d9330eb7df59280fb5779e731
parent0140804ef948b3c919e2e0c69dd175f443574fb9 (diff)
downloadmpd-d093fb2441ee99722670f0401215031fc324bb31.tar.gz
mpd-d093fb2441ee99722670f0401215031fc324bb31.tar.xz
mpd-d093fb2441ee99722670f0401215031fc324bb31.zip
chunk: added attribute "other"
Preparation for cross-fading support in the output thread.
-rw-r--r--src/buffer.c3
-rw-r--r--src/chunk.c1
-rw-r--r--src/chunk.h6
3 files changed, 10 insertions, 0 deletions
diff --git a/src/buffer.c b/src/buffer.c
index 27a0bf05c..bee871700 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -118,6 +118,9 @@ music_buffer_return(struct music_buffer *buffer, struct music_chunk *chunk)
assert(buffer != NULL);
assert(chunk != NULL);
+ if (chunk->other != NULL)
+ music_buffer_return(buffer, chunk->other);
+
g_mutex_lock(buffer->mutex);
music_chunk_free(chunk);
diff --git a/src/chunk.c b/src/chunk.c
index 5418b6cda..79597506d 100644
--- a/src/chunk.c
+++ b/src/chunk.c
@@ -27,6 +27,7 @@
void
music_chunk_init(struct music_chunk *chunk)
{
+ chunk->other = NULL;
chunk->length = 0;
chunk->tag = NULL;
chunk->replay_gain_serial = 0;
diff --git a/src/chunk.h b/src/chunk.h
index 23f6321fb..a5fdda429 100644
--- a/src/chunk.h
+++ b/src/chunk.h
@@ -44,6 +44,12 @@ struct music_chunk {
/** the next chunk in a linked list */
struct music_chunk *next;
+ /**
+ * An optional chunk which should be mixed into this chunk.
+ * This is used for cross-fading.
+ */
+ struct music_chunk *other;
+
/** number of bytes stored in this chunk */
uint16_t length;