Combine aacdec and aac_common.
authorAndre Noll <maan@tuebingen.mpg.de>
Thu, 17 Mar 2016 20:59:52 +0000 (21:59 +0100)
committerAndre Noll <maan@tuebingen.mpg.de>
Sat, 25 Mar 2017 10:54:36 +0000 (11:54 +0100)
With the server side switched to libmp4ff, only the aac decoder needs
the public functions in aac_common. This patch moves this file into
aacdec_filter.c, makes the functions static and removes the aac.h
header file which only contained the prototypes of the previously
public functions.

Makefile.real, configure.ac and error.h need small adjustments due
to the removal of aac_common.c.

Makefile.real
aac.h [deleted file]
aac_afh.c
aac_common.c [deleted file]
aacdec_filter.c
configure.ac

index decae6e..956d60c 100644 (file)
@@ -224,7 +224,6 @@ $(object_dir)/mp3dec_filter.o $(dep_dir)/mp3dec_filter.d \
 : CPPFLAGS += $(mad_cppflags)
 
 $(object_dir)/aacdec_filter.o $(dep_dir)/aacdec_filter.d \
-$(object_dir)/aac_common.o $(dep_dir)/aac_common.d \
 $(object_dir)/aac_afh.o $(dep_dir)/aac_afh.d \
 : CPPFLAGS += $(faad_cppflags)
 
diff --git a/aac.h b/aac.h
deleted file mode 100644 (file)
index eeed252..0000000
--- a/aac.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * Copyright (C) 2006 Andre Noll <maan@tuebingen.mpg.de>
- *
- * Licensed under the GPL v2. For licencing details see COPYING.
- */
-
-/** \file aac.h Exported symbols from aac_common.c. */
-
-#include <neaacdec.h>
-
-NeAACDecHandle aac_open(void);
-int aac_find_esds(char *buf, size_t buflen, size_t *skip,
-               unsigned long *decoder_length);
-ssize_t aac_find_entry_point(char *buf, size_t buflen, size_t *skip);
index f70b811..8550a8a 100644 (file)
--- a/aac_afh.c
+++ b/aac_afh.c
@@ -11,6 +11,7 @@
 /** \file aac_afh.c para_server's aac audio format handler. */
 
 #include <regex.h>
+#include <neaacdec.h>
 
 #include "para.h"
 
@@ -22,7 +23,6 @@
 #include "portable_io.h"
 #include "afh.h"
 #include "string.h"
-#include "aac.h"
 #include "fd.h"
 
 
diff --git a/aac_common.c b/aac_common.c
deleted file mode 100644 (file)
index 812c742..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (C) 2006 Andre Noll <maan@tuebingen.mpg.de>
- *
- * Licensed under the GPL v2. For licencing details see COPYING.
- */
-/*
- * based in parts on libfaad, Copyright (C) 2003-2005 M. Bakker,
- * Ahead Software AG
- */
-
-/** \file aac_common.c Common functions of aac_afh and aadcec. */
-
-#include "para.h"
-#include "aac.h"
-#include "error.h"
-#include "portable_io.h"
-
-/**
- * Get a new libfaad decoder handle.
- *
- * \return The handle returned by NeAACDecOpen().
- */
-NeAACDecHandle aac_open(void)
-{
-       NeAACDecHandle h = NeAACDecOpen();
-       NeAACDecConfigurationPtr c = NeAACDecGetCurrentConfiguration(h);
-
-       c->defObjectType = LC;
-       c->outputFormat = FAAD_FMT_16BIT;
-       c->downMatrix = 0;
-       NeAACDecSetConfiguration(h, c);
-       return h;
-}
-
-static unsigned long aac_read_decoder_length(char *buf, int *description_len)
-{
-       uint8_t b;
-       uint8_t numBytes = 0;
-       unsigned long length = 0;
-
-       do {
-               b = buf[numBytes];
-               numBytes++;
-               length = (length << 7) | (b & 0x7F);
-       } while
-               ((b & 0x80) && numBytes < 4);
-       *description_len = numBytes;
-       return length;
-}
-
-/**
- * search for the position and the length of the decoder configuration
- *
- * \param buf buffer to seach
- * \param buflen length of \a buf
- * \param skip Upon succesful return, this contains the offset in \a buf where
- * the decoder config starts.
- * \param decoder_length result pointer that is filled in with the length of
- * the decoder configuration on success.
- *
- * \return positive on success, negative on errors
- */
-int aac_find_esds(char *buf, size_t buflen, size_t *skip,
-               unsigned long *decoder_length)
-{
-       size_t i;
-
-       for (i = 0; i + 4 < buflen; i++) {
-               char *p = buf + i;
-               int description_len;
-
-               if (p[0] != 'e' || p[1] != 's' || p[2] != 'd' || p[3] != 's')
-                       continue;
-               i += 8;
-               p = buf + i;
-               PARA_INFO_LOG("found esds@%zu, next: %x\n", i, (unsigned)*p);
-               if (*p == 3)
-                       i += 8;
-               else
-                       i += 6;
-               p = buf + i;
-               PARA_INFO_LOG("next: %x\n", (unsigned)*p);
-               if (*p != 4)
-                       continue;
-               i += 18;
-               p = buf + i;
-               PARA_INFO_LOG("next: %x\n", (unsigned)*p);
-               if (*p != 5)
-                       continue;
-               i++;
-               p = buf + i;
-               *decoder_length = aac_read_decoder_length(p, &description_len);
-               PARA_INFO_LOG("decoder length: %lu\n", *decoder_length);
-               i += description_len;
-               *skip = i;
-               return 1;
-       }
-       return -E_ESDS;
-}
-
-/**
- * search for the first entry in the stco table
- *
- * \param buf buffer to seach
- * \param buflen length of \a buf
- * \param skip Upon succesful return, this contains the number
- * of bytes to skip from the input buffer.
- *
- * \return the position of the first entry in the table on success,
- * -E_STCO on errors.
- */
-ssize_t aac_find_entry_point(char *buf, size_t buflen, size_t *skip)
-{
-       ssize_t ret;
-       size_t i;
-
-       for (i = 0; i + 20 < buflen; i++) {
-               char *p = buf + i;
-
-               if (p[0] != 's' || p[1] != 't' || p[2] != 'c' || p[3] != 'o')
-                       continue;
-               PARA_INFO_LOG("found stco@%zu\n", i);
-               i += 12;
-               ret = read_u32_be(buf + i); /* first offset */
-               i += 4;
-               PARA_INFO_LOG("entry point: %zd\n", ret);
-               *skip = i;
-               return ret;
-       }
-       PARA_WARNING_LOG("stco not found, buflen: %zu\n", buflen);
-       return -E_STCO;
-}
index 7a757e5..c9f8151 100644 (file)
 /** \file aacdec_filter.c paraslash's aac (m4a) decoder. */
 
 #include <regex.h>
