]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - afs.c
struct audio_format_handler: use proper pointer type for the init function
[paraslash.git] / afs.c
diff --git a/afs.c b/afs.c
index 4a4e46e71c1556eef9716a0463cb9e808518a4ab..8e0a50aa90fd5547c80bf168236f76221f36e7bf 100644 (file)
--- a/afs.c
+++ b/afs.c
  * the current audio format, audio file selector and of the activated senders.
  */
 
+#include "server.h"
 #include <sys/time.h> /* gettimeofday */
 #include "server.cmdline.h"
 #include "db.h"
-#include "server.h"
 #include "afs.h"
 #include "send.h"
 #include "error.h"
@@ -51,11 +51,14 @@ static FILE *audio_file = NULL;
 #ifdef HAVE_OGGVORBIS
        void ogg_init(void *);
 #endif
+#ifdef HAVE_FAAD
+       void aac_afh_init(void *);
+#endif
 
 /**
  * the list of supported  audio formats
  */
-struct audio_format afl[] = {
+struct audio_format_handler afl[] = {
 #if 1
        {
                .name = "mp3",
@@ -67,6 +70,12 @@ struct audio_format afl[] = {
                .name = "ogg",
                .init = ogg_init,
        },
+#endif
+#ifdef HAVE_FAAD
+       {
+               .name = "aac",
+               .init = aac_afh_init,
+       },
 #endif
        {
                .name = NULL,
@@ -150,7 +159,7 @@ void afs_init(void)
                afl[i].init(&afl[i]);
        }
        ms2tv(conf.announce_time_arg, &announce_tv);
-       PARA_INFO_LOG("announce timeval: %lu:%lu\n", announce_tv.tv_sec, announce_tv.tv_usec);
+       PARA_INFO_LOG("announce timeval: %lums\n", tv2ms(&announce_tv));
        for (i = 0; senders[i].name; i++) {
                PARA_NOTICE_LOG("initializing %s sender\n", senders[i].name);
                senders[i].init(&senders[i]);
@@ -327,7 +336,7 @@ static struct timeval *afs_compute_timeout(void)
        return &the_timeout;
 }
 
-static void afs_eof(struct audio_format *af)
+static void afs_eof(struct audio_format_handler *af)
 {
        struct timeval now;
        int i;
@@ -379,7 +388,7 @@ static void afs_eof(struct audio_format *af)
  */
 struct timeval *afs_preselect(void)
 {
-       struct audio_format *af = NULL;
+       struct audio_format_handler *af = NULL;
        int i, format;
        struct timeval *ret;
 again:
@@ -440,7 +449,7 @@ again:
 void afs_send_chunk(void)
 {
        int i;
-       struct audio_format *af;
+       struct audio_format_handler *af;
        char *buf;
        ssize_t ret;
        struct timeval now, due;
@@ -452,6 +461,11 @@ void afs_send_chunk(void)
        afs_next_chunk_time(&due);
        if (tv_diff(&due, &now, NULL) > 0)
                return;
+       if (chk_barrier("eof", &now, &eof_barrier, &due, 1) < 0)
+               return;
+       if (chk_barrier("data send", &now, &data_send_barrier,
+                       &due, 1) < 0)
+               return;
        buf = af->read_chunk(mmd->current_chunk, &ret);
        mmd->new_afs_status_flags &= ~AFS_REPOS;
        if (!buf) {