aboutsummaryrefslogtreecommitdiffstats
path: root/src/outputBuffer_audio.h
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2008-08-16 09:28:15 -0700
committerEric Wong <normalperson@yhbt.net>2008-08-16 09:39:32 -0700
commit44d9f62f34e0561d83ea32941f0ea1b529b1490d (patch)
tree5345eba046b6e3bcf8c063e7bae8b501b7a99f4a /src/outputBuffer_audio.h
parentf9f70860622613686e6ac0bf7ebd448f437d92a7 (diff)
downloadmpd-44d9f62f34e0561d83ea32941f0ea1b529b1490d.tar.gz
mpd-44d9f62f34e0561d83ea32941f0ea1b529b1490d.tar.xz
mpd-44d9f62f34e0561d83ea32941f0ea1b529b1490d.zip
core rewrite (decode,player,outputBuffer,playlist)
This is a huge refactoring of the core mpd process. The queueing/buffering mechanism is heavily reworked. The player.c code has been merged into outputBuffer (the actual ring buffering logic is handled by ringbuf.c); and decode.c actually handles decoding stuff. The end result is several hundreds of lines shorter, even though we still have a lot of DEBUG statements left in there for tracing and a lot of assertions, too.
Diffstat (limited to 'src/outputBuffer_audio.h')
-rw-r--r--src/outputBuffer_audio.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/outputBuffer_audio.h b/src/outputBuffer_audio.h
new file mode 100644
index 000000000..2af40c95f
--- /dev/null
+++ b/src/outputBuffer_audio.h
@@ -0,0 +1,35 @@
+/* This is where audio devices are managed inside the output buffer thread */
+
+static int audio_opened;
+
+/*
+ * reopen is set when we get a new song and there's a difference
+ * in audio format
+ */
+static int open_audio_devices(int reopen)
+{
+ assert(pthread_equal(pthread_self(), ob.thread));
+
+ if (!reopen && audio_opened)
+ return 0;
+ if (openAudioDevice(&ob.audio_format) >= 0) {
+ audio_opened = 1;
+ return 0;
+ }
+ audio_opened = 0;
+ stop_playback();
+ player_seterror(PLAYER_ERROR_AUDIO, NULL);
+ ERROR("problems opening audio device\n");
+ return -1;
+}
+
+static void close_audio_devices(void)
+{
+ assert(pthread_equal(pthread_self(), ob.thread));
+ DEBUG(__FILE__":%s %d\n", __func__, __LINE__);
+ dropBufferedAudio();
+ closeAudioDevice();
+ audio_opened = 0;
+ /* DEBUG(__FILE__":%s %d\n", __func__, __LINE__); */
+}
+