+#include <neaacdec.h>
 
 #include "para.h"
+#include "portable_io.h"
 #include "list.h"
 #include "sched.h"
 #include "ggo.h"
@@ -20,7 +22,6 @@
 #include "filter.h"
 #include "error.h"
 #include "string.h"
-#include "aac.h"
 
 /** Give up decoding after that many errors. */
 #define MAX_ERRORS 20
@@ -54,6 +55,122 @@ struct private_aacdec_data {
        unsigned int sample_rate;
 };
 
+/*
+ * Get a new libfaad decoder handle.
+ *
+ * \return The handle returned by NeAACDecOpen().
+ */
+static NeAACDecHandle aac_open(void)
+{
+       NeAACDecHandle h = NeAACDecOpen();
+       NeAACDecConfigurationPtr c = NeAACDecGetCurrentConfiguration(h);
+
+       c->defObjectType = LC;
+       c->outputFormat = FAAD_FMT_16BIT;
+       c->downMatrix = 0;
+       NeAACDecSetConfiguration(h, c);
+       return h;
+}
+
+static unsigned long aac_read_decoder_length(char *buf, int *description_len)
+{
+       uint8_t b;
+       uint8_t numBytes = 0;
+       unsigned long length = 0;
+
+       do {
+               b = buf[numBytes];
+               numBytes++;
+               length = (length << 7) | (b & 0x7F);
+       } while
+               ((b & 0x80) && numBytes < 4);
+       *description_len = numBytes;
+       return length;
+}
+
+/*
+ * Search for the position and the length of the decoder configuration.
+ *
+ * \param buf Buffer to seach.
+ * \param buflen Length of \a buf.
+ * \param skip Upon succesful return, this contains the offset in \a buf where
+ * the decoder config starts.
+ * \param decoder_length Result pointer that is filled in with the length of
+ * the decoder configuration on success.
+ *
+ * \return Standard.
+ */
+static int aac_find_esds(char *buf, size_t buflen, size_t *skip,
+               unsigned long *decoder_length)
+{
+       size_t i;
+
+       for (i = 0; i + 4 < buflen; i++) {
+               char *p = buf + i;
+               int description_len;
+
+               if (p[0] != 'e' || p[1] != 's' || p[2] != 'd' || p[3] != 's')
+                       continue;
+               i += 8;
+               p = buf + i;
+               PARA_INFO_LOG("found esds@%zu, next: %x\n", i, *p);
+               if (*p == 3)
+                       i += 8;
+               else
+                       i += 6;
+               p = buf + i;
+               PARA_INFO_LOG("next: %x\n", *p);
+               if (*p != 4)
+                       continue;
+               i += 18;
+               p = buf + i;
+               PARA_INFO_LOG("next: %x\n", *p);
+               if (*p != 5)
+                       continue;
+               i++;
+               p = buf + i;
+               *decoder_length = aac_read_decoder_length(p, &description_len);
+               PARA_INFO_LOG("decoder length: %lu\n", *decoder_length);
+               i += description_len;
+               *skip = i;
+               return 1;
+       }
+       return -E_ESDS;
+}
+
+/*
+ * Search for the first entry in the stco table.
+ *
+ * \param buf Buffer to seach.
+ * \param buflen Length of \a buf.
+ * \param skip Upon succesful return, this contains the number
+ * of bytes to skip from the input buffer.
+ *
+ * \return The position of the first entry in the table on success,
+ * -E_STCO on errors.
+ */
+static ssize_t aac_find_entry_point(char *buf, size_t buflen, size_t *skip)
+{
+       ssize_t ret;
+       size_t i;
+
+       for (i = 0; i + 20 < buflen; i++) {
+               char *p = buf + i;
+
+               if (p[0] != 's' || p[1] != 't' || p[2] != 'c' || p[3] != 'o')
+                       continue;
+               PARA_INFO_LOG("found stco@%zu\n", i);
+               i += 12;
+               ret = read_u32_be(buf + i); /* first offset */
+               i += 4;
+               PARA_INFO_LOG("entry point: %zd\n", ret);
+               *skip = i;
+               return ret;
+       }
+       PARA_WARNING_LOG("stco not found, buflen: %zu\n", buflen);
+       return -E_STCO;
+}
+
 static int aacdec_execute(struct btr_node *btrn, const char *cmd, char **result)
 {
        struct filter_node *fn = btr_context(btrn);
index 0916d25..3489670 100644 (file)
@@ -435,7 +435,7 @@ if test -n "$CRYPTOLIB" && test $HAVE_OSL = yes; then
        NEED_OPUS_OBJECTS() && server_errlist_objs="$server_errlist_objs opus_afh opus_common"
        NEED_FLAC_OBJECTS && server_errlist_objs="$server_errlist_objs flac_afh"
        if test $HAVE_FAAD = yes; then
-               server_errlist_objs="$server_errlist_objs aac_afh aac_common"
+               server_errlist_objs="$server_errlist_objs aac_afh"
        fi
        server_objs="add_cmdline($server_cmdline_objs) $server_errlist_objs"
        AC_SUBST(server_objs, add_dot_o($server_objs))
@@ -559,7 +559,7 @@ if test -n "$CRYPTOLIB"; then
                audiod_audio_formats="$audiod_audio_formats flac"
        }
        if test $HAVE_FAAD = yes; then
-               audiod_errlist_objs="$audiod_errlist_objs aacdec_filter aac_common"
+               audiod_errlist_objs="$audiod_errlist_objs aacdec_filter"
                audiod_audio_formats="$audiod_audio_formats aac"
        fi
        if test $HAVE_MAD = yes; then
@@ -720,7 +720,7 @@ NEED_FLAC_OBJECTS && {
        filters="$filters flacdec"
 }
 if test $HAVE_FAAD = yes; then
-       filter_errlist_objs="$filter_errlist_objs aacdec_filter aac_common"
+       filter_errlist_objs="$filter_errlist_objs aacdec_filter"
        filters="$filters aacdec"
 fi
 if test $HAVE_MAD = yes; then
@@ -783,7 +783,7 @@ NEED_OPUS_OBJECTS && recv_errlist_objs="$recv_errlist_objs opus_afh opus_common"
 NEED_FLAC_OBJECTS && recv_errlist_objs="$recv_errlist_objs flac_afh"
 
 if test $HAVE_FAAD = yes; then
-       recv_errlist_objs="$recv_errlist_objs aac_afh aac_common"
+       recv_errlist_objs="$recv_errlist_objs aac_afh"
 fi
 recv_objs="add_cmdline($recv_cmdline_objs) $recv_errlist_objs"
 AC_SUBST(receivers, "http dccp udp afh")
@@ -821,7 +821,7 @@ NEED_FLAC_OBJECTS && {
        audio_format_handlers="$audio_format_handlers flac"
 }
 if test $HAVE_FAAD = yes; then
-       afh_errlist_objs="$afh_errlist_objs aac_afh aac_common"
+       afh_errlist_objs="$afh_errlist_objs aac_afh"
        audio_format_handlers="$audio_format_handlers aac"
 fi
 
@@ -895,7 +895,7 @@ NEED_FLAC_OBJECTS && {
        play_errlist_objs="$play_errlist_objs flacdec_filter flac_afh"
 }
 if test $HAVE_FAAD = yes; then
-       play_errlist_objs="$play_errlist_objs aac_afh aac_common aacdec_filter"
+       play_errlist_objs="$play_errlist_objs aac_afh aacdec_filter"
 fi
 if test $HAVE_MAD = yes; then
        play_cmdline_objs="$play_cmdline_objs mp3dec_filter"