[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xine-cvslog
Subject:    [xine-cvs] HG: xine-lib-1.2-plugin-loader: [31/35] Merge from 1.2
From:       Darren Salt <linux () youmustbejoking ! demon ! co ! uk>
Date:       2007-06-21 22:31:50
Message-ID: 3e9d711a77870cbbca8d.1182464857:31 () hg ! debian ! org
[Download RAW message or body]

# [node df73844e8a47005bef76ffe6cd9323d8e6a1c218 part 31]

diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libfaad/syntax.h
--- a/src/libfaad/syntax.h	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,124 +0,0 @@
-/*
-** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding
-** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com
-**  
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-** 
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software 
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-**
-** Any non-GPL usage of this software or parts of this software is strictly
-** forbidden.
-**
-** Commercial non-GPL licensing of this software is possible.
-** For more info contact Ahead Software through Mpeg4AAClicense@nero.com.
-**
-** $Id: syntax.h,v 1.10 2005/10/29 23:57:07 tmmm Exp $
-**/
-
-#ifndef __SYNTAX_H__
-#define __SYNTAX_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "decoder.h"
-#include "bits.h"
-
-#define MAIN       1
-#define LC         2
-#define SSR        3
-#define LTP        4
-#define HE_AAC     5
-#define LD        23
-#define ER_LC     17
-#define ER_LTP    19
-#define DRM_ER_LC 27 /* special object type for DRM */
-
-/* header types */
-#define RAW        0
-#define ADIF       1
-#define ADTS       2
-
-/* SBR signalling */
-#define NO_SBR           0
-#define SBR_UPSAMPLED    1
-#define SBR_DOWNSAMPLED  2
-#define NO_SBR_UPSAMPLED 3
-
-/* DRM channel definitions */
-#define DRMCH_MONO          1
-#define DRMCH_STEREO        2
-#define DRMCH_SBR_MONO      3
-#define DRMCH_SBR_STEREO    4
-#define DRMCH_SBR_PS_STEREO 5
-
-
-/* First object type that has ER */
-#define ER_OBJECT_START 17
-
-
-/* Bitstream */
-#define LEN_SE_ID 3
-#define LEN_TAG   4
-#define LEN_BYTE  8
-
-#define EXT_FIL            0
-#define EXT_FILL_DATA      1
-#define EXT_DATA_ELEMENT   2
-#define EXT_DYNAMIC_RANGE 11
-#define ANC_DATA           0
-
-/* Syntax elements */
-#define ID_SCE 0x0
-#define ID_CPE 0x1
-#define ID_CCE 0x2
-#define ID_LFE 0x3
-#define ID_DSE 0x4
-#define ID_PCE 0x5
-#define ID_FIL 0x6
-#define ID_END 0x7
-
-#define ONLY_LONG_SEQUENCE   0x0
-#define LONG_START_SEQUENCE  0x1
-#define EIGHT_SHORT_SEQUENCE 0x2
-#define LONG_STOP_SEQUENCE   0x3
-
-#define ZERO_HCB       0
-#define FIRST_PAIR_HCB 5
-#define ESC_HCB        11
-#define QUAD_LEN       4
-#define PAIR_LEN       2
-#define NOISE_HCB      13
-#define INTENSITY_HCB2 14
-#define INTENSITY_HCB  15
-
-#define INVALID_SBR_ELEMENT 255
-
-int8_t GASpecificConfig(bitfile *ld, mp4AudioSpecificConfig *mp4ASC,
-                        program_config *pce);
-
-uint8_t adts_frame(adts_header *adts, bitfile *ld);
-void get_adif_header(adif_header *adif, bitfile *ld);
-void raw_data_block(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo,
-                    bitfile *ld, program_config *pce, drc_info *drc);
-uint8_t reordered_spectral_data(NeAACDecHandle hDecoder, ic_stream *ics, bitfile \
                *ld,
-                                int16_t *spectral_data);
-void aac_scalable_main_element(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo,
-                               bitfile *ld, program_config *pce, drc_info *drc);
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libfaad/tns.c
--- a/src/libfaad/tns.c	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,306 +0,0 @@
-/*
-** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding
-** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com
-**  
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-** 
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software 
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-**
-** Any non-GPL usage of this software or parts of this software is strictly
-** forbidden.
-**
-** Commercial non-GPL licensing of this software is possible.
-** For more info contact Ahead Software through Mpeg4AAClicense@nero.com.
-**
-** $Id: tns.c,v 1.8 2005/10/29 23:57:07 tmmm Exp $
-**/
-
-#include "common.h"
-#include "structs.h"
-
-#include "syntax.h"
-#include "tns.h"
-
-
-/* static function declarations */
-static void tns_decode_coef(uint8_t order, uint8_t coef_res_bits, uint8_t \
                coef_compress,
-                            uint8_t *coef, real_t *a);
-static void tns_ar_filter(real_t *spectrum, uint16_t size, int8_t inc, real_t *lpc,
-                          uint8_t order);
-static void tns_ma_filter(real_t *spectrum, uint16_t size, int8_t inc, real_t *lpc,
-                          uint8_t order);
-
-
-#ifdef _MSC_VER
-#pragma warning(disable:4305)
-#pragma warning(disable:4244)
-#endif
-static real_t tns_coef_0_3[] =
-{
-    COEF_CONST(0.0), COEF_CONST(0.4338837391), COEF_CONST(0.7818314825), \
                COEF_CONST(0.9749279122),
-    COEF_CONST(-0.9848077530), COEF_CONST(-0.8660254038), COEF_CONST(-0.6427876097), \
                COEF_CONST(-0.3420201433),
-    COEF_CONST(-0.4338837391), COEF_CONST(-0.7818314825), COEF_CONST(-0.9749279122), \
                COEF_CONST(-0.9749279122),
-    COEF_CONST(-0.9848077530), COEF_CONST(-0.8660254038), COEF_CONST(-0.6427876097), \
                COEF_CONST(-0.3420201433)
-};
-static real_t tns_coef_0_4[] =
-{
-    COEF_CONST(0.0), COEF_CONST(0.2079116908), COEF_CONST(0.4067366431), \
                COEF_CONST(0.5877852523),
-    COEF_CONST(0.7431448255), COEF_CONST(0.8660254038), COEF_CONST(0.9510565163), \
                COEF_CONST(0.9945218954),
-    COEF_CONST(-0.9957341763), COEF_CONST(-0.9618256432), COEF_CONST(-0.8951632914), \
                COEF_CONST(-0.7980172273),
-    COEF_CONST(-0.6736956436), COEF_CONST(-0.5264321629), COEF_CONST(-0.3612416662), \
                COEF_CONST(-0.1837495178)
-};
-static real_t tns_coef_1_3[] =
-{
-    COEF_CONST(0.0), COEF_CONST(0.4338837391), COEF_CONST(-0.6427876097), \
                COEF_CONST(-0.3420201433),
-    COEF_CONST(0.9749279122), COEF_CONST(0.7818314825), COEF_CONST(-0.6427876097), \
                COEF_CONST(-0.3420201433),
-    COEF_CONST(-0.4338837391), COEF_CONST(-0.7818314825), COEF_CONST(-0.6427876097), \
                COEF_CONST(-0.3420201433),
-    COEF_CONST(-0.7818314825), COEF_CONST(-0.4338837391), COEF_CONST(-0.6427876097), \
                COEF_CONST(-0.3420201433)
-};
-static real_t tns_coef_1_4[] =
-{
-    COEF_CONST(0.0), COEF_CONST(0.2079116908), COEF_CONST(0.4067366431), \
                COEF_CONST(0.5877852523),
-    COEF_CONST(-0.6736956436), COEF_CONST(-0.5264321629), COEF_CONST(-0.3612416662), \
                COEF_CONST(-0.1837495178),
-    COEF_CONST(0.9945218954), COEF_CONST(0.9510565163), COEF_CONST(0.8660254038), \
                COEF_CONST(0.7431448255),
-    COEF_CONST(-0.6736956436), COEF_CONST(-0.5264321629), COEF_CONST(-0.3612416662), \
                COEF_CONST(-0.1837495178)
-};
-
-
-/* TNS decoding for one channel and frame */
-void tns_decode_frame(ic_stream *ics, tns_info *tns, uint8_t sr_index,
-                      uint8_t object_type, real_t *spec, uint16_t frame_len)
-{
-    uint8_t w, f, tns_order;
-    int8_t inc;
-    int16_t size;
-    uint16_t bottom, top, start, end;
-    uint16_t nshort = frame_len/8;
-    real_t lpc[TNS_MAX_ORDER+1];
-
-    if (!ics->tns_data_present)
-        return;
-
-    for (w = 0; w < ics->num_windows; w++)
-    {
-        bottom = ics->num_swb;
-
-        for (f = 0; f < tns->n_filt[w]; f++)
-        {
-            top = bottom;
-            bottom = max(top - tns->length[w][f], 0);
-            tns_order = min(tns->order[w][f], TNS_MAX_ORDER);
-            if (!tns_order)
-                continue;
-
-            tns_decode_coef(tns_order, tns->coef_res[w]+3,
-                tns->coef_compress[w][f], tns->coef[w][f], lpc);
-
-            start = min(bottom, max_tns_sfb(sr_index, object_type, \
                (ics->window_sequence == EIGHT_SHORT_SEQUENCE)));
-            start = min(start, ics->max_sfb);
-            start = ics->swb_offset[start];
-
-            end = min(top, max_tns_sfb(sr_index, object_type, (ics->window_sequence \
                == EIGHT_SHORT_SEQUENCE)));
-            end = min(end, ics->max_sfb);
-            end = ics->swb_offset[end];
-
-            size = end - start;
-            if (size <= 0)
-                continue;
-
-            if (tns->direction[w][f])
-            {
-                inc = -1;
-                start = end - 1;
-            } else {
-                inc = 1;
[... 54 lines omitted ...]
-            }
-
-            tns_ma_filter(&spec[(w*nshort)+start], size, inc, lpc, tns_order);
-        }
-    }
-}
-
-/* Decoder transmitted coefficients for one TNS filter */
-static void tns_decode_coef(uint8_t order, uint8_t coef_res_bits, uint8_t \
                coef_compress,
-                            uint8_t *coef, real_t *a)
-{
-    uint8_t i, m;
-    real_t tmp2[TNS_MAX_ORDER+1], b[TNS_MAX_ORDER+1];
-
-    /* Conversion to signed integer */
-    for (i = 0; i < order; i++)
-    {
-        if (coef_compress == 0)
-        {
-            if (coef_res_bits == 3)
-            {
-                tmp2[i] = tns_coef_0_3[coef[i]];
-            } else {
-                tmp2[i] = tns_coef_0_4[coef[i]];
-            }
-        } else {
-            if (coef_res_bits == 3)
-            {
-                tmp2[i] = tns_coef_1_3[coef[i]];
-            } else {
-                tmp2[i] = tns_coef_1_4[coef[i]];
-            }
-        }
-    }
-
-    /* Conversion to LPC coefficients */
-    a[0] = COEF_CONST(1.0);
-    for (m = 1; m <= order; m++)
-    {
-        for (i = 1; i < m; i++) /* loop only while i<m */
-            b[i] = a[i] + MUL_C(tmp2[m-1], a[m-i]);
-
-        for (i = 1; i < m; i++) /* loop only while i<m */
-            a[i] = b[i];
-
-        a[m] = tmp2[m-1]; /* changed */
-    }
-}
-
-static void tns_ar_filter(real_t *spectrum, uint16_t size, int8_t inc, real_t *lpc,
-                          uint8_t order)
-{
-    /*
-     - Simple all-pole filter of order "order" defined by
-       y(n) = x(n) - lpc[1]*y(n-1) - ... - lpc[order]*y(n-order)
-     - The state variables of the filter are initialized to zero every time
-     - The output data is written over the input data ("in-place operation")
-     - An input vector of "size" samples is processed and the index increment
-       to the next data sample is given by "inc"
-    */
-
-    uint8_t j;
-    uint16_t i;
-    real_t y;
-    /* state is stored as a double ringbuffer */
-    real_t state[2*TNS_MAX_ORDER] = {0};
-    int8_t state_index = 0;
-
-    for (i = 0; i < size; i++)
-    {
-        y = *spectrum;
-
-        for (j = 0; j < order; j++)
-            y -= MUL_C(state[state_index+j], lpc[j+1]);
-
-        /* double ringbuffer state */
-        state_index--;
-        if (state_index < 0)
-            state_index = order-1;
-        state[state_index] = state[state_index + order] = y;
-
-        *spectrum = y;
-        spectrum += inc;
-
-//#define TNS_PRINT
-#ifdef TNS_PRINT
-        //printf("%d\n", y);
-        printf("0x%.8X\n", y);
-#endif
-    }
-}
-
-static void tns_ma_filter(real_t *spectrum, uint16_t size, int8_t inc, real_t *lpc,
-                          uint8_t order)
-{
-    /*
-     - Simple all-zero filter of order "order" defined by
-       y(n) =  x(n) + a(2)*x(n-1) + ... + a(order+1)*x(n-order)
-     - The state variables of the filter are initialized to zero every time
-     - The output data is written over the input data ("in-place operation")
-     - An input vector of "size" samples is processed and the index increment
-       to the next data sample is given by "inc"
-    */
-
-    uint8_t j;
-    uint16_t i;
-    real_t y;
-    /* state is stored as a double ringbuffer */
-    real_t state[2*TNS_MAX_ORDER] = {0};
-    int8_t state_index = 0;
-
-    for (i = 0; i < size; i++)
-    {
-        y = *spectrum;
-
-        for (j = 0; j < order; j++)
-            y += MUL_C(state[j], lpc[j+1]);
-
-        /* double ringbuffer state */
-        state_index--;
-        if (state_index < 0)
-            state_index = order-1;
-        state[state_index] = state[state_index + order] = *spectrum;
-
-        *spectrum = y;
-        spectrum += inc;
-    }
-}
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libfaad/tns.h
--- a/src/libfaad/tns.h	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
-** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding
-** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com
-**  
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-** 
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software 
-** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-**
-** Any non-GPL usage of this software or parts of this software is strictly
-** forbidden.
-**
-** Commercial non-GPL licensing of this software is possible.
-** For more info contact Ahead Software through Mpeg4AAClicense@nero.com.
-**
-** $Id: tns.h,v 1.8 2005/10/29 23:57:07 tmmm Exp $
-**/
-
-#ifndef __TNS_H__
-#define __TNS_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-#define TNS_MAX_ORDER 20
-
-    
-void tns_decode_frame(ic_stream *ics, tns_info *tns, uint8_t sr_index,
-                      uint8_t object_type, real_t *spec, uint16_t frame_len);
-void tns_encode_frame(ic_stream *ics, tns_info *tns, uint8_t sr_index,
-                      uint8_t object_type, real_t *spec, uint16_t frame_len);
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 \
                src/libfaad/xine_faad_decoder.c
--- a/src/libfaad/xine_faad_decoder.c	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,485 +0,0 @@
-/* 
- * Copyright (C) 2000-2005 the xine project
- * 
- * This file is part of xine, a free video player.
- * 
- * xine is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- * 
- * xine is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA
- *
- * $Id: xine_decoder.c,v 1.49 2007/02/20 00:34:57 dgp85 Exp $
- *
- */
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-
-#define LOG_MODULE "libfaad"
-#define LOG_VERBOSE
-/*
-#define LOG
-*/
-
-#include "xine_internal.h"
-#include "audio_out.h"
-#include "buffer.h"
-#include "xineutils.h"
-#include "common.h"
-#include "structs.h"
-#include "decoder.h"
-#include "syntax.h"
-
-#define FAAD_MIN_STREAMSIZE 768 /* 6144 bits/channel */
-
-typedef struct {
-  audio_decoder_class_t   decoder_class;
-} faad_class_t;
-
-typedef struct faad_decoder_s {
-  audio_decoder_t  audio_decoder;
-
-  xine_stream_t    *stream;
-  
-  /* faad2 stuff */
-  NeAACDecHandle           faac_dec;
-  NeAACDecConfigurationPtr faac_cfg;
-  NeAACDecFrameInfo        faac_finfo;
-  int                     faac_failed;
- 
-  int              raw_mode;
-  
-  unsigned char   *buf;
-  int              size;
-  int              rec_audio_src_size;
-  int              max_audio_src_size;
-  int              pts;
-  
-  unsigned char   *dec_config;
-  int              dec_config_size;
-  
-  uint32_t         rate;
-  int              bits_per_sample; 
-  unsigned char    num_channels; 
-  int              sbr;
-  uint32_t         ao_cap_mode; 
-   
-  int              output_open;
-
-  unsigned long    total_time;
-  unsigned long    total_data;
-} faad_decoder_t;
-
-
-static void faad_reset (audio_decoder_t *this_gen) {
-
-  faad_decoder_t *this = (faad_decoder_t *) this_gen;
-  this->size = 0;
-}
-
-static void faad_meta_info_set ( faad_decoder_t *this ) {
-  switch (this->num_channels) {
-    case 1:
-      if (this->faac_finfo.sbr == SBR_UPSAMPLED)
-        _x_meta_info_set_utf8(this->stream, XINE_META_INFO_AUDIOCODEC,
-                              "HE-AAC 1.0 (libfaad)");
-      else
-        _x_meta_info_set_utf8(this->stream, XINE_META_INFO_AUDIOCODEC,
-                              "AAC 1.0 (libfaad)");
-      break;
-    case 2:
-      /* check if this is downmixed 5.1 */
-      if (!this->faac_cfg || !this->faac_cfg->downMatrix) {
-        if (this->faac_finfo.sbr == SBR_UPSAMPLED)
-          _x_meta_info_set_utf8(this->stream, XINE_META_INFO_AUDIOCODEC,
-                                "HE-AAC 2.0 (libfaad)");
-        else
-          _x_meta_info_set_utf8(this->stream, XINE_META_INFO_AUDIOCODEC,
-                                "AAC 2.0 (libfaad)");
-        break;
-      }
-    case 6:
-      if (this->faac_finfo.sbr == SBR_UPSAMPLED)
-        _x_meta_info_set_utf8(this->stream, XINE_META_INFO_AUDIOCODEC,
-                              "HE-AAC 5.1 (libfaad)");
-      else
-        _x_meta_info_set_utf8(this->stream, XINE_META_INFO_AUDIOCODEC,
-                              "AAC 5.1 (libfaad)");
-      break;
-  }
-}
-
[... 233 lines omitted ...]
-    lprintf ("decoding %d data bytes...\n", buf->size);
-
-    if( (int)buf->size <= 0 || this->faac_failed )
-      return;
-
-    if( !this->size )
-      this->pts = buf->pts;
-  
-    if( this->size + buf->size > this->max_audio_src_size ) {
-      this->max_audio_src_size = this->size + 2 * buf->size;
-      this->buf = realloc( this->buf, this->max_audio_src_size );
-    }
-  
-    memcpy (&this->buf[this->size], buf->content, buf->size);
-    this->size += buf->size;
-    
-    if( !this->faac_dec && faad_open_dec(this) )
-      return;
-
-    /* open audio device as needed */
-    if (!this->output_open) {
-      faad_open_output( this );
-    }
-
-    faad_decode_audio(this, buf->decoder_flags & BUF_FLAG_FRAME_END );
-  }
-}
-
-static void faad_discontinuity (audio_decoder_t *this_gen) {
-}
-
-static void faad_dispose (audio_decoder_t *this_gen) {
-
-  faad_decoder_t *this = (faad_decoder_t *) this_gen; 
-
-  if (this->output_open) 
-    this->stream->audio_out->close (this->stream->audio_out, this->stream);
-  this->output_open = 0;
-    
-  if( this->buf )
-    free(this->buf);
-  this->buf = NULL;
-  this->size = 0;
-  this->max_audio_src_size = 0;
-  
-  if( this->dec_config )
-    free(this->dec_config);
-  this->dec_config = NULL;
-  this->dec_config_size = 0;
-  
-  if( this->faac_dec )
-    NeAACDecClose(this->faac_dec);
-  this->faac_dec = NULL;
-  this->faac_failed = 0;
-
-  free (this);
-}
-
-
-static audio_decoder_t *open_plugin (audio_decoder_class_t *class_gen, xine_stream_t \
                *stream) {
-
-  faad_decoder_t *this ;
-
-  this = (faad_decoder_t *) xine_xmalloc (sizeof (faad_decoder_t));
-
-  this->audio_decoder.decode_data         = faad_decode_data;
-  this->audio_decoder.reset               = faad_reset;
-  this->audio_decoder.discontinuity       = faad_discontinuity;
-  this->audio_decoder.dispose             = faad_dispose;
-
-  this->stream             = stream;
-  this->output_open        = 0;
-  this->raw_mode           = 1;
-  this->faac_dec           = NULL; 
-  this->faac_failed        = 0;
-  this->buf                = NULL;
-  this->size               = 0;
-  this->max_audio_src_size = 0;
-  this->dec_config         = NULL;
-  this->dec_config_size    = 0;
-  this->total_time         = 0;
-  this->total_data         = 0;
-
-  this->rate               = 0;
-
-  return &this->audio_decoder;
-}
-
-static char *get_identifier (audio_decoder_class_t *this) {
-  return "FAAD";
-}
-
-static char *get_description (audio_decoder_class_t *this) {
-  return "Freeware Advanced Audio Decoder";
-}
-
-static void dispose_class (audio_decoder_class_t *this) {
-  free (this);
-}
-
-static void *init_plugin (xine_t *xine, void *data) {
-
-  faad_class_t *this ;
-
-  this = (faad_class_t *) xine_xmalloc (sizeof (faad_class_t));
-
-  this->decoder_class.open_plugin     = open_plugin;
-  this->decoder_class.get_identifier  = get_identifier;
-  this->decoder_class.get_description = get_description;
-  this->decoder_class.dispose         = dispose_class;
-
-  return this;
-}
-
-static uint32_t audio_types[] = { 
-  BUF_AUDIO_AAC, 0
- };
-
-static const decoder_info_t dec_info_audio = {
-  audio_types,         /* supported types */
-  1                    /* priority        */
-};
-
-const plugin_info_t xine_plugin_info[] EXPORTED = {
-  /* type, API, "name", version, special_info, init_function */
-  { PLUGIN_AUDIO_DECODER, 15, "faad", XINE_VERSION_CODE, &dec_info_audio, \
                init_plugin },
-  { PLUGIN_NONE, 0, "", 0, NULL, NULL }
-};
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/D.dat
--- a/src/libmad/D.dat	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,607 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2004 Underbit Technologies, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: D.dat,v 1.3 2004/04/22 00:22:33 miguelfreitas Exp $
- */
-
-/*
- * These are the coefficients for the subband synthesis window. This is a
- * reordered version of Table B.3 from ISO/IEC 11172-3.
- *
- * Every value is parameterized so that shift optimizations can be made at
- * compile-time. For example, every value can be right-shifted 12 bits to
- * minimize multiply instruction times without any loss of accuracy.
- */
-
-  {  PRESHIFT(0x00000000) /*  0.000000000 */,	/*  0 */
-    -PRESHIFT(0x0001d000) /* -0.000442505 */,
-     PRESHIFT(0x000d5000) /*  0.003250122 */,
-    -PRESHIFT(0x001cb000) /* -0.007003784 */,
-     PRESHIFT(0x007f5000) /*  0.031082153 */,
-    -PRESHIFT(0x01421000) /* -0.078628540 */,
-     PRESHIFT(0x019ae000) /*  0.100311279 */,
-    -PRESHIFT(0x09271000) /* -0.572036743 */,
-     PRESHIFT(0x1251e000) /*  1.144989014 */,
-     PRESHIFT(0x09271000) /*  0.572036743 */,
-     PRESHIFT(0x019ae000) /*  0.100311279 */,
-     PRESHIFT(0x01421000) /*  0.078628540 */,
-     PRESHIFT(0x007f5000) /*  0.031082153 */,
-     PRESHIFT(0x001cb000) /*  0.007003784 */,
-     PRESHIFT(0x000d5000) /*  0.003250122 */,
-     PRESHIFT(0x0001d000) /*  0.000442505 */,
-
-     PRESHIFT(0x00000000) /*  0.000000000 */,
-    -PRESHIFT(0x0001d000) /* -0.000442505 */,
-     PRESHIFT(0x000d5000) /*  0.003250122 */,
-    -PRESHIFT(0x001cb000) /* -0.007003784 */,
-     PRESHIFT(0x007f5000) /*  0.031082153 */,
-    -PRESHIFT(0x01421000) /* -0.078628540 */,
-     PRESHIFT(0x019ae000) /*  0.100311279 */,
-    -PRESHIFT(0x09271000) /* -0.572036743 */,
-     PRESHIFT(0x1251e000) /*  1.144989014 */,
-     PRESHIFT(0x09271000) /*  0.572036743 */,
-     PRESHIFT(0x019ae000) /*  0.100311279 */,
-     PRESHIFT(0x01421000) /*  0.078628540 */,
-     PRESHIFT(0x007f5000) /*  0.031082153 */,
-     PRESHIFT(0x001cb000) /*  0.007003784 */,
-     PRESHIFT(0x000d5000) /*  0.003250122 */,
-     PRESHIFT(0x0001d000) /*  0.000442505 */ },
-
-  { -PRESHIFT(0x00001000) /* -0.000015259 */,	/*  1 */
-    -PRESHIFT(0x0001f000) /* -0.000473022 */,
-     PRESHIFT(0x000da000) /*  0.003326416 */,
-    -PRESHIFT(0x00207000) /* -0.007919312 */,
-     PRESHIFT(0x007d0000) /*  0.030517578 */,
-    -PRESHIFT(0x0158d000) /* -0.084182739 */,
-     PRESHIFT(0x01747000) /*  0.090927124 */,
-    -PRESHIFT(0x099a8000) /* -0.600219727 */,
-     PRESHIFT(0x124f0000) /*  1.144287109 */,
-     PRESHIFT(0x08b38000) /*  0.543823242 */,
-     PRESHIFT(0x01bde000) /*  0.108856201 */,
-     PRESHIFT(0x012b4000) /*  0.073059082 */,
-     PRESHIFT(0x0080f000) /*  0.031478882 */,
-     PRESHIFT(0x00191000) /*  0.006118774 */,
-     PRESHIFT(0x000d0000) /*  0.003173828 */,
-     PRESHIFT(0x0001a000) /*  0.000396729 */,
-
-    -PRESHIFT(0x00001000) /* -0.000015259 */,
-    -PRESHIFT(0x0001f000) /* -0.000473022 */,
-     PRESHIFT(0x000da000) /*  0.003326416 */,
-    -PRESHIFT(0x00207000) /* -0.007919312 */,
-     PRESHIFT(0x007d0000) /*  0.030517578 */,
-    -PRESHIFT(0x0158d000) /* -0.084182739 */,
-     PRESHIFT(0x01747000) /*  0.090927124 */,
-    -PRESHIFT(0x099a8000) /* -0.600219727 */,
-     PRESHIFT(0x124f0000) /*  1.144287109 */,
-     PRESHIFT(0x08b38000) /*  0.543823242 */,
-     PRESHIFT(0x01bde000) /*  0.108856201 */,
-     PRESHIFT(0x012b4000) /*  0.073059082 */,
-     PRESHIFT(0x0080f000) /*  0.031478882 */,
-     PRESHIFT(0x00191000) /*  0.006118774 */,
-     PRESHIFT(0x000d0000) /*  0.003173828 */,
-     PRESHIFT(0x0001a000) /*  0.000396729 */ },
-
-  { -PRESHIFT(0x00001000) /* -0.000015259 */,	/*  2 */
-    -PRESHIFT(0x00023000) /* -0.000534058 */,
-     PRESHIFT(0x000de000) /*  0.003387451 */,
-    -PRESHIFT(0x00245000) /* -0.008865356 */,
-     PRESHIFT(0x007a0000) /*  0.029785156 */,
-    -PRESHIFT(0x016f7000) /* -0.089706421 */,
-     PRESHIFT(0x014a8000) /*  0.080688477 */,
-    -PRESHIFT(0x0a0d8000) /* -0.628295898 */,
-     PRESHIFT(0x12468000) /*  1.142211914 */,
-     PRESHIFT(0x083ff000) /*  0.515609741 */,
-     PRESHIFT(0x01dd8000) /*  0.116577148 */,
-     PRESHIFT(0x01149000) /*  0.067520142 */,
-     PRESHIFT(0x00820000) /*  0.031738281 */,
-     PRESHIFT(0x0015b000) /*  0.005294800 */,
-     PRESHIFT(0x000ca000) /*  0.003082275 */,
-     PRESHIFT(0x00018000) /*  0.000366211 */,
-
-    -PRESHIFT(0x00001000) /* -0.000015259 */,
-    -PRESHIFT(0x00023000) /* -0.000534058 */,
-     PRESHIFT(0x000de000) /*  0.003387451 */,
-    -PRESHIFT(0x00245000) /* -0.008865356 */,
-     PRESHIFT(0x007a0000) /*  0.029785156 */,
-    -PRESHIFT(0x016f7000) /* -0.089706421 */,
-     PRESHIFT(0x014a8000) /*  0.080688477 */,
-    -PRESHIFT(0x0a0d8000) /* -0.628295898 */,
-     PRESHIFT(0x12468000) /*  1.142211914 */,
[... 355 lines omitted ...]
-    -PRESHIFT(0x0e9be000) /* -0.913055420 */,
-     PRESHIFT(0x1082d000) /*  1.031936646 */,
-     PRESHIFT(0x038d4000) /*  0.221984863 */,
-     PRESHIFT(0x026e7000) /*  0.151962280 */,
-     PRESHIFT(0x0032e000) /*  0.012420654 */,
-     PRESHIFT(0x006df000) /*  0.026840210 */,
-    -PRESHIFT(0x00053000) /* -0.001266479 */,
-     PRESHIFT(0x0007d000) /*  0.001907349 */,
-     PRESHIFT(0x00007000) /*  0.000106812 */,
-
-    -PRESHIFT(0x00004000) /* -0.000061035 */,
-    -PRESHIFT(0x00055000) /* -0.001296997 */,
-     PRESHIFT(0x000bd000) /*  0.002883911 */,
-    -PRESHIFT(0x0054c000) /* -0.020690918 */,
-     PRESHIFT(0x0025d000) /*  0.009231567 */,
-    -PRESHIFT(0x02403000) /* -0.140670776 */,
-    -PRESHIFT(0x016ba000) /* -0.088775635 */,
-    -PRESHIFT(0x0e9be000) /* -0.913055420 */,
-     PRESHIFT(0x1082d000) /*  1.031936646 */,
-     PRESHIFT(0x038d4000) /*  0.221984863 */,
-     PRESHIFT(0x026e7000) /*  0.151962280 */,
-     PRESHIFT(0x0032e000) /*  0.012420654 */,
-     PRESHIFT(0x006df000) /*  0.026840210 */,
-    -PRESHIFT(0x00053000) /* -0.001266479 */,
-     PRESHIFT(0x0007d000) /*  0.001907349 */,
-     PRESHIFT(0x00007000) /*  0.000106812 */ },
-
-  { -PRESHIFT(0x00004000) /* -0.000061035 */,	/* 14 */
-    -PRESHIFT(0x0005b000) /* -0.001388550 */,
-     PRESHIFT(0x000b1000) /*  0.002700806 */,
-    -PRESHIFT(0x00594000) /* -0.021789551 */,
-     PRESHIFT(0x00192000) /*  0.006134033 */,
-    -PRESHIFT(0x024c8000) /* -0.143676758 */,
-    -PRESHIFT(0x01bf2000) /* -0.109161377 */,
-    -PRESHIFT(0x0ef69000) /* -0.935195923 */,
-     PRESHIFT(0x103be000) /*  1.014617920 */,
-     PRESHIFT(0x032b4000) /*  0.198059082 */,
-     PRESHIFT(0x026bc000) /*  0.151306152 */,
-     PRESHIFT(0x00221000) /*  0.008316040 */,
-     PRESHIFT(0x006a2000) /*  0.025909424 */,
-    -PRESHIFT(0x0006a000) /* -0.001617432 */,
-     PRESHIFT(0x00075000) /*  0.001785278 */,
-     PRESHIFT(0x00007000) /*  0.000106812 */,
-
-    -PRESHIFT(0x00004000) /* -0.000061035 */,
-    -PRESHIFT(0x0005b000) /* -0.001388550 */,
-     PRESHIFT(0x000b1000) /*  0.002700806 */,
-    -PRESHIFT(0x00594000) /* -0.021789551 */,
-     PRESHIFT(0x00192000) /*  0.006134033 */,
-    -PRESHIFT(0x024c8000) /* -0.143676758 */,
-    -PRESHIFT(0x01bf2000) /* -0.109161377 */,
-    -PRESHIFT(0x0ef69000) /* -0.935195923 */,
-     PRESHIFT(0x103be000) /*  1.014617920 */,
-     PRESHIFT(0x032b4000) /*  0.198059082 */,
-     PRESHIFT(0x026bc000) /*  0.151306152 */,
-     PRESHIFT(0x00221000) /*  0.008316040 */,
-     PRESHIFT(0x006a2000) /*  0.025909424 */,
-    -PRESHIFT(0x0006a000) /* -0.001617432 */,
-     PRESHIFT(0x00075000) /*  0.001785278 */,
-     PRESHIFT(0x00007000) /*  0.000106812 */ },
-
-  { -PRESHIFT(0x00005000) /* -0.000076294 */,	/* 15 */
-    -PRESHIFT(0x00061000) /* -0.001480103 */,
-     PRESHIFT(0x000a3000) /*  0.002487183 */,
-    -PRESHIFT(0x005da000) /* -0.022857666 */,
-     PRESHIFT(0x000b9000) /*  0.002822876 */,
-    -PRESHIFT(0x02571000) /* -0.146255493 */,
-    -PRESHIFT(0x0215c000) /* -0.130310059 */,
-    -PRESHIFT(0x0f4dc000) /* -0.956481934 */,
-     PRESHIFT(0x0ff0a000) /*  0.996246338 */,
-     PRESHIFT(0x02cbf000) /*  0.174789429 */,
-     PRESHIFT(0x0266e000) /*  0.150115967 */,
-     PRESHIFT(0x00120000) /*  0.004394531 */,
-     PRESHIFT(0x00662000) /*  0.024932861 */,
-    -PRESHIFT(0x0007f000) /* -0.001937866 */,
-     PRESHIFT(0x0006f000) /*  0.001693726 */,
-     PRESHIFT(0x00006000) /*  0.000091553 */,
-
-    -PRESHIFT(0x00005000) /* -0.000076294 */,
-    -PRESHIFT(0x00061000) /* -0.001480103 */,
-     PRESHIFT(0x000a3000) /*  0.002487183 */,
-    -PRESHIFT(0x005da000) /* -0.022857666 */,
-     PRESHIFT(0x000b9000) /*  0.002822876 */,
-    -PRESHIFT(0x02571000) /* -0.146255493 */,
-    -PRESHIFT(0x0215c000) /* -0.130310059 */,
-    -PRESHIFT(0x0f4dc000) /* -0.956481934 */,
-     PRESHIFT(0x0ff0a000) /*  0.996246338 */,
-     PRESHIFT(0x02cbf000) /*  0.174789429 */,
-     PRESHIFT(0x0266e000) /*  0.150115967 */,
-     PRESHIFT(0x00120000) /*  0.004394531 */,
-     PRESHIFT(0x00662000) /*  0.024932861 */,
-    -PRESHIFT(0x0007f000) /* -0.001937866 */,
-     PRESHIFT(0x0006f000) /*  0.001693726 */,
-     PRESHIFT(0x00006000) /*  0.000091553 */ },
-
-  { -PRESHIFT(0x00005000) /* -0.000076294 */,	/* 16 */
-    -PRESHIFT(0x00068000) /* -0.001586914 */,
-     PRESHIFT(0x00092000) /*  0.002227783 */,
-    -PRESHIFT(0x0061f000) /* -0.023910522 */,
-    -PRESHIFT(0x0002d000) /* -0.000686646 */,
-    -PRESHIFT(0x025ff000) /* -0.148422241 */,
-    -PRESHIFT(0x026f7000) /* -0.152206421 */,
-    -PRESHIFT(0x0fa13000) /* -0.976852417 */,
-     PRESHIFT(0x0fa13000) /*  0.976852417 */,
-     PRESHIFT(0x026f7000) /*  0.152206421 */,
-     PRESHIFT(0x025ff000) /*  0.148422241 */,
-     PRESHIFT(0x0002d000) /*  0.000686646 */,
-     PRESHIFT(0x0061f000) /*  0.023910522 */,
-    -PRESHIFT(0x00092000) /* -0.002227783 */,
-     PRESHIFT(0x00068000) /*  0.001586914 */,
-     PRESHIFT(0x00005000) /*  0.000076294 */,
-
-    -PRESHIFT(0x00005000) /* -0.000076294 */,
-    -PRESHIFT(0x00068000) /* -0.001586914 */,
-     PRESHIFT(0x00092000) /*  0.002227783 */,
-    -PRESHIFT(0x0061f000) /* -0.023910522 */,
-    -PRESHIFT(0x0002d000) /* -0.000686646 */,
-    -PRESHIFT(0x025ff000) /* -0.148422241 */,
-    -PRESHIFT(0x026f7000) /* -0.152206421 */,
-    -PRESHIFT(0x0fa13000) /* -0.976852417 */,
-     PRESHIFT(0x0fa13000) /*  0.976852417 */,
-     PRESHIFT(0x026f7000) /*  0.152206421 */,
-     PRESHIFT(0x025ff000) /*  0.148422241 */,
-     PRESHIFT(0x0002d000) /*  0.000686646 */,
-     PRESHIFT(0x0061f000) /*  0.023910522 */,
-    -PRESHIFT(0x00092000) /* -0.002227783 */,
-     PRESHIFT(0x00068000) /*  0.001586914 */,
-     PRESHIFT(0x00005000) /*  0.000076294 */ }
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/Makefile.am
--- a/src/libmad/Makefile.am	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-include $(top_srcdir)/misc/Makefile.common
-
-AM_CFLAGS = -DOPT_SPEED
-
-EXTRA_DIST = imdct_l_arm.S
-
-if MAD
-mad_module = xineplug_decode_mad.la
-endif
-
-xineplug_LTLIBRARIES = $(mad_module)
-
-if EXTERNAL_LIBMAD
-internal_sources =
-else
-internal_sources = \
-	bit.c \
-	fixed.c \
-	frame.c \
-	huffman.c \
-	layer12.c \
-	layer3.c \
-	stream.c \
-	synth.c \
-	timer.c \
-	version.c
-endif
-
-xineplug_decode_mad_la_SOURCES = \
-	xine_mad_decoder.c \
-	$(internal_sources)
-
-if EXTERNAL_LIBMAD
-xineplug_decode_mad_la_LIBADD = $(XINE_LIB) $(LIBMAD_LIBS)
-else
-xineplug_decode_mad_la_LIBADD = $(XINE_LIB)
-endif
-xineplug_decode_mad_la_CFLAGS = $(LIBMAD_CFLAGS) $(VISIBILITY_FLAG)
-xineplug_decode_mad_la_LDFLAGS = $(xineplug_ldflags)
-
-noinst_HEADERS = \
-	D.dat \
-	imdct_s.dat \
-	qc_table.dat \
-	rq_table.dat \
-	sf_table.dat \
-	bit.h \
-	fixed.h \
-	frame.h \
-	global.h \
-	huffman.h \
-	layer12.h \
-	layer3.h \
-	stream.h \
-	synth.h \
-	timer.h \
-	version.h
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/bit.c
--- a/src/libmad/bit.c	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,237 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2004 Underbit Technologies, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: bit.c,v 1.3 2004/04/22 00:22:35 miguelfreitas Exp $
- */
-
-# ifdef HAVE_CONFIG_H
-#  include "config.h"
-# endif
-
-# include "global.h"
-
-# ifdef HAVE_LIMITS_H
-#  include <limits.h>
-# else
-#  define CHAR_BIT  8
-# endif
-
-# include "bit.h"
-
-/*
- * This is the lookup table for computing the CRC-check word.
- * As described in section 2.4.3.1 and depicted in Figure A.9
- * of ISO/IEC 11172-3, the generator polynomial is:
- *
- * G(X) = X^16 + X^15 + X^2 + 1
- */
-static
-unsigned short const crc_table[256] = {
-  0x0000, 0x8005, 0x800f, 0x000a, 0x801b, 0x001e, 0x0014, 0x8011,
-  0x8033, 0x0036, 0x003c, 0x8039, 0x0028, 0x802d, 0x8027, 0x0022,
-  0x8063, 0x0066, 0x006c, 0x8069, 0x0078, 0x807d, 0x8077, 0x0072,
-  0x0050, 0x8055, 0x805f, 0x005a, 0x804b, 0x004e, 0x0044, 0x8041,
-  0x80c3, 0x00c6, 0x00cc, 0x80c9, 0x00d8, 0x80dd, 0x80d7, 0x00d2,
-  0x00f0, 0x80f5, 0x80ff, 0x00fa, 0x80eb, 0x00ee, 0x00e4, 0x80e1,
-  0x00a0, 0x80a5, 0x80af, 0x00aa, 0x80bb, 0x00be, 0x00b4, 0x80b1,
-  0x8093, 0x0096, 0x009c, 0x8099, 0x0088, 0x808d, 0x8087, 0x0082,
-
-  0x8183, 0x0186, 0x018c, 0x8189, 0x0198, 0x819d, 0x8197, 0x0192,
-  0x01b0, 0x81b5, 0x81bf, 0x01ba, 0x81ab, 0x01ae, 0x01a4, 0x81a1,
-  0x01e0, 0x81e5, 0x81ef, 0x01ea, 0x81fb, 0x01fe, 0x01f4, 0x81f1,
-  0x81d3, 0x01d6, 0x01dc, 0x81d9, 0x01c8, 0x81cd, 0x81c7, 0x01c2,
-  0x0140, 0x8145, 0x814f, 0x014a, 0x815b, 0x015e, 0x0154, 0x8151,
-  0x8173, 0x0176, 0x017c, 0x8179, 0x0168, 0x816d, 0x8167, 0x0162,
-  0x8123, 0x0126, 0x012c, 0x8129, 0x0138, 0x813d, 0x8137, 0x0132,
-  0x0110, 0x8115, 0x811f, 0x011a, 0x810b, 0x010e, 0x0104, 0x8101,
-
-  0x8303, 0x0306, 0x030c, 0x8309, 0x0318, 0x831d, 0x8317, 0x0312,
-  0x0330, 0x8335, 0x833f, 0x033a, 0x832b, 0x032e, 0x0324, 0x8321,
-  0x0360, 0x8365, 0x836f, 0x036a, 0x837b, 0x037e, 0x0374, 0x8371,
-  0x8353, 0x0356, 0x035c, 0x8359, 0x0348, 0x834d, 0x8347, 0x0342,
-  0x03c0, 0x83c5, 0x83cf, 0x03ca, 0x83db, 0x03de, 0x03d4, 0x83d1,
-  0x83f3, 0x03f6, 0x03fc, 0x83f9, 0x03e8, 0x83ed, 0x83e7, 0x03e2,
-  0x83a3, 0x03a6, 0x03ac, 0x83a9, 0x03b8, 0x83bd, 0x83b7, 0x03b2,
-  0x0390, 0x8395, 0x839f, 0x039a, 0x838b, 0x038e, 0x0384, 0x8381,
-
-  0x0280, 0x8285, 0x828f, 0x028a, 0x829b, 0x029e, 0x0294, 0x8291,
-  0x82b3, 0x02b6, 0x02bc, 0x82b9, 0x02a8, 0x82ad, 0x82a7, 0x02a2,
-  0x82e3, 0x02e6, 0x02ec, 0x82e9, 0x02f8, 0x82fd, 0x82f7, 0x02f2,
-  0x02d0, 0x82d5, 0x82df, 0x02da, 0x82cb, 0x02ce, 0x02c4, 0x82c1,
-  0x8243, 0x0246, 0x024c, 0x8249, 0x0258, 0x825d, 0x8257, 0x0252,
-  0x0270, 0x8275, 0x827f, 0x027a, 0x826b, 0x026e, 0x0264, 0x8261,
-  0x0220, 0x8225, 0x822f, 0x022a, 0x823b, 0x023e, 0x0234, 0x8231,
-  0x8213, 0x0216, 0x021c, 0x8219, 0x0208, 0x820d, 0x8207, 0x0202
-};
-
-# define CRC_POLY  0x8005
-
-/*
- * NAME:	bit->init()
- * DESCRIPTION:	initialize bit pointer struct
- */
-void mad_bit_init(struct mad_bitptr *bitptr, unsigned char const *byte)
-{
-  bitptr->byte  = byte;
-  bitptr->cache = 0;
-  bitptr->left  = CHAR_BIT;
-}
-
-/*
- * NAME:	bit->length()
- * DESCRIPTION:	return number of bits between start and end points
- */
-unsigned int mad_bit_length(struct mad_bitptr const *begin,
-			    struct mad_bitptr const *end)
-{
-  return begin->left +
-    CHAR_BIT * (end->byte - (begin->byte + 1)) + (CHAR_BIT - end->left);
-}
-
-/*
- * NAME:	bit->nextbyte()
- * DESCRIPTION:	return pointer to next unprocessed byte
- */
-unsigned char const *mad_bit_nextbyte(struct mad_bitptr const *bitptr)
-{
-  return bitptr->left == CHAR_BIT ? bitptr->byte : bitptr->byte + 1;
-}
-
-/*
- * NAME:	bit->skip()
- * DESCRIPTION:	advance bit pointer
- */
-void mad_bit_skip(struct mad_bitptr *bitptr, unsigned int len)
-{
-  bitptr->byte += len / CHAR_BIT;
-  bitptr->left -= len % CHAR_BIT;
-
-  if (bitptr->left > CHAR_BIT) {
-    bitptr->byte++;
-    bitptr->left += CHAR_BIT;
-  }
-
-  if (bitptr->left < CHAR_BIT)
-    bitptr->cache = *bitptr->byte;
-}
-
-/*
- * NAME:	bit->read()
- * DESCRIPTION:	read an arbitrary number of bits and return their UIMSBF value
- */
-unsigned long mad_bit_read(struct mad_bitptr *bitptr, unsigned int len)
-{
-  register unsigned long value;
-
-  if (bitptr->left == CHAR_BIT)
-    bitptr->cache = *bitptr->byte;
-
-  if (len < bitptr->left) {
-    value = (bitptr->cache & ((1 << bitptr->left) - 1)) >>
-      (bitptr->left - len);
-    bitptr->left -= len;
-
-    return value;
-  }
-
-  /* remaining bits in current byte */
-
-  value = bitptr->cache & ((1 << bitptr->left) - 1);
-  len  -= bitptr->left;
-
-  bitptr->byte++;
-  bitptr->left = CHAR_BIT;
-
-  /* more bytes */
-
-  while (len >= CHAR_BIT) {
-    value = (value << CHAR_BIT) | *bitptr->byte++;
-    len  -= CHAR_BIT;
-  }
-
-  if (len > 0) {
-    bitptr->cache = *bitptr->byte;
-
-    value = (value << len) | (bitptr->cache >> (CHAR_BIT - len));
-    bitptr->left -= len;
-  }
-
-  return value;
-}
-
-# if 0
-/*
- * NAME:	bit->write()
- * DESCRIPTION:	write an arbitrary number of bits
- */
-void mad_bit_write(struct mad_bitptr *bitptr, unsigned int len,
-		   unsigned long value)
-{
-  unsigned char *ptr;
-
-  ptr = (unsigned char *) bitptr->byte;
-
-  /* ... */
-}
-# endif
-
-/*
- * NAME:	bit->crc()
- * DESCRIPTION:	compute CRC-check word
- */
-unsigned short mad_bit_crc(struct mad_bitptr bitptr, unsigned int len,
-			   unsigned short init)
-{
-  register unsigned int crc;
-
-  for (crc = init; len >= 32; len -= 32) {
-    register unsigned long data;
-
-    data = mad_bit_read(&bitptr, 32);
-
-    crc = (crc << 8) ^ crc_table[((crc >> 8) ^ (data >> 24)) & 0xff];
-    crc = (crc << 8) ^ crc_table[((crc >> 8) ^ (data >> 16)) & 0xff];
-    crc = (crc << 8) ^ crc_table[((crc >> 8) ^ (data >>  8)) & 0xff];
-    crc = (crc << 8) ^ crc_table[((crc >> 8) ^ (data >>  0)) & 0xff];
-  }
-
-  switch (len / 8) {
-  case 3: crc = (crc << 8) ^
-	    crc_table[((crc >> 8) ^ mad_bit_read(&bitptr, 8)) & 0xff];
-  case 2: crc = (crc << 8) ^
-	    crc_table[((crc >> 8) ^ mad_bit_read(&bitptr, 8)) & 0xff];
-  case 1: crc = (crc << 8) ^
-	    crc_table[((crc >> 8) ^ mad_bit_read(&bitptr, 8)) & 0xff];
-
-  len %= 8;
-
-  case 0: break;
-  }
-
-  while (len--) {
-    register unsigned int msb;
-
-    msb = mad_bit_read(&bitptr, 1) ^ (crc >> 15);
-
-    crc <<= 1;
-    if (msb & 1)
-      crc ^= CRC_POLY;
-  }
-
-  return crc & 0xffff;
-}
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/bit.h
--- a/src/libmad/bit.h	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2004 Underbit Technologies, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: bit.h,v 1.3 2004/04/22 00:22:36 miguelfreitas Exp $
- */
-
-# ifndef LIBMAD_BIT_H
-# define LIBMAD_BIT_H
-
-struct mad_bitptr {
-  unsigned char const *byte;
-  unsigned short cache;
-  unsigned short left;
-};
-
-void mad_bit_init(struct mad_bitptr *, unsigned char const *);
-
-# define mad_bit_finish(bitptr)		/* nothing */
-
-unsigned int mad_bit_length(struct mad_bitptr const *,
-			    struct mad_bitptr const *);
-
-# define mad_bit_bitsleft(bitptr)  ((bitptr)->left)
-unsigned char const *mad_bit_nextbyte(struct mad_bitptr const *);
-
-void mad_bit_skip(struct mad_bitptr *, unsigned int);
-unsigned long mad_bit_read(struct mad_bitptr *, unsigned int);
-void mad_bit_write(struct mad_bitptr *, unsigned int, unsigned long);
-
-unsigned short mad_bit_crc(struct mad_bitptr, unsigned int, unsigned short);
-
-# endif
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/fixed.c
--- a/src/libmad/fixed.c	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2004 Underbit Technologies, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: fixed.c,v 1.3 2004/04/22 00:22:36 miguelfreitas Exp $
- */
-
-# ifdef HAVE_CONFIG_H
-#  include "config.h"
-# endif
-
-# include "global.h"
-
-# include "fixed.h"
-
-/*
- * NAME:	fixed->abs()
- * DESCRIPTION:	return absolute value of a fixed-point number
- */
-mad_fixed_t mad_f_abs(mad_fixed_t x)
-{
-  return x < 0 ? -x : x;
-}
-
-/*
- * NAME:	fixed->div()
- * DESCRIPTION:	perform division using fixed-point math
- */
-mad_fixed_t mad_f_div(mad_fixed_t x, mad_fixed_t y)
-{
-  mad_fixed_t q, r;
-  unsigned int bits;
-
-  q = mad_f_abs(x / y);
-
-  if (x < 0) {
-    x = -x;
-    y = -y;
-  }
-
-  r = x % y;
-
-  if (y < 0) {
-    x = -x;
-    y = -y;
-  }
-
-  if (q > mad_f_intpart(MAD_F_MAX) &&
-      !(q == -mad_f_intpart(MAD_F_MIN) && r == 0 && (x < 0) != (y < 0)))
-    return 0;
-
-  for (bits = MAD_F_FRACBITS; bits && r; --bits) {
-    q <<= 1, r <<= 1;
-    if (r >= y)
-      r -= y, ++q;
-  }
-
-  /* round */
-  if (2 * r >= y)
-    ++q;
-
-  /* fix sign */
-  if ((x < 0) != (y < 0))
-    q = -q;
-
-  return q << bits;
-}
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/fixed.h
--- a/src/libmad/fixed.h	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,499 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2004 Underbit Technologies, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: fixed.h,v 1.3 2004/04/28 19:57:40 mroi Exp $
- */
-
-# ifndef LIBMAD_FIXED_H
-# define LIBMAD_FIXED_H
-
-# if SIZEOF_INT >= 4
-typedef   signed int mad_fixed_t;
-
-typedef   signed int mad_fixed64hi_t;
-typedef unsigned int mad_fixed64lo_t;
-# else
-typedef   signed long mad_fixed_t;
-
-typedef   signed long mad_fixed64hi_t;
-typedef unsigned long mad_fixed64lo_t;
-# endif
-
-# if defined(_MSC_VER)
-#  define mad_fixed64_t  signed __int64
-# elif 1 || defined(__GNUC__)
-#  define mad_fixed64_t  signed long long
-# endif
-
-# if defined(FPM_FLOAT)
-typedef double mad_sample_t;
-# else
-typedef mad_fixed_t mad_sample_t;
-# endif
-
-/*
- * Fixed-point format: 0xABBBBBBB
- * A == whole part      (sign + 3 bits)
- * B == fractional part (28 bits)
- *
- * Values are signed two's complement, so the effective range is:
- * 0x80000000 to 0x7fffffff
- *       -8.0 to +7.9999999962747097015380859375
- *
- * The smallest representable value is:
- * 0x00000001 == 0.0000000037252902984619140625 (i.e. about 3.725e-9)
- *
- * 28 bits of fractional accuracy represent about
- * 8.6 digits of decimal accuracy.
- *
- * Fixed-point numbers can be added or subtracted as normal
- * integers, but multiplication requires shifting the 64-bit result
- * from 56 fractional bits back to 28 (and rounding.)
- *
- * Changing the definition of MAD_F_FRACBITS is only partially
- * supported, and must be done with care.
- */
-
-# define MAD_F_FRACBITS		28
-
-# if MAD_F_FRACBITS == 28
-#  define MAD_F(x)		((mad_fixed_t) (x##L))
-# else
-#  if MAD_F_FRACBITS < 28
-#   warning "MAD_F_FRACBITS < 28"
-#   define MAD_F(x)		((mad_fixed_t)  \
-				 (((x##L) +  \
-				   (1L << (28 - MAD_F_FRACBITS - 1))) >>  \
-				  (28 - MAD_F_FRACBITS)))
-#  elif MAD_F_FRACBITS > 28
-#   error "MAD_F_FRACBITS > 28 not currently supported"
-#   define MAD_F(x)		((mad_fixed_t)  \
-				 ((x##L) << (MAD_F_FRACBITS - 28)))
-#  endif
-# endif
-
-# define MAD_F_MIN		((mad_fixed_t) -0x80000000L)
-# define MAD_F_MAX		((mad_fixed_t) +0x7fffffffL)
-
-# define MAD_F_ONE		MAD_F(0x10000000)
-
-# define mad_f_tofixed(x)	((mad_fixed_t)  \
-				 ((x) * (double) (1L << MAD_F_FRACBITS) + 0.5))
-# define mad_f_todouble(x)	((double)  \
-				 ((x) / (double) (1L << MAD_F_FRACBITS)))
-
-# define mad_f_intpart(x)	((x) >> MAD_F_FRACBITS)
-# define mad_f_fracpart(x)	((x) & ((1L << MAD_F_FRACBITS) - 1))
-				/* (x should be positive) */
-
-# define mad_f_fromint(x)	((x) << MAD_F_FRACBITS)
-
-# define mad_f_add(x, y)	((x) + (y))
-# define mad_f_sub(x, y)	((x) - (y))
-
-# if defined(FPM_FLOAT)
-#  error "FPM_FLOAT not yet supported"
-
-#  undef MAD_F
-#  define MAD_F(x)		mad_f_todouble(x)
-
-#  define mad_f_mul(x, y)	((x) * (y))
-#  define mad_f_scale64
-
-#  undef ASO_ZEROCHECK
-
-# elif defined(FPM_64BIT)
-
-/*
- * This version should be the most accurate if 64-bit types are supported by
- * the compiler, although it may not be the most efficient.
[... 247 lines omitted ...]
-/*
- * This gives best accuracy but is not very fast.
- */
-#   define MAD_F_MLA(hi, lo, x, y)  \
-    ({ mad_fixed64hi_t __hi;  \
-       mad_fixed64lo_t __lo;  \
-       MAD_F_MLX(__hi, __lo, (x), (y));  \
-       asm ("addc %0,%2,%3\n\t"  \
-	    "adde %1,%4,%5"  \
-	    : "=r" (lo), "=r" (hi)  \
-	    : "%r" (lo), "r" (__lo),  \
-	      "%r" (hi), "r" (__hi)  \
-	    : "xer");  \
-    })
-#  endif
-
-#  if defined(OPT_ACCURACY)
-/*
- * This is slower than the truncating version below it.
- */
-#   define mad_f_scale64(hi, lo)  \
-    ({ mad_fixed_t __result, __round;  \
-       asm ("rotrwi %0,%1,%2"  \
-	    : "=r" (__result)  \
-	    : "r" (lo), "i" (MAD_F_SCALEBITS));  \
-       asm ("extrwi %0,%1,1,0"  \
-	    : "=r" (__round)  \
-	    : "r" (__result));  \
-       asm ("insrwi %0,%1,%2,0"  \
-	    : "+r" (__result)  \
-	    : "r" (hi), "i" (MAD_F_SCALEBITS));  \
-       asm ("add %0,%1,%2"  \
-	    : "=r" (__result)  \
-	    : "%r" (__result), "r" (__round));  \
-       __result;  \
-    })
-#  else
-#   define mad_f_scale64(hi, lo)  \
-    ({ mad_fixed_t __result;  \
-       asm ("rotrwi %0,%1,%2"  \
-	    : "=r" (__result)  \
-	    : "r" (lo), "i" (MAD_F_SCALEBITS));  \
-       asm ("insrwi %0,%1,%2,0"  \
-	    : "+r" (__result)  \
-	    : "r" (hi), "i" (MAD_F_SCALEBITS));  \
-       __result;  \
-    })
-#  endif
-
-#  define MAD_F_SCALEBITS  MAD_F_FRACBITS
-
-/* --- Default ------------------------------------------------------------- */
-
-# elif defined(FPM_DEFAULT)
-
-/*
- * This version is the most portable but it loses significant accuracy.
- * Furthermore, accuracy is biased against the second argument, so care
- * should be taken when ordering operands.
- *
- * The scale factors are constant as this is not used with SSO.
- *
- * Pre-rounding is required to stay within the limits of compliance.
- */
-#  if defined(OPT_SPEED)
-#   define mad_f_mul(x, y)	(((x) >> 12) * ((y) >> 16))
-#  else
-#   define mad_f_mul(x, y)	((((x) + (1L << 11)) >> 12) *  \
-				 (((y) + (1L << 15)) >> 16))
-#  endif
-
-/* ------------------------------------------------------------------------- */
-
-# else
-#  error "no FPM selected"
-# endif
-
-/* default implementations */
-
-# if !defined(mad_f_mul)
-#  define mad_f_mul(x, y)  \
-    ({ register mad_fixed64hi_t __hi;  \
-       register mad_fixed64lo_t __lo;  \
-       MAD_F_MLX(__hi, __lo, (x), (y));  \
-       mad_f_scale64(__hi, __lo);  \
-    })
-# endif
-
-# if !defined(MAD_F_MLA)
-#  define MAD_F_ML0(hi, lo, x, y)	((lo)  = mad_f_mul((x), (y)))
-#  define MAD_F_MLA(hi, lo, x, y)	((lo) += mad_f_mul((x), (y)))
-#  define MAD_F_MLN(hi, lo)		((lo)  = -(lo))
-#  define MAD_F_MLZ(hi, lo)		((void) (hi), (mad_fixed_t) (lo))
-# endif
-
-# if !defined(MAD_F_ML0)
-#  define MAD_F_ML0(hi, lo, x, y)	MAD_F_MLX((hi), (lo), (x), (y))
-# endif
-
-# if !defined(MAD_F_MLN)
-#  define MAD_F_MLN(hi, lo)		((hi) = ((lo) = -(lo)) ? ~(hi) : -(hi))
-# endif
-
-# if !defined(MAD_F_MLZ)
-#  define MAD_F_MLZ(hi, lo)		mad_f_scale64((hi), (lo))
-# endif
-
-# if !defined(mad_f_scale64)
-#  if defined(OPT_ACCURACY)
-#   define mad_f_scale64(hi, lo)  \
-    ((((mad_fixed_t)  \
-       (((hi) << (32 - (MAD_F_SCALEBITS - 1))) |  \
-	((lo) >> (MAD_F_SCALEBITS - 1)))) + 1) >> 1)
-#  else
-#   define mad_f_scale64(hi, lo)  \
-    ((mad_fixed_t)  \
-     (((hi) << (32 - MAD_F_SCALEBITS)) |  \
-      ((lo) >> MAD_F_SCALEBITS)))
-#  endif
-#  define MAD_F_SCALEBITS  MAD_F_FRACBITS
-# endif
-
-/* C routines */
-
-mad_fixed_t mad_f_abs(mad_fixed_t);
-mad_fixed_t mad_f_div(mad_fixed_t, mad_fixed_t);
-
-# endif
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/frame.c
--- a/src/libmad/frame.c	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,503 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2004 Underbit Technologies, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: frame.c,v 1.3 2004/04/22 00:22:36 miguelfreitas Exp $
- */
-
-# ifdef HAVE_CONFIG_H
-#  include "config.h"
-# endif
-
-# include "global.h"
-
-# include <stdlib.h>
-
-# include "bit.h"
-# include "stream.h"
-# include "frame.h"
-# include "timer.h"
-# include "layer12.h"
-# include "layer3.h"
-
-static
-unsigned long const bitrate_table[5][15] = {
-  /* MPEG-1 */
-  { 0,  32000,  64000,  96000, 128000, 160000, 192000, 224000,  /* Layer I   */
-       256000, 288000, 320000, 352000, 384000, 416000, 448000 },
-  { 0,  32000,  48000,  56000,  64000,  80000,  96000, 112000,  /* Layer II  */
-       128000, 160000, 192000, 224000, 256000, 320000, 384000 },
-  { 0,  32000,  40000,  48000,  56000,  64000,  80000,  96000,  /* Layer III */
-       112000, 128000, 160000, 192000, 224000, 256000, 320000 },
-
-  /* MPEG-2 LSF */
-  { 0,  32000,  48000,  56000,  64000,  80000,  96000, 112000,  /* Layer I   */
-       128000, 144000, 160000, 176000, 192000, 224000, 256000 },
-  { 0,   8000,  16000,  24000,  32000,  40000,  48000,  56000,  /* Layers    */
-        64000,  80000,  96000, 112000, 128000, 144000, 160000 } /* II & III  */
-};
-
-static
-unsigned int const samplerate_table[3] = { 44100, 48000, 32000 };
-
-static
-int (*const decoder_table[3])(struct mad_stream *, struct mad_frame *) = {
-  mad_layer_I,
-  mad_layer_II,
-  mad_layer_III
-};
-
-/*
- * NAME:	header->init()
- * DESCRIPTION:	initialize header struct
- */
-void mad_header_init(struct mad_header *header)
-{
-  header->layer          = 0;
-  header->mode           = 0;
-  header->mode_extension = 0;
-  header->emphasis       = 0;
-
-  header->bitrate        = 0;
-  header->samplerate     = 0;
-
-  header->crc_check      = 0;
-  header->crc_target     = 0;
-
-  header->flags          = 0;
-  header->private_bits   = 0;
-
-  header->duration       = mad_timer_zero;
-}
-
-/*
- * NAME:	frame->init()
- * DESCRIPTION:	initialize frame struct
- */
-void mad_frame_init(struct mad_frame *frame)
-{
-  mad_header_init(&frame->header);
-
-  frame->options = 0;
-
-  frame->overlap = 0;
-  mad_frame_mute(frame);
-}
-
-/*
- * NAME:	frame->finish()
- * DESCRIPTION:	deallocate any dynamic memory associated with frame
- */
-void mad_frame_finish(struct mad_frame *frame)
-{
-  mad_header_finish(&frame->header);
-
-  if (frame->overlap) {
-    free(frame->overlap);
-    frame->overlap = 0;
-  }
-}
-
-/*
- * NAME:	decode_header()
- * DESCRIPTION:	read header data and following CRC word
- */
-static
-int decode_header(struct mad_header *header, struct mad_stream *stream)
-{
-  unsigned int index;
-
-  header->flags        = 0;
[... 251 lines omitted ...]
-
-  /* calculate free bit rate */
-  if (header->bitrate == 0) {
-    if ((stream->freerate == 0 || !stream->sync ||
-	 (header->layer == MAD_LAYER_III && stream->freerate > 640000)) &&
-	free_bitrate(stream, header) == -1)
-      goto fail;
-
-    header->bitrate = stream->freerate;
-    header->flags  |= MAD_FLAG_FREEFORMAT;
-  }
-
-  /* calculate beginning of next frame */
-  pad_slot = (header->flags & MAD_FLAG_PADDING) ? 1 : 0;
-
-  if (header->layer == MAD_LAYER_I)
-    N = ((12 * header->bitrate / header->samplerate) + pad_slot) * 4;
-  else {
-    unsigned int slots_per_frame;
-
-    slots_per_frame = (header->layer == MAD_LAYER_III &&
-		       (header->flags & MAD_FLAG_LSF_EXT)) ? 72 : 144;
-
-    N = (slots_per_frame * header->bitrate / header->samplerate) + pad_slot;
-  }
-
-  /* verify there is enough data left in buffer to decode this frame */
-  if (N + MAD_BUFFER_GUARD > end - stream->this_frame) {
-    stream->next_frame = stream->this_frame;
-
-    stream->error = MAD_ERROR_BUFLEN;
-    goto fail;
-  }
-
-  stream->next_frame = stream->this_frame + N;
-
-  if (!stream->sync) {
-    /* check that a valid frame header follows this frame */
-
-    ptr = stream->next_frame;
-    if (!(ptr[0] == 0xff && (ptr[1] & 0xe0) == 0xe0)) {
-      ptr = stream->next_frame = stream->this_frame + 1;
-      goto sync;
-    }
-
-    stream->sync = 1;
-  }
-
-  header->flags |= MAD_FLAG_INCOMPLETE;
-
-  return 0;
-
- fail:
-  stream->sync = 0;
-
-  return -1;
-}
-
-/*
- * NAME:	frame->decode()
- * DESCRIPTION:	decode a single frame from a bitstream
- */
-int mad_frame_decode(struct mad_frame *frame, struct mad_stream *stream)
-{
-  frame->options = stream->options;
-
-  /* header() */
-  /* error_check() */
-
-  if (!(frame->header.flags & MAD_FLAG_INCOMPLETE) &&
-      mad_header_decode(&frame->header, stream) == -1)
-    goto fail;
-
-  /* audio_data() */
-
-  frame->header.flags &= ~MAD_FLAG_INCOMPLETE;
-
-  if (decoder_table[frame->header.layer - 1](stream, frame) == -1) {
-    if (!MAD_RECOVERABLE(stream->error))
-      stream->next_frame = stream->this_frame;
-
-    goto fail;
-  }
-
-  /* ancillary_data() */
-
-  if (frame->header.layer != MAD_LAYER_III) {
-    struct mad_bitptr next_frame;
-
-    mad_bit_init(&next_frame, stream->next_frame);
-
-    stream->anc_ptr    = stream->ptr;
-    stream->anc_bitlen = mad_bit_length(&stream->ptr, &next_frame);
-
-    mad_bit_finish(&next_frame);
-  }
-
-  return 0;
-
- fail:
-  stream->anc_bitlen = 0;
-  return -1;
-}
-
-/*
- * NAME:	frame->mute()
- * DESCRIPTION:	zero all subband values so the frame becomes silent
- */
-void mad_frame_mute(struct mad_frame *frame)
-{
-  unsigned int s, sb;
-
-  for (s = 0; s < 36; ++s) {
-    for (sb = 0; sb < 32; ++sb) {
-      frame->sbsample[0][s][sb] =
-      frame->sbsample[1][s][sb] = 0;
-    }
-  }
-
-  if (frame->overlap) {
-    for (s = 0; s < 18; ++s) {
-      for (sb = 0; sb < 32; ++sb) {
-	(*frame->overlap)[0][sb][s] =
-	(*frame->overlap)[1][sb][s] = 0;
-      }
-    }
-  }
-}
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/frame.h
--- a/src/libmad/frame.h	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2004 Underbit Technologies, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: frame.h,v 1.3 2004/04/22 00:22:36 miguelfreitas Exp $
- */
-
-# ifndef LIBMAD_FRAME_H
-# define LIBMAD_FRAME_H
-
-# include "fixed.h"
-# include "timer.h"
-# include "stream.h"
-
-enum mad_layer {
-  MAD_LAYER_I   = 1,			/* Layer I */
-  MAD_LAYER_II  = 2,			/* Layer II */
-  MAD_LAYER_III = 3			/* Layer III */
-};
-
-enum mad_mode {
-  MAD_MODE_SINGLE_CHANNEL = 0,		/* single channel */
-  MAD_MODE_DUAL_CHANNEL	  = 1,		/* dual channel */
-  MAD_MODE_JOINT_STEREO	  = 2,		/* joint (MS/intensity) stereo */
-  MAD_MODE_STEREO	  = 3		/* normal LR stereo */
-};
-
-enum mad_emphasis {
-  MAD_EMPHASIS_NONE	  = 0,		/* no emphasis */
-  MAD_EMPHASIS_50_15_US	  = 1,		/* 50/15 microseconds emphasis */
-  MAD_EMPHASIS_CCITT_J_17 = 3,		/* CCITT J.17 emphasis */
-  MAD_EMPHASIS_RESERVED   = 2		/* unknown emphasis */
-};
-
-struct mad_header {
-  enum mad_layer layer;			/* audio layer (1, 2, or 3) */
-  enum mad_mode mode;			/* channel mode (see above) */
-  int mode_extension;			/* additional mode info */
-  enum mad_emphasis emphasis;		/* de-emphasis to use (see above) */
-
-  unsigned long bitrate;		/* stream bitrate (bps) */
-  unsigned int samplerate;		/* sampling frequency (Hz) */
-
-  unsigned short crc_check;		/* frame CRC accumulator */
-  unsigned short crc_target;		/* final target CRC checksum */
-
-  int flags;				/* flags (see below) */
-  int private_bits;			/* private bits (see below) */
-
-  mad_timer_t duration;			/* audio playing time of frame */
-};
-
-struct mad_frame {
-  struct mad_header header;		/* MPEG audio header */
-
-  int options;				/* decoding options (from stream) */
-
-  mad_fixed_t sbsample[2][36][32];	/* synthesis subband filter samples */
-  mad_fixed_t (*overlap)[2][32][18];	/* Layer III block overlap data */
-};
-
-# define MAD_NCHANNELS(header)		((header)->mode ? 2 : 1)
-# define MAD_NSBSAMPLES(header)  \
-  ((header)->layer == MAD_LAYER_I ? 12 :  \
-   (((header)->layer == MAD_LAYER_III &&  \
-     ((header)->flags & MAD_FLAG_LSF_EXT)) ? 18 : 36))
-
-enum {
-  MAD_FLAG_NPRIVATE_III	= 0x0007,	/* number of Layer III private bits */
-  MAD_FLAG_INCOMPLETE	= 0x0008,	/* header but not data is decoded */
-
-  MAD_FLAG_PROTECTION	= 0x0010,	/* frame has CRC protection */
-  MAD_FLAG_COPYRIGHT	= 0x0020,	/* frame is copyright */
-  MAD_FLAG_ORIGINAL	= 0x0040,	/* frame is original (else copy) */
-  MAD_FLAG_PADDING	= 0x0080,	/* frame has additional slot */
-
-  MAD_FLAG_I_STEREO	= 0x0100,	/* uses intensity joint stereo */
-  MAD_FLAG_MS_STEREO	= 0x0200,	/* uses middle/side joint stereo */
-  MAD_FLAG_FREEFORMAT	= 0x0400,	/* uses free format bitrate */
-
-  MAD_FLAG_LSF_EXT	= 0x1000,	/* lower sampling freq. extension */
-  MAD_FLAG_MC_EXT	= 0x2000,	/* multichannel audio extension */
-  MAD_FLAG_MPEG_2_5_EXT	= 0x4000	/* MPEG 2.5 (unofficial) extension */
-};
-
-enum {
-  MAD_PRIVATE_HEADER	= 0x0100,	/* header private bit */
-  MAD_PRIVATE_III	= 0x001f	/* Layer III private bits (up to 5) */
-};
-
-void mad_header_init(struct mad_header *);
-
-# define mad_header_finish(header)  /* nothing */
-
-int mad_header_decode(struct mad_header *, struct mad_stream *);
-
-void mad_frame_init(struct mad_frame *);
-void mad_frame_finish(struct mad_frame *);
-
-int mad_frame_decode(struct mad_frame *, struct mad_stream *);
-
-void mad_frame_mute(struct mad_frame *);
-
-# endif
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/global.h
--- a/src/libmad/global.h	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2004 Underbit Technologies, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: global.h,v 1.4 2004/04/22 00:22:36 miguelfreitas Exp $
- */
-
-# ifndef LIBMAD_GLOBAL_H
-# define LIBMAD_GLOBAL_H
-
-/* conditional debugging */
-
-# if defined(DEBUG) && defined(NDEBUG)
-#  error "cannot define both DEBUG and NDEBUG"
-# endif
-
-# if defined(DEBUG)
-#  include <stdio.h>
-# endif
-
-/* conditional features */
-
-# if defined(OPT_SPEED) && defined(OPT_ACCURACY)
-#  error "cannot optimize for both speed and accuracy"
-# endif
-
-# if defined(OPT_SPEED) && !defined(OPT_SSO)
-#  define OPT_SSO
-# endif
-
-# if defined(HAVE_UNISTD_H) && defined(HAVE_WAITPID) &&  \
-    defined(HAVE_FCNTL) && defined(HAVE_PIPE) && defined(HAVE_FORK)
-#  define USE_ASYNC
-# endif
-
-# if !defined(HAVE_ASSERT_H)
-#  if defined(NDEBUG)
-#   define assert(x)	/* nothing */
-#  else
-#   define assert(x)	do { if (!(x)) abort(); } while (0)
-#  endif
-# endif
-
-# endif
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/huffman.c
--- a/src/libmad/huffman.c	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3109 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2004 Underbit Technologies, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: huffman.c,v 1.4 2004/04/22 00:22:36 miguelfreitas Exp $
- */
-
-# ifdef HAVE_CONFIG_H
-#  include "config.h"
-# endif
-
-# include "global.h"
-
-# include "huffman.h"
-
-/*
- * These are the Huffman code words for Layer III.
- * The data for these tables are derived from Table B.7 of ISO/IEC 11172-3.
- *
- * These tables support decoding up to 4 Huffman code bits at a time.
- */
-
-# if defined(__GNUC__) ||  \
-    (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901)
-#  define PTR(offs, bits)	{ .ptr   = { 0, bits, offs       } }
-#  define V(v, w, x, y, hlen)	{ .value = { 1, hlen, v, w, x, y } }
-# else
-#  define PTR(offs, bits)	{ { 0, bits, offs } }
-#  if defined(WORDS_BIGENDIAN)
-#   define V(v, w, x, y, hlen)	{ { 1, hlen, (v << 11) | (w << 10) |  \
-                                             (x <<  9) | (y <<  8) } }
-#  else
-#   define V(v, w, x, y, hlen)	{ { 1, hlen, (v <<  0) | (w <<  1) |  \
-                                             (x <<  2) | (y <<  3) } }
-#  endif
-# endif
-
-static
-union huffquad const hufftabA[] = {
-  /* 0000 */ PTR(16, 2),
-  /* 0001 */ PTR(20, 2),
-  /* 0010 */ PTR(24, 1),
-  /* 0011 */ PTR(26, 1),
-  /* 0100 */ V(0, 0, 1, 0, 4),
-  /* 0101 */ V(0, 0, 0, 1, 4),
-  /* 0110 */ V(0, 1, 0, 0, 4),
-  /* 0111 */ V(1, 0, 0, 0, 4),
-  /* 1000 */ V(0, 0, 0, 0, 1),
-  /* 1001 */ V(0, 0, 0, 0, 1),
-  /* 1010 */ V(0, 0, 0, 0, 1),
-  /* 1011 */ V(0, 0, 0, 0, 1),
-  /* 1100 */ V(0, 0, 0, 0, 1),
-  /* 1101 */ V(0, 0, 0, 0, 1),
-  /* 1110 */ V(0, 0, 0, 0, 1),
-  /* 1111 */ V(0, 0, 0, 0, 1),
-
-  /* 0000 ... */
-  /* 00   */ V(1, 0, 1, 1, 2),	/* 16 */
-  /* 01   */ V(1, 1, 1, 1, 2),
-  /* 10   */ V(1, 1, 0, 1, 2),
-  /* 11   */ V(1, 1, 1, 0, 2),
-
-  /* 0001 ... */
-  /* 00   */ V(0, 1, 1, 1, 2),	/* 20 */
-  /* 01   */ V(0, 1, 0, 1, 2),
-  /* 10   */ V(1, 0, 0, 1, 1),
-  /* 11   */ V(1, 0, 0, 1, 1),
-
-  /* 0010 ... */
-  /* 0    */ V(0, 1, 1, 0, 1),	/* 24 */
-  /* 1    */ V(0, 0, 1, 1, 1),
-
-  /* 0011 ... */
-  /* 0    */ V(1, 0, 1, 0, 1),	/* 26 */
-  /* 1    */ V(1, 1, 0, 0, 1)
-};
-
-static
-union huffquad const hufftabB[] = {
-  /* 0000 */ V(1, 1, 1, 1, 4),
-  /* 0001 */ V(1, 1, 1, 0, 4),
-  /* 0010 */ V(1, 1, 0, 1, 4),
-  /* 0011 */ V(1, 1, 0, 0, 4),
-  /* 0100 */ V(1, 0, 1, 1, 4),
-  /* 0101 */ V(1, 0, 1, 0, 4),
-  /* 0110 */ V(1, 0, 0, 1, 4),
-  /* 0111 */ V(1, 0, 0, 0, 4),
-  /* 1000 */ V(0, 1, 1, 1, 4),
-  /* 1001 */ V(0, 1, 1, 0, 4),
-  /* 1010 */ V(0, 1, 0, 1, 4),
-  /* 1011 */ V(0, 1, 0, 0, 4),
-  /* 1100 */ V(0, 0, 1, 1, 4),
-  /* 1101 */ V(0, 0, 1, 0, 4),
-  /* 1110 */ V(0, 0, 0, 1, 4),
-  /* 1111 */ V(0, 0, 0, 0, 4)
-};
-
-# undef V
-# undef PTR
-
-# if defined(__GNUC__) ||  \
-    (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901)
-#  define PTR(offs, bits)	{ .ptr   = { 0, bits, offs } }
-#  define V(x, y, hlen)		{ .value = { 1, hlen, x, y } }
-# else
-#  define PTR(offs, bits)	{ { 0, bits, offs } }
-#  if defined(WORDS_BIGENDIAN)
-#   define V(x, y, hlen)	{ { 1, hlen, (x << 8) | (y << 4) } }
-#  else
-#   define V(x, y, hlen)	{ { 1, hlen, (x << 0) | (y << 4) } }
[... 2857 lines omitted ...]
-  /* 1    */ V(10, 2, 1),
-
-  /* 0101 1100 ... */
-  /* 0    */ V(10, 1, 1),	/* 342 */
-  /* 1    */ V(6, 8, 1),
-
-  /* 0101 1101 ... */
-  /* 0    */ V(8, 6, 1),	/* 344 */
-  /* 1    */ V(7, 7, 1),
-
-  /* 0101 1110 ... */
-  /* 0    */ V(4, 9, 1),	/* 346 */
-  /* 1    */ V(9, 4, 1),
-
-  /* 0101 1111 ... */
-  /* 0    */ V(3, 9, 1),	/* 348 */
-  /* 1    */ V(9, 3, 1),
-
-  /* 0110 0000 ... */
-  /* 0    */ V(5, 8, 1),	/* 350 */
-  /* 1    */ V(8, 5, 1),
-
-  /* 0110 0001 ... */
-  /* 0    */ V(2, 9, 1),	/* 352 */
-  /* 1    */ V(6, 7, 1),
-
-  /* 0110 0010 ... */
-  /* 0    */ V(7, 6, 1),	/* 354 */
-  /* 1    */ V(9, 2, 1),
-
-  /* 0110 0011 ... */
-  /* 0    */ V(1, 9, 1),	/* 356 */
-  /* 1    */ V(9, 1, 1),
-
-  /* 0110 0100 ... */
-  /* 0    */ V(4, 8, 1),	/* 358 */
-  /* 1    */ V(8, 4, 1),
-
-  /* 0110 0101 ... */
-  /* 0    */ V(5, 7, 1),	/* 360 */
-  /* 1    */ V(7, 5, 1),
-
-  /* 0110 0110 ... */
-  /* 0    */ V(3, 8, 1),	/* 362 */
-  /* 1    */ V(8, 3, 1),
-
-  /* 0110 0111 ... */
-  /* 0    */ V(6, 6, 1),	/* 364 */
-  /* 1    */ V(2, 8, 1),
-
-  /* 0110 1000 ... */
-  /* 0    */ V(8, 2, 1),	/* 366 */
-  /* 1    */ V(1, 8, 1),
-
-  /* 0110 1001 ... */
-  /* 0    */ V(4, 7, 1),	/* 368 */
-  /* 1    */ V(7, 4, 1),
-
-  /* 0110 1010 ... */
-  /* 00   */ V(8, 1, 1),	/* 370 */
-  /* 01   */ V(8, 1, 1),
-  /* 10   */ V(0, 8, 2),
-  /* 11   */ V(8, 0, 2),
-
-  /* 0110 1011 ... */
-  /* 0    */ V(5, 6, 1),	/* 374 */
-  /* 1    */ V(6, 5, 1),
-
-  /* 0110 1100 ... */
-  /* 00   */ V(1, 7, 1),	/* 376 */
-  /* 01   */ V(1, 7, 1),
-  /* 10   */ V(0, 7, 2),
-  /* 11   */ V(7, 0, 2),
-
-  /* 0110 1110 ... */
-  /* 0    */ V(3, 7, 1),	/* 380  */
-  /* 1    */ V(2, 7, 1),
-
-  /* 0111 1100 ... */
-  /* 0    */ V(0, 6, 1),	/* 382 */
-  /* 1    */ V(6, 0, 1),
-
-  /* 1000 0011 ... */
-  /* 0    */ V(0, 5, 1),	/* 384 */
-  /* 1    */ V(5, 0, 1)
-};
-
-# undef V
-# undef PTR
-
-/* external tables */
-
-union huffquad const *const mad_huff_quad_table[2] = { hufftabA, hufftabB };
-
-struct hufftable const mad_huff_pair_table[32] = {
-  /*  0 */ { hufftab0,   0, 0 },
-  /*  1 */ { hufftab1,   0, 3 },
-  /*  2 */ { hufftab2,   0, 3 },
-  /*  3 */ { hufftab3,   0, 3 },
-  /*  4 */ { 0 /* not used */ },
-  /*  5 */ { hufftab5,   0, 3 },
-  /*  6 */ { hufftab6,   0, 4 },
-  /*  7 */ { hufftab7,   0, 4 },
-  /*  8 */ { hufftab8,   0, 4 },
-  /*  9 */ { hufftab9,   0, 4 },
-  /* 10 */ { hufftab10,  0, 4 },
-  /* 11 */ { hufftab11,  0, 4 },
-  /* 12 */ { hufftab12,  0, 4 },
-  /* 13 */ { hufftab13,  0, 4 },
-  /* 14 */ { 0 /* not used */ },
-  /* 15 */ { hufftab15,  0, 4 },
-  /* 16 */ { hufftab16,  1, 4 },
-  /* 17 */ { hufftab16,  2, 4 },
-  /* 18 */ { hufftab16,  3, 4 },
-  /* 19 */ { hufftab16,  4, 4 },
-  /* 20 */ { hufftab16,  6, 4 },
-  /* 21 */ { hufftab16,  8, 4 },
-  /* 22 */ { hufftab16, 10, 4 },
-  /* 23 */ { hufftab16, 13, 4 },
-  /* 24 */ { hufftab24,  4, 4 },
-  /* 25 */ { hufftab24,  5, 4 },
-  /* 26 */ { hufftab24,  6, 4 },
-  /* 27 */ { hufftab24,  7, 4 },
-  /* 28 */ { hufftab24,  8, 4 },
-  /* 29 */ { hufftab24,  9, 4 },
-  /* 30 */ { hufftab24, 11, 4 },
-  /* 31 */ { hufftab24, 13, 4 }
-};
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/huffman.h
--- a/src/libmad/huffman.h	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2004 Underbit Technologies, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: huffman.h,v 1.4 2004/04/22 00:22:41 miguelfreitas Exp $
- */
-
-# ifndef LIBMAD_HUFFMAN_H
-# define LIBMAD_HUFFMAN_H
-
-union huffquad {
-  struct {
-    unsigned short final  :  1;
-    unsigned short bits   :  3;
-    unsigned short offset : 12;
-  } ptr;
-  struct {
-    unsigned short final  :  1;
-    unsigned short hlen   :  3;
-    unsigned short v      :  1;
-    unsigned short w      :  1;
-    unsigned short x      :  1;
-    unsigned short y      :  1;
-  } value;
-  unsigned short final    :  1;
-};
-
-union huffpair {
-  struct {
-    unsigned short final  :  1;
-    unsigned short bits   :  3;
-    unsigned short offset : 12;
-  } ptr;
-  struct {
-    unsigned short final  :  1;
-    unsigned short hlen   :  3;
-    unsigned short x      :  4;
-    unsigned short y      :  4;
-  } value;
-  unsigned short final    :  1;
-};
-
-struct hufftable {
-  union huffpair const *table;
-  unsigned short linbits;
-  unsigned short startbits;
-};
-
-extern union huffquad const *const mad_huff_quad_table[2];
-extern struct hufftable const mad_huff_pair_table[32];
-
-# endif
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/imdct_l_arm.S
--- a/src/libmad/imdct_l_arm.S	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1000 +0,0 @@
-/*****************************************************************************
-* Copyright (C) 2000-2001 Andre McCurdy  <armccurdy@yahoo.co.uk>
-*
-* This program is free software. you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published by
-* the Free Software Foundation@ either version 2 of the License, or
-* (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY, without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program@ if not, write to the Free Software
-* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-*
-*****************************************************************************
-*
-* Notes:
-*
-*
-*****************************************************************************
-*
-* $Id: imdct_l_arm.S,v 1.1 2002/04/30 18:46:58 miguelfreitas Exp $
-*
-* 2001/03/24:  Andre McCurdy <armccurdy@yahoo.co.uk>
-*   - Corrected PIC unsafe loading of address of 'imdct36_long_karray'
-*
-* 2000/09/20:  Robert Leslie <rob@mars.org>
-*   - Added a global symbol with leading underscore per suggestion of
-*     Simon Burge to support linking with the a.out format.
-*
-* 2000/09/15:  Robert Leslie <rob@mars.org>
-*   - Fixed a small bug where flags were changed before a conditional branch.
-*
-* 2000/09/15:  Andre McCurdy <armccurdy@yahoo.co.uk>
-*   - Applied Nicolas Pitre's rounding optimisation in all remaining places.
-*
-* 2000/09/09:  Nicolas Pitre <nico@cam.org>
-*   - Optimized rounding + scaling operations.
-*
-* 2000/08/09:  Andre McCurdy <armccurdy@yahoo.co.uk>
-*   - Original created.
-*
-****************************************************************************/
-
-
-/*
-   On entry:
-
-      r0 = pointer to 18 element input  array
-      r1 = pointer to 36 element output array
-      r2 = windowing block type
-
-
-   Stack frame created during execution of the function:
-
-   Initial   Holds:
-   Stack
-   pointer
-   minus:
-
-       0
-       4     lr
-       8     r11
-      12     r10
-      16     r9
-      20     r8
-      24     r7
-      28     r6
-      32     r5
-      36     r4
-
-      40     r2 : windowing block type
-
-      44     ct00 high
-      48     ct00 low
-      52     ct01 high
-      56     ct01 low
-      60     ct04 high
-      64     ct04 low
-      68     ct06 high
-      72     ct06 low
-      76     ct05 high
-      80     ct05 low
-      84     ct03 high
-      88     ct03 low
-      92    -ct05 high
-      96    -ct05 low
-     100    -ct07 high
-     104    -ct07 low
-     108     ct07 high
-     112     ct07 low
-     116     ct02 high
-     120     ct02 low
-*/
-
-#define BLOCK_MODE_NORMAL   0
-#define BLOCK_MODE_START    1
-#define BLOCK_MODE_STOP     3
-
-
-#define X0   0x00
-#define X1   0x04
-#define X2   0x08
-#define X3   0x0C
-#define X4   0x10
-#define X5   0x14
-#define X6   0x18
-#define X7   0x1c
-#define X8   0x20
-#define X9   0x24
-#define X10  0x28
-#define X11  0x2c
-#define X12  0x30
-#define X13  0x34
-#define X14  0x38
-#define X15  0x3c
-#define X16  0x40
-#define X17  0x44
-
-#define x0   0x00
-#define x1   0x04
[... 748 lines omitted ...]
-    @ r10    = -x8
-    @ r11    =  window mode: (0 == normal), (1 == start block), (3 == stop block)
-    @ r12    = -x7
-    @ lr     = -x6
-
-    smull   r5, r6, r0, r7              @ r5..r6 = (window_l[1] * x[6])
-    ldr     r2, =WL4                    @ r2     =  window_l[4] == window_s[1]
-    movs    r5, r5, lsr #28
-    adc     r7, r5, r6, lsl #4          @ r7 = bits[59..28] of windowed x6
-
-    smull   r5, r6, r2, r8              @ r5..r6 = (window_l[4] * x[7])
-    ldr     r3, =WL7                    @ r3     =  window_l[7] == window_s[2]
-    movs    r5, r5, lsr #28
-    adc     r8, r5, r6, lsl #4          @ r8 = bits[59..28] of windowed x7
-
-    smull   r5, r6, r3, r9              @ r5..r6 = (window_l[7] * x[8])
-    ldr     r4, =WL10                   @ r4     =  window_l[10] == window_s[3]
-    movs    r5, r5, lsr #28
-    adc     r9, r5, r6, lsl #4          @ r9 = bits[59..28] of windowed x8
-
-    smull   r5, r6, r4, r10             @ r5..r6 = (window_l[10] * (x[9] == -x[8]))
-    ldr     r0, =WL13                   @ r0     =  window_l[13] == window_s[4]
-    movs    r5, r5, lsr #28
-    adc     r10, r5, r6, lsl #4         @ r10 = bits[59..28] of windowed x9
-
-    smull   r5, r6, r0, r12             @ r5..r6 = (window_l[13] * (x[10] == -x[7]))
-    ldr     r2, =WL16                   @ r2     =  window_l[16] == window_s[5]
-    movs    r5, r5, lsr #28
-    adc     r12, r5, r6, lsl #4         @ r10 = bits[59..28] of windowed x9
-
-    smull   r5, r6, r2, lr              @ r5..r6 = (window_l[16] * (x[11] == -x[6]))
-
-    ldr     r0, =0x00
-
-    movs    r5, r5, lsr #28
-    adc     lr, r5, r6, lsl #4          @ r10 = bits[59..28] of windowed x9
-
-    stmdb   r1!, { r7 - r10, r12, lr }  @ store windowed x[6] .. x[11]
-
-    ldr     r5, =0x00
-    ldr     r6, =0x00
-    ldr     r2, =0x00
-    ldr     r3, =0x00
-    ldr     r4, =0x00
-
-    stmdb   r1!, { r0, r2 - r6 }        @ store windowed x[0] .. x[5]
-
-    b       normal_block_x18_to_x35
-
-
-    @----
-
-
-start_block_x18_to_x35:
-
-    ldr     r4, =WL1                    @ r0 = window_l[1]  == window_s[0]
-
-    add     r1, r1, #(24*4)             @ r1 = &x[24]
-
-    ldmia   r1, { r0, r2, r3 }          @ load 3 words from x24, dont update pointer
-
-    @ r0     = x24
-    @ r1     = &x[24]
-    @ r2     = x25
-    @ r3     = x26
-    @ r4     = WL1
-    @ r5     = WL4
-    @ r6     = WL7
-    @ r7     = WL10
-    @ r8     = WL13
-    @ r9     = WL16
-    @ r10    = .
-    @ r11    = .
-    @ r12    = .
-    @ lr     = .
-
-    ldr     r5, =WL4                    @ r5 = window_l[4] == window_s[1]
-
-    smull   r10, r11, r4, r0            @ r10..r11 = (window_l[1] * (x[24] == \
                x[29]))
-    ldr     r6, =WL7                    @ r6       =  window_l[7]  == window_s[2]
-    movs    r10, r10, lsr #28
-    adc     lr, r10, r11, lsl #4        @ lr = bits[59..28] of windowed x29
-
-    smull   r10, r11, r5, r2            @ r10..r11 = (window_l[4] * (x[25] == \
                x[28]))
-    ldr     r7, =WL10                   @ r7       =  window_l[10] == window_s[3]
-    movs    r10, r10, lsr #28
-    adc     r12, r10, r11, lsl #4       @ r12 = bits[59..28] of windowed x28
-
-    smull   r10, r11, r6, r3            @ r10..r11 = (window_l[7] * (x[26] == \
                x[27]))
-    ldr     r8, =WL13                   @ r8       =  window_l[13] == window_s[4]
-    movs    r10, r10, lsr #28
-    adc     r4, r10, r11, lsl #4        @ r4 = bits[59..28] of windowed x27
-
-    smull   r10, r11, r7, r3            @ r10..r11 = (window_l[10] * x[26])
-    ldr     r9, =WL16                   @ r9       =  window_l[16] == window_s[5]
-    movs    r10, r10, lsr #28
-    adc     r3, r10, r11, lsl #4        @ r3 = bits[59..28] of windowed x26
-
-    smull   r10, r11, r8, r2            @ r10..r11 = (window_l[13] * x[25])
-    ldr     r5, =0x00
-    movs    r10, r10, lsr #28
-    adc     r2, r10, r11, lsl #4        @ r2 = bits[59..28] of windowed x25
-
-    smull   r10, r11, r9, r0            @ r10..r11 = (window_l[16] * x[24])
-    ldr     r6, =0x00
-    movs    r10, r10, lsr #28
-    adc     r0, r10, r11, lsl #4        @ r0 = bits[59..28] of windowed x24
-
-    stmia   r1!, { r0, r2, r3, r4, r12, lr }    @ store windowed x[24] .. x[29]
-
-    ldr     r7, =0x00
-    ldr     r8, =0x00
-    ldr     r9, =0x00
-    ldr     r10, =0x00
-
-    stmia   r1!, { r5 - r10 }           @ store windowed x[30] .. x[35]
-
-    @----
-    @ NB there are 2 possible exits from this function - this is only one of them
-    @----
-
-    add     sp, sp, #(21*4)             @ return stack frame
-    ldmia   sp!, { r4 - r11, pc }       @ restore callee saved regs, and return
-
-    @----
-    @END
-    @----
-
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/imdct_s.dat
--- a/src/libmad/imdct_s.dat	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2004 Underbit Technologies, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: imdct_s.dat,v 1.3 2004/04/22 00:22:41 miguelfreitas Exp $
- */
-
-  /*  0 */  {  MAD_F(0x09bd7ca0) /*  0.608761429 */,
-	      -MAD_F(0x0ec835e8) /* -0.923879533 */,
-	      -MAD_F(0x0216a2a2) /* -0.130526192 */,
-	       MAD_F(0x0fdcf549) /*  0.991444861 */,
-	      -MAD_F(0x061f78aa) /* -0.382683432 */,
-	      -MAD_F(0x0cb19346) /* -0.793353340 */ },
-
-  /*  6 */  { -MAD_F(0x0cb19346) /* -0.793353340 */,
-	       MAD_F(0x061f78aa) /*  0.382683432 */,
-	       MAD_F(0x0fdcf549) /*  0.991444861 */,
-	       MAD_F(0x0216a2a2) /*  0.130526192 */,
-	      -MAD_F(0x0ec835e8) /* -0.923879533 */,
-	      -MAD_F(0x09bd7ca0) /* -0.608761429 */ },
-
-  /*  1 */  {  MAD_F(0x061f78aa) /*  0.382683432 */,
-	      -MAD_F(0x0ec835e8) /* -0.923879533 */,
-	       MAD_F(0x0ec835e8) /*  0.923879533 */,
-	      -MAD_F(0x061f78aa) /* -0.382683432 */,
-	      -MAD_F(0x061f78aa) /* -0.382683432 */,
-	       MAD_F(0x0ec835e8) /*  0.923879533 */ },
-
-  /*  7 */  { -MAD_F(0x0ec835e8) /* -0.923879533 */,
-	      -MAD_F(0x061f78aa) /* -0.382683432 */,
-	       MAD_F(0x061f78aa) /*  0.382683432 */,
-	       MAD_F(0x0ec835e8) /*  0.923879533 */,
-	       MAD_F(0x0ec835e8) /*  0.923879533 */,
-	       MAD_F(0x061f78aa) /*  0.382683432 */ },
-
-  /*  2 */  {  MAD_F(0x0216a2a2) /*  0.130526192 */,
-	      -MAD_F(0x061f78aa) /* -0.382683432 */,
-	       MAD_F(0x09bd7ca0) /*  0.608761429 */,
-	      -MAD_F(0x0cb19346) /* -0.793353340 */,
-	       MAD_F(0x0ec835e8) /*  0.923879533 */,
-	      -MAD_F(0x0fdcf549) /* -0.991444861 */ },
-
-  /*  8 */  { -MAD_F(0x0fdcf549) /* -0.991444861 */,
-	      -MAD_F(0x0ec835e8) /* -0.923879533 */,
-	      -MAD_F(0x0cb19346) /* -0.793353340 */,
-	      -MAD_F(0x09bd7ca0) /* -0.608761429 */,
-	      -MAD_F(0x061f78aa) /* -0.382683432 */,
-	      -MAD_F(0x0216a2a2) /* -0.130526192 */ }
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/layer12.c
--- a/src/libmad/layer12.c	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,534 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2004 Underbit Technologies, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: layer12.c,v 1.3 2004/04/22 00:22:41 miguelfreitas Exp $
- */
-
-# ifdef HAVE_CONFIG_H
-#  include "config.h"
-# endif
-
-# include "global.h"
-
-# ifdef HAVE_LIMITS_H
-#  include <limits.h>
-# else
-#  define CHAR_BIT  8
-# endif
-
-# include "fixed.h"
-# include "bit.h"
-# include "stream.h"
-# include "frame.h"
-# include "layer12.h"
-
-/*
- * scalefactor table
- * used in both Layer I and Layer II decoding
- */
-static
-mad_fixed_t const sf_table[64] = {
-# include "sf_table.dat"
-};
-
-/* --- Layer I ------------------------------------------------------------- */
-
-/* linear scaling table */
-static
-mad_fixed_t const linear_table[14] = {
-  MAD_F(0x15555555),  /* 2^2  / (2^2  - 1) == 1.33333333333333 */
-  MAD_F(0x12492492),  /* 2^3  / (2^3  - 1) == 1.14285714285714 */
-  MAD_F(0x11111111),  /* 2^4  / (2^4  - 1) == 1.06666666666667 */
-  MAD_F(0x10842108),  /* 2^5  / (2^5  - 1) == 1.03225806451613 */
-  MAD_F(0x10410410),  /* 2^6  / (2^6  - 1) == 1.01587301587302 */
-  MAD_F(0x10204081),  /* 2^7  / (2^7  - 1) == 1.00787401574803 */
-  MAD_F(0x10101010),  /* 2^8  / (2^8  - 1) == 1.00392156862745 */
-  MAD_F(0x10080402),  /* 2^9  / (2^9  - 1) == 1.00195694716243 */
-  MAD_F(0x10040100),  /* 2^10 / (2^10 - 1) == 1.00097751710655 */
-  MAD_F(0x10020040),  /* 2^11 / (2^11 - 1) == 1.00048851978505 */
-  MAD_F(0x10010010),  /* 2^12 / (2^12 - 1) == 1.00024420024420 */
-  MAD_F(0x10008004),  /* 2^13 / (2^13 - 1) == 1.00012208521548 */
-  MAD_F(0x10004001),  /* 2^14 / (2^14 - 1) == 1.00006103888177 */
-  MAD_F(0x10002000)   /* 2^15 / (2^15 - 1) == 1.00003051850948 */
-};
-
-/*
- * NAME:	I_sample()
- * DESCRIPTION:	decode one requantized Layer I sample from a bitstream
- */
-static
-mad_fixed_t I_sample(struct mad_bitptr *ptr, unsigned int nb)
-{
-  mad_fixed_t sample;
-
-  sample = mad_bit_read(ptr, nb);
-
-  /* invert most significant bit, extend sign, then scale to fixed format */
-
-  sample ^= 1 << (nb - 1);
-  sample |= -(sample & (1 << (nb - 1)));
-
-  sample <<= MAD_F_FRACBITS - (nb - 1);
-
-  /* requantize the sample */
-
-  /* s'' = (2^nb / (2^nb - 1)) * (s''' + 2^(-nb + 1)) */
-
-  sample += MAD_F_ONE >> (nb - 1);
-
-  return mad_f_mul(sample, linear_table[nb - 2]);
-
-  /* s' = factor * s'' */
-  /* (to be performed by caller) */
-}
-
-/*
- * NAME:	layer->I()
- * DESCRIPTION:	decode a single Layer I frame
- */
-int mad_layer_I(struct mad_stream *stream, struct mad_frame *frame)
-{
-  struct mad_header *header = &frame->header;
-  unsigned int nch, bound, ch, s, sb, nb;
-  unsigned char allocation[2][32], scalefactor[2][32];
-
-  nch = MAD_NCHANNELS(header);
-
-  bound = 32;
-  if (header->mode == MAD_MODE_JOINT_STEREO) {
-    header->flags |= MAD_FLAG_I_STEREO;
-    bound = 4 + header->mode_extension * 4;
-  }
-
-  /* check CRC word */
-
-  if (header->flags & MAD_FLAG_PROTECTION) {
-    header->crc_check =
-      mad_bit_crc(stream->ptr, 4 * (bound * nch + (32 - bound)),
-		  header->crc_check);
-
[... 282 lines omitted ...]
-  }
-
-  for (sb = bound; sb < sblimit; ++sb) {
-    nbal = bitalloc_table[offsets[sb]].nbal;
-
-    allocation[0][sb] =
-    allocation[1][sb] = mad_bit_read(&stream->ptr, nbal);
-  }
-
-  /* decode scalefactor selection info */
-
-  for (sb = 0; sb < sblimit; ++sb) {
-    for (ch = 0; ch < nch; ++ch) {
-      if (allocation[ch][sb])
-	scfsi[ch][sb] = mad_bit_read(&stream->ptr, 2);
-    }
-  }
-
-  /* check CRC word */
-
-  if (header->flags & MAD_FLAG_PROTECTION) {
-    header->crc_check =
-      mad_bit_crc(start, mad_bit_length(&start, &stream->ptr),
-		  header->crc_check);
-
-    if (header->crc_check != header->crc_target &&
-	!(frame->options & MAD_OPTION_IGNORECRC)) {
-      stream->error = MAD_ERROR_BADCRC;
-      return -1;
-    }
-  }
-
-  /* decode scalefactors */
-
-  for (sb = 0; sb < sblimit; ++sb) {
-    for (ch = 0; ch < nch; ++ch) {
-      if (allocation[ch][sb]) {
-	scalefactor[ch][sb][0] = mad_bit_read(&stream->ptr, 6);
-
-	switch (scfsi[ch][sb]) {
-	case 2:
-	  scalefactor[ch][sb][2] =
-	  scalefactor[ch][sb][1] =
-	  scalefactor[ch][sb][0];
-	  break;
-
-	case 0:
-	  scalefactor[ch][sb][1] = mad_bit_read(&stream->ptr, 6);
-	  /* fall through */
-
-	case 1:
-	case 3:
-	  scalefactor[ch][sb][2] = mad_bit_read(&stream->ptr, 6);
-	}
-
-	if (scfsi[ch][sb] & 1)
-	  scalefactor[ch][sb][1] = scalefactor[ch][sb][scfsi[ch][sb] - 1];
-
-# if defined(OPT_STRICT)
-	/*
-	 * Scalefactor index 63 does not appear in Table B.1 of
-	 * ISO/IEC 11172-3. Nonetheless, other implementations accept it,
-	 * so we only reject it if OPT_STRICT is defined.
-	 */
-	if (scalefactor[ch][sb][0] == 63 ||
-	    scalefactor[ch][sb][1] == 63 ||
-	    scalefactor[ch][sb][2] == 63) {
-	  stream->error = MAD_ERROR_BADSCALEFACTOR;
-	  return -1;
-	}
-# endif
-      }
-    }
-  }
-
-  /* decode samples */
-
-  for (gr = 0; gr < 12; ++gr) {
-    for (sb = 0; sb < bound; ++sb) {
-      for (ch = 0; ch < nch; ++ch) {
-	if ((index = allocation[ch][sb])) {
-	  index = offset_table[bitalloc_table[offsets[sb]].offset][index - 1];
-
-	  II_samples(&stream->ptr, &qc_table[index], samples);
-
-	  for (s = 0; s < 3; ++s) {
-	    frame->sbsample[ch][3 * gr + s][sb] =
-	      mad_f_mul(samples[s], sf_table[scalefactor[ch][sb][gr / 4]]);
-	  }
-	}
-	else {
-	  for (s = 0; s < 3; ++s)
-	    frame->sbsample[ch][3 * gr + s][sb] = 0;
-	}
-      }
-    }
-
-    for (sb = bound; sb < sblimit; ++sb) {
-      if ((index = allocation[0][sb])) {
-	index = offset_table[bitalloc_table[offsets[sb]].offset][index - 1];
-
-	II_samples(&stream->ptr, &qc_table[index], samples);
-
-	for (ch = 0; ch < nch; ++ch) {
-	  for (s = 0; s < 3; ++s) {
-	    frame->sbsample[ch][3 * gr + s][sb] =
-	      mad_f_mul(samples[s], sf_table[scalefactor[ch][sb][gr / 4]]);
-	  }
-	}
-      }
-      else {
-	for (ch = 0; ch < nch; ++ch) {
-	  for (s = 0; s < 3; ++s)
-	    frame->sbsample[ch][3 * gr + s][sb] = 0;
-	}
-      }
-    }
-
-    for (ch = 0; ch < nch; ++ch) {
-      for (s = 0; s < 3; ++s) {
-	for (sb = sblimit; sb < 32; ++sb)
-	  frame->sbsample[ch][3 * gr + s][sb] = 0;
-      }
-    }
-  }
-
-  return 0;
-}
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/layer12.h
--- a/src/libmad/layer12.h	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2004 Underbit Technologies, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: layer12.h,v 1.3 2004/04/22 00:22:49 miguelfreitas Exp $
- */
-
-# ifndef LIBMAD_LAYER12_H
-# define LIBMAD_LAYER12_H
-
-# include "stream.h"
-# include "frame.h"
-
-int mad_layer_I(struct mad_stream *, struct mad_frame *);
-int mad_layer_II(struct mad_stream *, struct mad_frame *);
-
-# endif
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/layer3.c
--- a/src/libmad/layer3.c	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2698 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2004 Underbit Technologies, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: layer3.c,v 1.7 2006/09/26 00:12:20 dgp85 Exp $
- */
-
-# ifdef HAVE_CONFIG_H
-#  include "config.h"
-# endif
-
-# include "global.h"
-
-# include <stdlib.h>
-# include <string.h>
-
-# ifdef HAVE_ASSERT_H
-#  include <assert.h>
-# endif
-
-# ifdef HAVE_LIMITS_H
-#  include <limits.h>
-# else
-#  define CHAR_BIT  8
-# endif
-
-# include "fixed.h"
-# include "bit.h"
-# include "stream.h"
-# include "frame.h"
-# include "huffman.h"
-# include "layer3.h"
-
-/* --- Layer III ----------------------------------------------------------- */
-
-enum {
-  count1table_select = 0x01,
-  scalefac_scale     = 0x02,
-  preflag	     = 0x04,
-  mixed_block_flag   = 0x08
-};
-
-enum {
-  I_STEREO  = 0x1,
-  MS_STEREO = 0x2
-};
-
-struct sideinfo {
-  unsigned int main_data_begin;
-  unsigned int private_bits;
-
-  unsigned char scfsi[2];
-
-  struct granule {
-    struct channel {
-      /* from side info */
-      unsigned short part2_3_length;
-      unsigned short big_values;
-      unsigned short global_gain;
-      unsigned short scalefac_compress;
-
-      unsigned char flags;
-      unsigned char block_type;
-      unsigned char table_select[3];
-      unsigned char subblock_gain[3];
-      unsigned char region0_count;
-      unsigned char region1_count;
-
-      /* from main_data */
-      unsigned char scalefac[39];	/* scalefac_l and/or scalefac_s */
-    } ch[2];
-  } gr[2];
-};
-
-/*
- * scalefactor bit lengths
- * derived from section 2.4.2.7 of ISO/IEC 11172-3
- */
-static
-struct {
-  unsigned char slen1;
-  unsigned char slen2;
-} const sflen_table[16] = {
-  { 0, 0 }, { 0, 1 }, { 0, 2 }, { 0, 3 },
-  { 3, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
-  { 2, 1 }, { 2, 2 }, { 2, 3 }, { 3, 1 },
-  { 3, 2 }, { 3, 3 }, { 4, 2 }, { 4, 3 }
-};
-
-/*
- * number of LSF scalefactor band values
- * derived from section 2.4.3.2 of ISO/IEC 13818-3
- */
-static
-unsigned char const nsfb_table[6][3][4] = {
-  { {  6,  5,  5, 5 },
-    {  9,  9,  9, 9 },
-    {  6,  9,  9, 9 } },
-
-  { {  6,  5,  7, 3 },
-    {  9,  9, 12, 6 },
-    {  6,  9, 12, 6 } },
-
-  { { 11, 10,  0, 0 },
-    { 18, 18,  0, 0 },
-    { 15, 18,  0, 0 } },
-
-  { {  7,  7,  7, 0 },
-    { 12, 12, 12, 0 },
-    {  6, 15, 12, 0 } },
[... 2446 lines omitted ...]
-  /* decode frame side information */
-
-  error = III_sideinfo(&stream->ptr, nch, header->flags & MAD_FLAG_LSF_EXT,
-		       &si, &data_bitlen, &priv_bitlen);
-  if (error && result == 0) {
-    stream->error = error;
-    result = -1;
-  }
-
-  header->flags        |= priv_bitlen;
-  header->private_bits |= si.private_bits;
-
-  /* find main_data of next frame */
-
-  {
-    struct mad_bitptr peek;
-    unsigned long header;
-
-    mad_bit_init(&peek, stream->next_frame);
-
-    header = mad_bit_read(&peek, 32);
-    if ((header & 0xffe60000L) /* syncword | layer */ == 0xffe20000L) {
-      if (!(header & 0x00010000L))  /* protection_bit */
-	mad_bit_skip(&peek, 16);  /* crc_check */
-
-      next_md_begin =
-	mad_bit_read(&peek, (header & 0x00080000L) /* ID */ ? 9 : 8);
-    }
-
-    mad_bit_finish(&peek);
-  }
-
-  /* find main_data of this frame */
-
-  frame_space = stream->next_frame - mad_bit_nextbyte(&stream->ptr);
-
-  if (next_md_begin > si.main_data_begin + frame_space)
-    next_md_begin = 0;
-
-  md_len = si.main_data_begin + frame_space - next_md_begin;
-
-  frame_used = 0;
-
-  if (si.main_data_begin == 0) {
-    ptr = stream->ptr;
-    stream->md_len = 0;
-
-    frame_used = md_len;
-  }
-  else {
-    if (si.main_data_begin > stream->md_len) {
-      if (result == 0) {
-	stream->error = MAD_ERROR_BADDATAPTR;
-	result = -1;
-      }
-    }
-    else {
-      mad_bit_init(&ptr,
-		   *stream->main_data + stream->md_len - si.main_data_begin);
-
-      if (md_len > si.main_data_begin) {
-	assert(stream->md_len + md_len -
-	       si.main_data_begin <= MAD_BUFFER_MDLEN);
-
-	memcpy(*stream->main_data + stream->md_len,
-	       mad_bit_nextbyte(&stream->ptr),
-	       frame_used = md_len - si.main_data_begin);
-	stream->md_len += frame_used;
-      }
-    }
-  }
-
-  frame_free = frame_space - frame_used;
-
-  /* decode main_data */
-
-  if (result == 0) {
-    error = III_decode(&ptr, frame, &si, nch);
-    if (error) {
-      stream->error = error;
-      result = -1;
-    }
-
-    /* designate ancillary bits */
-
-    stream->anc_ptr    = ptr;
-    stream->anc_bitlen = md_len * CHAR_BIT - data_bitlen;
-  }
-
-# if 0 && defined(DEBUG)
-  fprintf(stderr,
-	  "main_data_begin:%u, md_len:%u, frame_free:%u, "
-	  "data_bitlen:%u, anc_bitlen: %u\n",
-	  si.main_data_begin, md_len, frame_free,
-	  data_bitlen, stream->anc_bitlen);
-# endif
-
-  /* preload main_data buffer with up to 511 bytes for next frame(s) */
-
-  if (frame_free >= next_md_begin) {
-    memcpy(*stream->main_data,
-	   stream->next_frame - next_md_begin, next_md_begin);
-    stream->md_len = next_md_begin;
-  }
-  else {
-    if (md_len < si.main_data_begin) {
-      unsigned int extra;
-
-      extra = si.main_data_begin - md_len;
-      if (extra + frame_free > next_md_begin)
-	extra = next_md_begin - frame_free;
-
-      if (extra < stream->md_len) {
-	memmove(*stream->main_data,
-		*stream->main_data + stream->md_len - extra, extra);
-	stream->md_len = extra;
-      }
-    }
-    else
-      stream->md_len = 0;
-
-    memcpy(*stream->main_data + stream->md_len,
-	   stream->next_frame - frame_free, frame_free);
-    stream->md_len += frame_free;
-  }
-
-  return result;
-}
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/layer3.h
--- a/src/libmad/layer3.h	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2004 Underbit Technologies, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: layer3.h,v 1.3 2004/04/22 00:23:06 miguelfreitas Exp $
- */
-
-# ifndef LIBMAD_LAYER3_H
-# define LIBMAD_LAYER3_H
-
-# include "stream.h"
-# include "frame.h"
-
-int mad_layer_III(struct mad_stream *, struct mad_frame *);
-
-# endif
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/qc_table.dat
--- a/src/libmad/qc_table.dat	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2001 Robert Leslie
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: qc_table.dat,v 1.2 2002/04/30 18:46:58 miguelfreitas Exp $
- */
-
-/*
- * These are the Layer II classes of quantization.
- * The table is derived from Table B.4 of ISO/IEC 11172-3.
- */
-
-  {     3, 2,  5,
-    MAD_F(0x15555555) /* 1.33333333333 => 1.33333333209, e  0.00000000124 */,
-    MAD_F(0x08000000) /* 0.50000000000 => 0.50000000000, e  0.00000000000 */ },
-  {     5, 3,  7,
-    MAD_F(0x1999999a) /* 1.60000000000 => 1.60000000149, e -0.00000000149 */,
-    MAD_F(0x08000000) /* 0.50000000000 => 0.50000000000, e  0.00000000000 */ },
-  {     7, 0,  3,
-    MAD_F(0x12492492) /* 1.14285714286 => 1.14285714179, e  0.00000000107 */,
-    MAD_F(0x04000000) /* 0.25000000000 => 0.25000000000, e  0.00000000000 */ },
-  {     9, 4, 10,
-    MAD_F(0x1c71c71c) /* 1.77777777777 => 1.77777777612, e  0.00000000165 */,
-    MAD_F(0x08000000) /* 0.50000000000 => 0.50000000000, e  0.00000000000 */ },
-  {    15, 0,  4,
-    MAD_F(0x11111111) /* 1.06666666666 => 1.06666666642, e  0.00000000024 */,
-    MAD_F(0x02000000) /* 0.12500000000 => 0.12500000000, e  0.00000000000 */ },
-  {    31, 0,  5,
-    MAD_F(0x10842108) /* 1.03225806452 => 1.03225806355, e  0.00000000097 */,
-    MAD_F(0x01000000) /* 0.06250000000 => 0.06250000000, e  0.00000000000 */ },
-  {    63, 0,  6,
-    MAD_F(0x10410410) /* 1.01587301587 => 1.01587301493, e  0.00000000094 */,
-    MAD_F(0x00800000) /* 0.03125000000 => 0.03125000000, e  0.00000000000 */ },
-  {   127, 0,  7,
-    MAD_F(0x10204081) /* 1.00787401575 => 1.00787401572, e  0.00000000003 */,
-    MAD_F(0x00400000) /* 0.01562500000 => 0.01562500000, e  0.00000000000 */ },
-  {   255, 0,  8,
-    MAD_F(0x10101010) /* 1.00392156863 => 1.00392156839, e  0.00000000024 */,
-    MAD_F(0x00200000) /* 0.00781250000 => 0.00781250000, e  0.00000000000 */ },
-  {   511, 0,  9,
-    MAD_F(0x10080402) /* 1.00195694716 => 1.00195694715, e  0.00000000001 */,
-    MAD_F(0x00100000) /* 0.00390625000 => 0.00390625000, e  0.00000000000 */ },
-  {  1023, 0, 10,
-    MAD_F(0x10040100) /* 1.00097751711 => 1.00097751617, e  0.00000000094 */,
-    MAD_F(0x00080000) /* 0.00195312500 => 0.00195312500, e  0.00000000000 */ },
-  {  2047, 0, 11,
-    MAD_F(0x10020040) /* 1.00048851979 => 1.00048851967, e  0.00000000012 */,
-    MAD_F(0x00040000) /* 0.00097656250 => 0.00097656250, e  0.00000000000 */ },
-  {  4095, 0, 12,
-    MAD_F(0x10010010) /* 1.00024420024 => 1.00024420023, e  0.00000000001 */,
-    MAD_F(0x00020000) /* 0.00048828125 => 0.00048828125, e  0.00000000000 */ },
-  {  8191, 0, 13,
-    MAD_F(0x10008004) /* 1.00012208522 => 1.00012208521, e  0.00000000001 */,
-    MAD_F(0x00010000) /* 0.00024414063 => 0.00024414062, e  0.00000000000 */ },
-  { 16383, 0, 14,
-    MAD_F(0x10004001) /* 1.00006103888 => 1.00006103888, e -0.00000000000 */,
-    MAD_F(0x00008000) /* 0.00012207031 => 0.00012207031, e -0.00000000000 */ },
-  { 32767, 0, 15,
-    MAD_F(0x10002000) /* 1.00003051851 => 1.00003051758, e  0.00000000093 */,
-    MAD_F(0x00004000) /* 0.00006103516 => 0.00006103516, e  0.00000000000 */ },
-  { 65535, 0, 16,
-    MAD_F(0x10001000) /* 1.00001525902 => 1.00001525879, e  0.00000000023 */,
-    MAD_F(0x00002000) /* 0.00003051758 => 0.00003051758, e  0.00000000000 */ }
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/rq_table.dat
--- a/src/libmad/rq_table.dat	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8747 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2001 Robert Leslie
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: rq_table.dat,v 1.2 2002/04/30 18:46:58 miguelfreitas Exp $
- */
-
-/*
- * This is the lookup table used to compute x^(4/3) for Layer III
- * requantization. To maintain the best possible accuracy, the value is
- * stored as a normalized mantissa with exponent. The requantization
- * algorithm recombines these parts with appropriate scaling.
- */
-
-  /*    0 */  { MAD_F(0x00000000) /* 0.000000000 */,  0 },
-  /*    1 */  { MAD_F(0x04000000) /* 0.250000000 */,  2 },
-  /*    2 */  { MAD_F(0x050a28be) /* 0.314980262 */,  3 },
-  /*    3 */  { MAD_F(0x0453a5cd) /* 0.270421794 */,  4 },
-  /*    4 */  { MAD_F(0x06597fa9) /* 0.396850263 */,  4 },
-  /*    5 */  { MAD_F(0x04466275) /* 0.267183742 */,  5 },
-  /*    6 */  { MAD_F(0x05738c72) /* 0.340710111 */,  5 },
-  /*    7 */  { MAD_F(0x06b1fc81) /* 0.418453696 */,  5 },
-  /*    8 */  { MAD_F(0x04000000) /* 0.250000000 */,  6 },
-  /*    9 */  { MAD_F(0x04ae20d7) /* 0.292511788 */,  6 },
-  /*   10 */  { MAD_F(0x0562d694) /* 0.336630420 */,  6 },
-  /*   11 */  { MAD_F(0x061dae96) /* 0.382246578 */,  6 },
-  /*   12 */  { MAD_F(0x06de47f4) /* 0.429267841 */,  6 },
-  /*   13 */  { MAD_F(0x07a44f7a) /* 0.477614858 */,  6 },
-  /*   14 */  { MAD_F(0x0437be65) /* 0.263609310 */,  7 },
-  /*   15 */  { MAD_F(0x049fc824) /* 0.289009227 */,  7 },
-
-  /*   16 */  { MAD_F(0x050a28be) /* 0.314980262 */,  7 },
-  /*   17 */  { MAD_F(0x0576c6f5) /* 0.341498336 */,  7 },
-  /*   18 */  { MAD_F(0x05e58c0b) /* 0.368541759 */,  7 },
-  /*   19 */  { MAD_F(0x06566361) /* 0.396090870 */,  7 },
-  /*   20 */  { MAD_F(0x06c93a2e) /* 0.424127753 */,  7 },
-  /*   21 */  { MAD_F(0x073dff3e) /* 0.452635998 */,  7 },
-  /*   22 */  { MAD_F(0x07b4a2bc) /* 0.481600510 */,  7 },
-  /*   23 */  { MAD_F(0x04168b05) /* 0.255503674 */,  8 },
-  /*   24 */  { MAD_F(0x0453a5cd) /* 0.270421794 */,  8 },
-  /*   25 */  { MAD_F(0x04919b6a) /* 0.285548607 */,  8 },
-  /*   26 */  { MAD_F(0x04d065fb) /* 0.300878507 */,  8 },
-  /*   27 */  { MAD_F(0x05100000) /* 0.316406250 */,  8 },
-  /*   28 */  { MAD_F(0x05506451) /* 0.332126919 */,  8 },
-  /*   29 */  { MAD_F(0x05918e15) /* 0.348035890 */,  8 },
-  /*   30 */  { MAD_F(0x05d378bb) /* 0.364128809 */,  8 },
-  /*   31 */  { MAD_F(0x06161ff3) /* 0.380401563 */,  8 },
-
-  /*   32 */  { MAD_F(0x06597fa9) /* 0.396850263 */,  8 },
-  /*   33 */  { MAD_F(0x069d9400) /* 0.413471222 */,  8 },
-  /*   34 */  { MAD_F(0x06e2594c) /* 0.430260942 */,  8 },
-  /*   35 */  { MAD_F(0x0727cc11) /* 0.447216097 */,  8 },
-  /*   36 */  { MAD_F(0x076de8fc) /* 0.464333519 */,  8 },
-  /*   37 */  { MAD_F(0x07b4ace3) /* 0.481610189 */,  8 },
-  /*   38 */  { MAD_F(0x07fc14bf) /* 0.499043224 */,  8 },
-  /*   39 */  { MAD_F(0x04220ed7) /* 0.258314934 */,  9 },
-  /*   40 */  { MAD_F(0x04466275) /* 0.267183742 */,  9 },
-  /*   41 */  { MAD_F(0x046b03e7) /* 0.276126771 */,  9 },
-  /*   42 */  { MAD_F(0x048ff1e8) /* 0.285142811 */,  9 },
-  /*   43 */  { MAD_F(0x04b52b3f) /* 0.294230696 */,  9 },
-  /*   44 */  { MAD_F(0x04daaec0) /* 0.303389310 */,  9 },
-  /*   45 */  { MAD_F(0x05007b49) /* 0.312617576 */,  9 },
-  /*   46 */  { MAD_F(0x05268fc6) /* 0.321914457 */,  9 },
-  /*   47 */  { MAD_F(0x054ceb2a) /* 0.331278957 */,  9 },
-
-  /*   48 */  { MAD_F(0x05738c72) /* 0.340710111 */,  9 },
-  /*   49 */  { MAD_F(0x059a72a5) /* 0.350206992 */,  9 },
-  /*   50 */  { MAD_F(0x05c19cd3) /* 0.359768701 */,  9 },
-  /*   51 */  { MAD_F(0x05e90a12) /* 0.369394372 */,  9 },
-  /*   52 */  { MAD_F(0x0610b982) /* 0.379083164 */,  9 },
-  /*   53 */  { MAD_F(0x0638aa48) /* 0.388834268 */,  9 },
-  /*   54 */  { MAD_F(0x0660db91) /* 0.398646895 */,  9 },
-  /*   55 */  { MAD_F(0x06894c90) /* 0.408520284 */,  9 },
-  /*   56 */  { MAD_F(0x06b1fc81) /* 0.418453696 */,  9 },
-  /*   57 */  { MAD_F(0x06daeaa1) /* 0.428446415 */,  9 },
-  /*   58 */  { MAD_F(0x07041636) /* 0.438497744 */,  9 },
-  /*   59 */  { MAD_F(0x072d7e8b) /* 0.448607009 */,  9 },
-  /*   60 */  { MAD_F(0x075722ef) /* 0.458773552 */,  9 },
-  /*   61 */  { MAD_F(0x078102b8) /* 0.468996735 */,  9 },
-  /*   62 */  { MAD_F(0x07ab1d3e) /* 0.479275937 */,  9 },
-  /*   63 */  { MAD_F(0x07d571e0) /* 0.489610555 */,  9 },
-
-  /*   64 */  { MAD_F(0x04000000) /* 0.250000000 */, 10 },
-  /*   65 */  { MAD_F(0x04156381) /* 0.255221850 */, 10 },
-  /*   66 */  { MAD_F(0x042ae32a) /* 0.260470548 */, 10 },
-  /*   67 */  { MAD_F(0x04407eb1) /* 0.265745823 */, 10 },
-  /*   68 */  { MAD_F(0x045635cf) /* 0.271047409 */, 10 },
-  /*   69 */  { MAD_F(0x046c083e) /* 0.276375048 */, 10 },
-  /*   70 */  { MAD_F(0x0481f5bb) /* 0.281728487 */, 10 },
-  /*   71 */  { MAD_F(0x0497fe03) /* 0.287107481 */, 10 },
-  /*   72 */  { MAD_F(0x04ae20d7) /* 0.292511788 */, 10 },
-  /*   73 */  { MAD_F(0x04c45df6) /* 0.297941173 */, 10 },
-  /*   74 */  { MAD_F(0x04dab524) /* 0.303395408 */, 10 },
-  /*   75 */  { MAD_F(0x04f12624) /* 0.308874267 */, 10 },
-  /*   76 */  { MAD_F(0x0507b0bc) /* 0.314377532 */, 10 },
-  /*   77 */  { MAD_F(0x051e54b1) /* 0.319904987 */, 10 },
-  /*   78 */  { MAD_F(0x053511cb) /* 0.325456423 */, 10 },
-  /*   79 */  { MAD_F(0x054be7d4) /* 0.331031635 */, 10 },
-
-  /*   80 */  { MAD_F(0x0562d694) /* 0.336630420 */, 10 },
-  /*   81 */  { MAD_F(0x0579ddd8) /* 0.342252584 */, 10 },
-  /*   82 */  { MAD_F(0x0590fd6c) /* 0.347897931 */, 10 },
-  /*   83 */  { MAD_F(0x05a8351c) /* 0.353566275 */, 10 },
-  /*   84 */  { MAD_F(0x05bf84b8) /* 0.359257429 */, 10 },
-  /*   85 */  { MAD_F(0x05d6ec0e) /* 0.364971213 */, 10 },
-  /*   86 */  { MAD_F(0x05ee6aef) /* 0.370707448 */, 10 },
-  /*   87 */  { MAD_F(0x0606012b) /* 0.376465960 */, 10 },
-  /*   88 */  { MAD_F(0x061dae96) /* 0.382246578 */, 10 },
-  /*   89 */  { MAD_F(0x06357302) /* 0.388049134 */, 10 },
-  /*   90 */  { MAD_F(0x064d4e43) /* 0.393873464 */, 10 },
[... 8495 lines omitted ...]
-  /* 8086 */  { MAD_F(0x04f3f2dd) /* 0.309557786 */, 19 },
-  /* 8087 */  { MAD_F(0x04f42864) /* 0.309608831 */, 19 },
-  /* 8088 */  { MAD_F(0x04f45dea) /* 0.309659879 */, 19 },
-  /* 8089 */  { MAD_F(0x04f49372) /* 0.309710928 */, 19 },
-  /* 8090 */  { MAD_F(0x04f4c8fa) /* 0.309761980 */, 19 },
-  /* 8091 */  { MAD_F(0x04f4fe83) /* 0.309813033 */, 19 },
-  /* 8092 */  { MAD_F(0x04f5340c) /* 0.309864089 */, 19 },
-  /* 8093 */  { MAD_F(0x04f56996) /* 0.309915147 */, 19 },
-  /* 8094 */  { MAD_F(0x04f59f20) /* 0.309966207 */, 19 },
-  /* 8095 */  { MAD_F(0x04f5d4ab) /* 0.310017269 */, 19 },
-
-  /* 8096 */  { MAD_F(0x04f60a36) /* 0.310068333 */, 19 },
-  /* 8097 */  { MAD_F(0x04f63fc2) /* 0.310119400 */, 19 },
-  /* 8098 */  { MAD_F(0x04f6754f) /* 0.310170468 */, 19 },
-  /* 8099 */  { MAD_F(0x04f6aadc) /* 0.310221539 */, 19 },
-  /* 8100 */  { MAD_F(0x04f6e06a) /* 0.310272611 */, 19 },
-  /* 8101 */  { MAD_F(0x04f715f8) /* 0.310323686 */, 19 },
-  /* 8102 */  { MAD_F(0x04f74b87) /* 0.310374763 */, 19 },
-  /* 8103 */  { MAD_F(0x04f78116) /* 0.310425842 */, 19 },
-  /* 8104 */  { MAD_F(0x04f7b6a6) /* 0.310476923 */, 19 },
-  /* 8105 */  { MAD_F(0x04f7ec37) /* 0.310528006 */, 19 },
-  /* 8106 */  { MAD_F(0x04f821c8) /* 0.310579091 */, 19 },
-  /* 8107 */  { MAD_F(0x04f85759) /* 0.310630179 */, 19 },
-  /* 8108 */  { MAD_F(0x04f88cec) /* 0.310681268 */, 19 },
-  /* 8109 */  { MAD_F(0x04f8c27e) /* 0.310732360 */, 19 },
-  /* 8110 */  { MAD_F(0x04f8f812) /* 0.310783453 */, 19 },
-  /* 8111 */  { MAD_F(0x04f92da6) /* 0.310834549 */, 19 },
-
-  /* 8112 */  { MAD_F(0x04f9633a) /* 0.310885647 */, 19 },
-  /* 8113 */  { MAD_F(0x04f998cf) /* 0.310936747 */, 19 },
-  /* 8114 */  { MAD_F(0x04f9ce65) /* 0.310987849 */, 19 },
-  /* 8115 */  { MAD_F(0x04fa03fb) /* 0.311038953 */, 19 },
-  /* 8116 */  { MAD_F(0x04fa3992) /* 0.311090059 */, 19 },
-  /* 8117 */  { MAD_F(0x04fa6f29) /* 0.311141168 */, 19 },
-  /* 8118 */  { MAD_F(0x04faa4c1) /* 0.311192278 */, 19 },
-  /* 8119 */  { MAD_F(0x04fada59) /* 0.311243390 */, 19 },
-  /* 8120 */  { MAD_F(0x04fb0ff2) /* 0.311294505 */, 19 },
-  /* 8121 */  { MAD_F(0x04fb458c) /* 0.311345622 */, 19 },
-  /* 8122 */  { MAD_F(0x04fb7b26) /* 0.311396741 */, 19 },
-  /* 8123 */  { MAD_F(0x04fbb0c1) /* 0.311447862 */, 19 },
-  /* 8124 */  { MAD_F(0x04fbe65c) /* 0.311498985 */, 19 },
-  /* 8125 */  { MAD_F(0x04fc1bf8) /* 0.311550110 */, 19 },
-  /* 8126 */  { MAD_F(0x04fc5194) /* 0.311601237 */, 19 },
-  /* 8127 */  { MAD_F(0x04fc8731) /* 0.311652366 */, 19 },
-
-  /* 8128 */  { MAD_F(0x04fcbcce) /* 0.311703498 */, 19 },
-  /* 8129 */  { MAD_F(0x04fcf26c) /* 0.311754631 */, 19 },
-  /* 8130 */  { MAD_F(0x04fd280b) /* 0.311805767 */, 19 },
-  /* 8131 */  { MAD_F(0x04fd5daa) /* 0.311856905 */, 19 },
-  /* 8132 */  { MAD_F(0x04fd934a) /* 0.311908044 */, 19 },
-  /* 8133 */  { MAD_F(0x04fdc8ea) /* 0.311959186 */, 19 },
-  /* 8134 */  { MAD_F(0x04fdfe8b) /* 0.312010330 */, 19 },
-  /* 8135 */  { MAD_F(0x04fe342c) /* 0.312061476 */, 19 },
-  /* 8136 */  { MAD_F(0x04fe69ce) /* 0.312112625 */, 19 },
-  /* 8137 */  { MAD_F(0x04fe9f71) /* 0.312163775 */, 19 },
-  /* 8138 */  { MAD_F(0x04fed514) /* 0.312214927 */, 19 },
-  /* 8139 */  { MAD_F(0x04ff0ab8) /* 0.312266082 */, 19 },
-  /* 8140 */  { MAD_F(0x04ff405c) /* 0.312317238 */, 19 },
-  /* 8141 */  { MAD_F(0x04ff7601) /* 0.312368397 */, 19 },
-  /* 8142 */  { MAD_F(0x04ffaba6) /* 0.312419558 */, 19 },
-  /* 8143 */  { MAD_F(0x04ffe14c) /* 0.312470720 */, 19 },
-
-  /* 8144 */  { MAD_F(0x050016f3) /* 0.312521885 */, 19 },
-  /* 8145 */  { MAD_F(0x05004c9a) /* 0.312573052 */, 19 },
-  /* 8146 */  { MAD_F(0x05008241) /* 0.312624222 */, 19 },
-  /* 8147 */  { MAD_F(0x0500b7e9) /* 0.312675393 */, 19 },
-  /* 8148 */  { MAD_F(0x0500ed92) /* 0.312726566 */, 19 },
-  /* 8149 */  { MAD_F(0x0501233b) /* 0.312777742 */, 19 },
-  /* 8150 */  { MAD_F(0x050158e5) /* 0.312828919 */, 19 },
-  /* 8151 */  { MAD_F(0x05018e90) /* 0.312880099 */, 19 },
-  /* 8152 */  { MAD_F(0x0501c43b) /* 0.312931280 */, 19 },
-  /* 8153 */  { MAD_F(0x0501f9e6) /* 0.312982464 */, 19 },
-  /* 8154 */  { MAD_F(0x05022f92) /* 0.313033650 */, 19 },
-  /* 8155 */  { MAD_F(0x0502653f) /* 0.313084838 */, 19 },
-  /* 8156 */  { MAD_F(0x05029aec) /* 0.313136028 */, 19 },
-  /* 8157 */  { MAD_F(0x0502d09a) /* 0.313187220 */, 19 },
-  /* 8158 */  { MAD_F(0x05030648) /* 0.313238414 */, 19 },
-  /* 8159 */  { MAD_F(0x05033bf7) /* 0.313289611 */, 19 },
-
-  /* 8160 */  { MAD_F(0x050371a7) /* 0.313340809 */, 19 },
-  /* 8161 */  { MAD_F(0x0503a757) /* 0.313392010 */, 19 },
-  /* 8162 */  { MAD_F(0x0503dd07) /* 0.313443212 */, 19 },
-  /* 8163 */  { MAD_F(0x050412b9) /* 0.313494417 */, 19 },
-  /* 8164 */  { MAD_F(0x0504486a) /* 0.313545624 */, 19 },
-  /* 8165 */  { MAD_F(0x05047e1d) /* 0.313596833 */, 19 },
-  /* 8166 */  { MAD_F(0x0504b3cf) /* 0.313648044 */, 19 },
-  /* 8167 */  { MAD_F(0x0504e983) /* 0.313699257 */, 19 },
-  /* 8168 */  { MAD_F(0x05051f37) /* 0.313750472 */, 19 },
-  /* 8169 */  { MAD_F(0x050554eb) /* 0.313801689 */, 19 },
-  /* 8170 */  { MAD_F(0x05058aa0) /* 0.313852909 */, 19 },
-  /* 8171 */  { MAD_F(0x0505c056) /* 0.313904130 */, 19 },
-  /* 8172 */  { MAD_F(0x0505f60c) /* 0.313955354 */, 19 },
-  /* 8173 */  { MAD_F(0x05062bc3) /* 0.314006579 */, 19 },
-  /* 8174 */  { MAD_F(0x0506617a) /* 0.314057807 */, 19 },
-  /* 8175 */  { MAD_F(0x05069732) /* 0.314109037 */, 19 },
-
-  /* 8176 */  { MAD_F(0x0506cceb) /* 0.314160269 */, 19 },
-  /* 8177 */  { MAD_F(0x050702a4) /* 0.314211502 */, 19 },
-  /* 8178 */  { MAD_F(0x0507385d) /* 0.314262739 */, 19 },
-  /* 8179 */  { MAD_F(0x05076e17) /* 0.314313977 */, 19 },
-  /* 8180 */  { MAD_F(0x0507a3d2) /* 0.314365217 */, 19 },
-  /* 8181 */  { MAD_F(0x0507d98d) /* 0.314416459 */, 19 },
-  /* 8182 */  { MAD_F(0x05080f49) /* 0.314467704 */, 19 },
-  /* 8183 */  { MAD_F(0x05084506) /* 0.314518950 */, 19 },
-  /* 8184 */  { MAD_F(0x05087ac2) /* 0.314570199 */, 19 },
-  /* 8185 */  { MAD_F(0x0508b080) /* 0.314621449 */, 19 },
-  /* 8186 */  { MAD_F(0x0508e63e) /* 0.314672702 */, 19 },
-  /* 8187 */  { MAD_F(0x05091bfd) /* 0.314723957 */, 19 },
-  /* 8188 */  { MAD_F(0x050951bc) /* 0.314775214 */, 19 },
-  /* 8189 */  { MAD_F(0x0509877c) /* 0.314826473 */, 19 },
-  /* 8190 */  { MAD_F(0x0509bd3c) /* 0.314877734 */, 19 },
-  /* 8191 */  { MAD_F(0x0509f2fd) /* 0.314928997 */, 19 },
-
-  /* 8192 */  { MAD_F(0x050a28be) /* 0.314980262 */, 19 },
-  /* 8193 */  { MAD_F(0x050a5e80) /* 0.315031530 */, 19 },
-  /* 8194 */  { MAD_F(0x050a9443) /* 0.315082799 */, 19 },
-  /* 8195 */  { MAD_F(0x050aca06) /* 0.315134071 */, 19 },
-  /* 8196 */  { MAD_F(0x050affc9) /* 0.315185344 */, 19 },
-  /* 8197 */  { MAD_F(0x050b358e) /* 0.315236620 */, 19 },
-  /* 8198 */  { MAD_F(0x050b6b52) /* 0.315287898 */, 19 },
-  /* 8199 */  { MAD_F(0x050ba118) /* 0.315339178 */, 19 },
-  /* 8200 */  { MAD_F(0x050bd6de) /* 0.315390460 */, 19 },
-  /* 8201 */  { MAD_F(0x050c0ca4) /* 0.315441744 */, 19 },
-  /* 8202 */  { MAD_F(0x050c426b) /* 0.315493030 */, 19 },
-  /* 8203 */  { MAD_F(0x050c7833) /* 0.315544318 */, 19 },
-  /* 8204 */  { MAD_F(0x050cadfb) /* 0.315595608 */, 19 },
-  /* 8205 */  { MAD_F(0x050ce3c4) /* 0.315646901 */, 19 },
-  /* 8206 */  { MAD_F(0x050d198d) /* 0.315698195 */, 19 }
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/sf_table.dat
--- a/src/libmad/sf_table.dat	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2001 Robert Leslie
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: sf_table.dat,v 1.2 2002/04/30 18:46:58 miguelfreitas Exp $
- */
-
-/*
- * These are the scalefactor values for Layer I and Layer II.
- * The values are from Table B.1 of ISO/IEC 11172-3.
- *
- * There is some error introduced by the 32-bit fixed-point representation;
- * the amount of error is shown. For 16-bit PCM output, this shouldn't be
- * too much of a problem.
- */
-
-  MAD_F(0x20000000),  /* 2.000000000000 => 2.000000000000, e  0.000000000000 */
-  MAD_F(0x1965fea5),  /* 1.587401051968 => 1.587401051074, e  0.000000000894 */
-  MAD_F(0x1428a2fa),  /* 1.259921049895 => 1.259921051562, e -0.000000001667 */
-  MAD_F(0x10000000),  /* 1.000000000000 => 1.000000000000, e  0.000000000000 */
-  MAD_F(0x0cb2ff53),  /* 0.793700525984 => 0.793700527400, e -0.000000001416 */
-  MAD_F(0x0a14517d),  /* 0.629960524947 => 0.629960525781, e -0.000000000833 */
-  MAD_F(0x08000000),  /* 0.500000000000 => 0.500000000000, e  0.000000000000 */
-  MAD_F(0x06597fa9),  /* 0.396850262992 => 0.396850261837, e  0.000000001155 */
-
-  MAD_F(0x050a28be),  /* 0.314980262474 => 0.314980261028, e  0.000000001446 */
-  MAD_F(0x04000000),  /* 0.250000000000 => 0.250000000000, e  0.000000000000 */
-  MAD_F(0x032cbfd5),  /* 0.198425131496 => 0.198425132781, e -0.000000001285 */
-  MAD_F(0x0285145f),  /* 0.157490131237 => 0.157490130514, e  0.000000000723 */
-  MAD_F(0x02000000),  /* 0.125000000000 => 0.125000000000, e  0.000000000000 */
-  MAD_F(0x01965fea),  /* 0.099212565748 => 0.099212564528, e  0.000000001220 */
-  MAD_F(0x01428a30),  /* 0.078745065618 => 0.078745067120, e -0.000000001501 */
-  MAD_F(0x01000000),  /* 0.062500000000 => 0.062500000000, e  0.000000000000 */
-
-  MAD_F(0x00cb2ff5),  /* 0.049606282874 => 0.049606282264, e  0.000000000610 */
-  MAD_F(0x00a14518),  /* 0.039372532809 => 0.039372533560, e -0.000000000751 */
-  MAD_F(0x00800000),  /* 0.031250000000 => 0.031250000000, e  0.000000000000 */
-  MAD_F(0x006597fb),  /* 0.024803141437 => 0.024803142995, e -0.000000001558 */
-  MAD_F(0x0050a28c),  /* 0.019686266405 => 0.019686266780, e -0.000000000375 */
-  MAD_F(0x00400000),  /* 0.015625000000 => 0.015625000000, e  0.000000000000 */
-  MAD_F(0x0032cbfd),  /* 0.012401570719 => 0.012401569635, e  0.000000001084 */
-  MAD_F(0x00285146),  /* 0.009843133202 => 0.009843133390, e -0.000000000188 */
-
-  MAD_F(0x00200000),  /* 0.007812500000 => 0.007812500000, e  0.000000000000 */
-  MAD_F(0x001965ff),  /* 0.006200785359 => 0.006200786680, e -0.000000001321 */
-  MAD_F(0x001428a3),  /* 0.004921566601 => 0.004921566695, e -0.000000000094 */
-  MAD_F(0x00100000),  /* 0.003906250000 => 0.003906250000, e  0.000000000000 */
-  MAD_F(0x000cb2ff),  /* 0.003100392680 => 0.003100391477, e  0.000000001202 */
-  MAD_F(0x000a1451),  /* 0.002460783301 => 0.002460781485, e  0.000000001816 */
-  MAD_F(0x00080000),  /* 0.001953125000 => 0.001953125000, e  0.000000000000 */
-  MAD_F(0x00065980),  /* 0.001550196340 => 0.001550197601, e -0.000000001262 */
-
-  MAD_F(0x00050a29),  /* 0.001230391650 => 0.001230392605, e -0.000000000955 */
-  MAD_F(0x00040000),  /* 0.000976562500 => 0.000976562500, e  0.000000000000 */
-  MAD_F(0x00032cc0),  /* 0.000775098170 => 0.000775098801, e -0.000000000631 */
-  MAD_F(0x00028514),  /* 0.000615195825 => 0.000615194440, e  0.000000001385 */
-  MAD_F(0x00020000),  /* 0.000488281250 => 0.000488281250, e  0.000000000000 */
-  MAD_F(0x00019660),  /* 0.000387549085 => 0.000387549400, e -0.000000000315 */
-  MAD_F(0x0001428a),  /* 0.000307597913 => 0.000307597220, e  0.000000000693 */
-  MAD_F(0x00010000),  /* 0.000244140625 => 0.000244140625, e  0.000000000000 */
-
-  MAD_F(0x0000cb30),  /* 0.000193774542 => 0.000193774700, e -0.000000000158 */
-  MAD_F(0x0000a145),  /* 0.000153798956 => 0.000153798610, e  0.000000000346 */
-  MAD_F(0x00008000),  /* 0.000122070313 => 0.000122070313, e  0.000000000000 */
-  MAD_F(0x00006598),  /* 0.000096887271 => 0.000096887350, e -0.000000000079 */
-  MAD_F(0x000050a3),  /* 0.000076899478 => 0.000076901168, e -0.000000001689 */
-  MAD_F(0x00004000),  /* 0.000061035156 => 0.000061035156, e  0.000000000000 */
-  MAD_F(0x000032cc),  /* 0.000048443636 => 0.000048443675, e -0.000000000039 */
-  MAD_F(0x00002851),  /* 0.000038449739 => 0.000038448721, e  0.000000001018 */
-
-  MAD_F(0x00002000),  /* 0.000030517578 => 0.000030517578, e  0.000000000000 */
-  MAD_F(0x00001966),  /* 0.000024221818 => 0.000024221838, e -0.000000000020 */
-  MAD_F(0x00001429),  /* 0.000019224870 => 0.000019226223, e -0.000000001354 */
-  MAD_F(0x00001000),  /* 0.000015258789 => 0.000015258789, e -0.000000000000 */
-  MAD_F(0x00000cb3),  /* 0.000012110909 => 0.000012110919, e -0.000000000010 */
-  MAD_F(0x00000a14),  /* 0.000009612435 => 0.000009611249, e  0.000000001186 */
-  MAD_F(0x00000800),  /* 0.000007629395 => 0.000007629395, e -0.000000000000 */
-  MAD_F(0x00000659),  /* 0.000006055454 => 0.000006053597, e  0.000000001858 */
-
-  MAD_F(0x0000050a),  /* 0.000004806217 => 0.000004805624, e  0.000000000593 */
-  MAD_F(0x00000400),  /* 0.000003814697 => 0.000003814697, e  0.000000000000 */
-  MAD_F(0x0000032d),  /* 0.000003027727 => 0.000003028661, e -0.000000000934 */
-  MAD_F(0x00000285),  /* 0.000002403109 => 0.000002402812, e  0.000000000296 */
-  MAD_F(0x00000200),  /* 0.000001907349 => 0.000001907349, e -0.000000000000 */
-  MAD_F(0x00000196),  /* 0.000001513864 => 0.000001512468, e  0.000000001396 */
-  MAD_F(0x00000143)   /* 0.000001201554 => 0.000001203269, e -0.000000001714 */
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/stream.c
--- a/src/libmad/stream.c	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2004 Underbit Technologies, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: stream.c,v 1.3 2004/04/22 00:23:07 miguelfreitas Exp $
- */
-
-# ifdef HAVE_CONFIG_H
-#  include "config.h"
-# endif
-
-# include "global.h"
-
-# include <stdlib.h>
-
-# include "bit.h"
-# include "stream.h"
-
-/*
- * NAME:	stream->init()
- * DESCRIPTION:	initialize stream struct
- */
-void mad_stream_init(struct mad_stream *stream)
-{
-  stream->buffer     = 0;
-  stream->bufend     = 0;
-  stream->skiplen    = 0;
-
-  stream->sync       = 0;
-  stream->freerate   = 0;
-
-  stream->this_frame = 0;
-  stream->next_frame = 0;
-  mad_bit_init(&stream->ptr, 0);
-
-  mad_bit_init(&stream->anc_ptr, 0);
-  stream->anc_bitlen = 0;
-
-  stream->main_data  = 0;
-  stream->md_len     = 0;
-
-  stream->options    = 0;
-  stream->error      = MAD_ERROR_NONE;
-}
-
-/*
- * NAME:	stream->finish()
- * DESCRIPTION:	deallocate any dynamic memory associated with stream
- */
-void mad_stream_finish(struct mad_stream *stream)
-{
-  if (stream->main_data) {
-    free(stream->main_data);
-    stream->main_data = 0;
-  }
-
-  mad_bit_finish(&stream->anc_ptr);
-  mad_bit_finish(&stream->ptr);
-}
-
-/*
- * NAME:	stream->buffer()
- * DESCRIPTION:	set stream buffer pointers
- */
-void mad_stream_buffer(struct mad_stream *stream,
-		       unsigned char const *buffer, unsigned long length)
-{
-  stream->buffer = buffer;
-  stream->bufend = buffer + length;
-
-  stream->this_frame = buffer;
-  stream->next_frame = buffer;
-
-  stream->sync = 1;
-
-  mad_bit_init(&stream->ptr, buffer);
-}
-
-/*
- * NAME:	stream->skip()
- * DESCRIPTION:	arrange to skip bytes before the next frame
- */
-void mad_stream_skip(struct mad_stream *stream, unsigned long length)
-{
-  stream->skiplen += length;
-}
-
-/*
- * NAME:	stream->sync()
- * DESCRIPTION:	locate the next stream sync word
- */
-int mad_stream_sync(struct mad_stream *stream)
-{
-  register unsigned char const *ptr, *end;
-
-  ptr = mad_bit_nextbyte(&stream->ptr);
-  end = stream->bufend;
-
-  while (ptr < end - 1 &&
-	 !(ptr[0] == 0xff && (ptr[1] & 0xe0) == 0xe0))
-    ++ptr;
-
-  if (end - ptr < MAD_BUFFER_GUARD)
-    return -1;
-
-  mad_bit_init(&stream->ptr, ptr);
-
-  return 0;
-}
-
-/*
- * NAME:	stream->errorstr()
- * DESCRIPTION:	return a string description of the current error condition
- */
-char const *mad_stream_errorstr(struct mad_stream const *stream)
-{
-  switch (stream->error) {
-  case MAD_ERROR_NONE:		 return "no error";
-
-  case MAD_ERROR_BUFLEN:	 return "input buffer too small (or EOF)";
-  case MAD_ERROR_BUFPTR:	 return "invalid (null) buffer pointer";
-
-  case MAD_ERROR_NOMEM:		 return "not enough memory";
-
-  case MAD_ERROR_LOSTSYNC:	 return "lost synchronization";
-  case MAD_ERROR_BADLAYER:	 return "reserved header layer value";
-  case MAD_ERROR_BADBITRATE:	 return "forbidden bitrate value";
-  case MAD_ERROR_BADSAMPLERATE:	 return "reserved sample frequency value";
-  case MAD_ERROR_BADEMPHASIS:	 return "reserved emphasis value";
-
-  case MAD_ERROR_BADCRC:	 return "CRC check failed";
-  case MAD_ERROR_BADBITALLOC:	 return "forbidden bit allocation value";
-  case MAD_ERROR_BADSCALEFACTOR: return "bad scalefactor index";
-  case MAD_ERROR_BADMODE:	 return "bad bitrate/mode combination";
-  case MAD_ERROR_BADFRAMELEN:	 return "bad frame length";
-  case MAD_ERROR_BADBIGVALUES:	 return "bad big_values count";
-  case MAD_ERROR_BADBLOCKTYPE:	 return "reserved block_type";
-  case MAD_ERROR_BADSCFSI:	 return "bad scalefactor selection info";
-  case MAD_ERROR_BADDATAPTR:	 return "bad main_data_begin pointer";
-  case MAD_ERROR_BADPART3LEN:	 return "bad audio data length";
-  case MAD_ERROR_BADHUFFTABLE:	 return "bad Huffman table select";
-  case MAD_ERROR_BADHUFFDATA:	 return "Huffman data overrun";
-  case MAD_ERROR_BADSTEREO:	 return "incompatible block_type for JS";
-  }
-
-  return 0;
-}
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/stream.h
--- a/src/libmad/stream.h	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2004 Underbit Technologies, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: stream.h,v 1.3 2004/04/22 00:23:12 miguelfreitas Exp $
- */
-
-# ifndef LIBMAD_STREAM_H
-# define LIBMAD_STREAM_H
-
-# include "bit.h"
-
-# define MAD_BUFFER_GUARD	8
-# define MAD_BUFFER_MDLEN	(511 + 2048 + MAD_BUFFER_GUARD)
-
-enum mad_error {
-  MAD_ERROR_NONE	   = 0x0000,	/* no error */
-
-  MAD_ERROR_BUFLEN	   = 0x0001,	/* input buffer too small (or EOF) */
-  MAD_ERROR_BUFPTR	   = 0x0002,	/* invalid (null) buffer pointer */
-
-  MAD_ERROR_NOMEM	   = 0x0031,	/* not enough memory */
-
-  MAD_ERROR_LOSTSYNC	   = 0x0101,	/* lost synchronization */
-  MAD_ERROR_BADLAYER	   = 0x0102,	/* reserved header layer value */
-  MAD_ERROR_BADBITRATE	   = 0x0103,	/* forbidden bitrate value */
-  MAD_ERROR_BADSAMPLERATE  = 0x0104,	/* reserved sample frequency value */
-  MAD_ERROR_BADEMPHASIS	   = 0x0105,	/* reserved emphasis value */
-
-  MAD_ERROR_BADCRC	   = 0x0201,	/* CRC check failed */
-  MAD_ERROR_BADBITALLOC	   = 0x0211,	/* forbidden bit allocation value */
-  MAD_ERROR_BADSCALEFACTOR = 0x0221,	/* bad scalefactor index */
-  MAD_ERROR_BADMODE        = 0x0222,	/* bad bitrate/mode combination */
-  MAD_ERROR_BADFRAMELEN	   = 0x0231,	/* bad frame length */
-  MAD_ERROR_BADBIGVALUES   = 0x0232,	/* bad big_values count */
-  MAD_ERROR_BADBLOCKTYPE   = 0x0233,	/* reserved block_type */
-  MAD_ERROR_BADSCFSI	   = 0x0234,	/* bad scalefactor selection info */
-  MAD_ERROR_BADDATAPTR	   = 0x0235,	/* bad main_data_begin pointer */
-  MAD_ERROR_BADPART3LEN	   = 0x0236,	/* bad audio data length */
-  MAD_ERROR_BADHUFFTABLE   = 0x0237,	/* bad Huffman table select */
-  MAD_ERROR_BADHUFFDATA	   = 0x0238,	/* Huffman data overrun */
-  MAD_ERROR_BADSTEREO	   = 0x0239	/* incompatible block_type for JS */
-};
-
-# define MAD_RECOVERABLE(error)	((error) & 0xff00)
-
-struct mad_stream {
-  unsigned char const *buffer;		/* input bitstream buffer */
-  unsigned char const *bufend;		/* end of buffer */
-  unsigned long skiplen;		/* bytes to skip before next frame */
-
-  int sync;				/* stream sync found */
-  unsigned long freerate;		/* free bitrate (fixed) */
-
-  unsigned char const *this_frame;	/* start of current frame */
-  unsigned char const *next_frame;	/* start of next frame */
-  struct mad_bitptr ptr;		/* current processing bit pointer */
-
-  struct mad_bitptr anc_ptr;		/* ancillary bits pointer */
-  unsigned int anc_bitlen;		/* number of ancillary bits */
-
-  unsigned char (*main_data)[MAD_BUFFER_MDLEN];
-					/* Layer III main_data() */
-  unsigned int md_len;			/* bytes in main_data */
-
-  int options;				/* decoding options (see below) */
-  enum mad_error error;			/* error code (see above) */
-};
-
-enum {
-  MAD_OPTION_IGNORECRC      = 0x0001,	/* ignore CRC errors */
-  MAD_OPTION_HALFSAMPLERATE = 0x0002	/* generate PCM at 1/2 sample rate */
-# if 0  /* not yet implemented */
-  MAD_OPTION_LEFTCHANNEL    = 0x0010,	/* decode left channel only */
-  MAD_OPTION_RIGHTCHANNEL   = 0x0020,	/* decode right channel only */
-  MAD_OPTION_SINGLECHANNEL  = 0x0030	/* combine channels */
-# endif
-};
-
-void mad_stream_init(struct mad_stream *);
-void mad_stream_finish(struct mad_stream *);
-
-# define mad_stream_options(stream, opts)  \
-    ((void) ((stream)->options = (opts)))
-
-void mad_stream_buffer(struct mad_stream *,
-		       unsigned char const *, unsigned long);
-void mad_stream_skip(struct mad_stream *, unsigned long);
-
-int mad_stream_sync(struct mad_stream *);
-
-char const *mad_stream_errorstr(struct mad_stream const *);
-
-# endif
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/synth.c
--- a/src/libmad/synth.c	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,857 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2004 Underbit Technologies, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: synth.c,v 1.4 2006/09/26 03:02:20 dgp85 Exp $
- */
-
-# ifdef HAVE_CONFIG_H
-#  include "config.h"
-# endif
-
-# include "global.h"
-
-# include "fixed.h"
-# include "frame.h"
-# include "synth.h"
-
-/*
- * NAME:	synth->init()
- * DESCRIPTION:	initialize synth struct
- */
-void mad_synth_init(struct mad_synth *synth)
-{
-  mad_synth_mute(synth);
-
-  synth->phase = 0;
-
-  synth->pcm.samplerate = 0;
-  synth->pcm.channels   = 0;
-  synth->pcm.length     = 0;
-}
-
-/*
- * NAME:	synth->mute()
- * DESCRIPTION:	zero all polyphase filterbank values, resetting synthesis
- */
-void mad_synth_mute(struct mad_synth *synth)
-{
-  unsigned int ch, s, v;
-
-  for (ch = 0; ch < 2; ++ch) {
-    for (s = 0; s < 16; ++s) {
-      for (v = 0; v < 8; ++v) {
-	synth->filter[ch][0][0][s][v] = synth->filter[ch][0][1][s][v] =
-	synth->filter[ch][1][0][s][v] = synth->filter[ch][1][1][s][v] = 0;
-      }
-    }
-  }
-}
-
-/*
- * An optional optimization called here the Subband Synthesis Optimization
- * (SSO) improves the performance of subband synthesis at the expense of
- * accuracy.
- *
- * The idea is to simplify 32x32->64-bit multiplication to 32x32->32 such
- * that extra scaling and rounding are not necessary. This often allows the
- * compiler to use faster 32-bit multiply-accumulate instructions instead of
- * explicit 64-bit multiply, shift, and add instructions.
- *
- * SSO works like this: a full 32x32->64-bit multiply of two mad_fixed_t
- * values requires the result to be right-shifted 28 bits to be properly
- * scaled to the same fixed-point format. Right shifts can be applied at any
- * time to either operand or to the result, so the optimization involves
- * careful placement of these shifts to minimize the loss of accuracy.
- *
- * First, a 14-bit shift is applied with rounding at compile-time to the D[]
- * table of coefficients for the subband synthesis window. This only loses 2
- * bits of accuracy because the lower 12 bits are always zero. A second
- * 12-bit shift occurs after the DCT calculation. This loses 12 bits of
- * accuracy. Finally, a third 2-bit shift occurs just before the sample is
- * saved in the PCM buffer. 14 + 12 + 2 == 28 bits.
- */
-
-/* FPM_DEFAULT without OPT_SSO will actually lose accuracy and performance */
-
-# if defined(FPM_DEFAULT) && !defined(OPT_SSO)
-#  define OPT_SSO
-# endif
-
-/* second SSO shift, with rounding */
-
-# if defined(OPT_SSO)
-#  define SHIFT(x)  (((x) + (1L << 11)) >> 12)
-# else
-#  define SHIFT(x)  (x)
-# endif
-
-/* possible DCT speed optimization */
-
-# if defined(OPT_SPEED) && defined(MAD_F_MLX)
-#  define OPT_DCTO
-#  define MUL(x, y)  \
-    ({ mad_fixed64hi_t hi;  \
-       mad_fixed64lo_t lo;  \
-       MAD_F_MLX(hi, lo, (x), (y));  \
-       hi << (32 - MAD_F_SCALEBITS - 3);  \
-    })
-# else
-#  undef OPT_DCTO
-#  define MUL(x, y)  mad_f_mul((x), (y))
-# endif
-
-/*
- * NAME:	dct32()
- * DESCRIPTION:	perform fast in[32]->out[32] DCT
- */
-static
-void dct32(mad_fixed_t const in[32], unsigned int slot,
-	   mad_fixed_t lo[16][8], mad_fixed_t hi[16][8])
[... 605 lines omitted ...]
-      MLA(hi, lo, (*fx)[2], ptr[12]);
-      MLA(hi, lo, (*fx)[3], ptr[10]);
-      MLA(hi, lo, (*fx)[4], ptr[ 8]);
-      MLA(hi, lo, (*fx)[5], ptr[ 6]);
-      MLA(hi, lo, (*fx)[6], ptr[ 4]);
-      MLA(hi, lo, (*fx)[7], ptr[ 2]);
-      MLN(hi, lo);
-
-      ptr = *Dptr + pe;
-      MLA(hi, lo, (*fe)[0], ptr[ 0]);
-      MLA(hi, lo, (*fe)[1], ptr[14]);
-      MLA(hi, lo, (*fe)[2], ptr[12]);
-      MLA(hi, lo, (*fe)[3], ptr[10]);
-      MLA(hi, lo, (*fe)[4], ptr[ 8]);
-      MLA(hi, lo, (*fe)[5], ptr[ 6]);
-      MLA(hi, lo, (*fe)[6], ptr[ 4]);
-      MLA(hi, lo, (*fe)[7], ptr[ 2]);
-
-      *pcm1++ = SHIFT(MLZ(hi, lo));
-
-      pcm2 = pcm1 + 14;
-
-      for (sb = 1; sb < 16; ++sb) {
-	++fe;
-	++Dptr;
-
-	/* D[32 - sb][i] == -D[sb][31 - i] */
-
-	if (!(sb & 1)) {
-	  ptr = *Dptr + po;
-	  ML0(hi, lo, (*fo)[0], ptr[ 0]);
-	  MLA(hi, lo, (*fo)[1], ptr[14]);
-	  MLA(hi, lo, (*fo)[2], ptr[12]);
-	  MLA(hi, lo, (*fo)[3], ptr[10]);
-	  MLA(hi, lo, (*fo)[4], ptr[ 8]);
-	  MLA(hi, lo, (*fo)[5], ptr[ 6]);
-	  MLA(hi, lo, (*fo)[6], ptr[ 4]);
-	  MLA(hi, lo, (*fo)[7], ptr[ 2]);
-	  MLN(hi, lo);
-
-	  ptr = *Dptr + pe;
-	  MLA(hi, lo, (*fe)[7], ptr[ 2]);
-	  MLA(hi, lo, (*fe)[6], ptr[ 4]);
-	  MLA(hi, lo, (*fe)[5], ptr[ 6]);
-	  MLA(hi, lo, (*fe)[4], ptr[ 8]);
-	  MLA(hi, lo, (*fe)[3], ptr[10]);
-	  MLA(hi, lo, (*fe)[2], ptr[12]);
-	  MLA(hi, lo, (*fe)[1], ptr[14]);
-	  MLA(hi, lo, (*fe)[0], ptr[ 0]);
-
-	  *pcm1++ = SHIFT(MLZ(hi, lo));
-
-	  ptr = *Dptr - po;
-	  ML0(hi, lo, (*fo)[7], ptr[31 -  2]);
-	  MLA(hi, lo, (*fo)[6], ptr[31 -  4]);
-	  MLA(hi, lo, (*fo)[5], ptr[31 -  6]);
-	  MLA(hi, lo, (*fo)[4], ptr[31 -  8]);
-	  MLA(hi, lo, (*fo)[3], ptr[31 - 10]);
-	  MLA(hi, lo, (*fo)[2], ptr[31 - 12]);
-	  MLA(hi, lo, (*fo)[1], ptr[31 - 14]);
-	  MLA(hi, lo, (*fo)[0], ptr[31 - 16]);
-
-	  ptr = *Dptr - pe;
-	  MLA(hi, lo, (*fe)[0], ptr[31 - 16]);
-	  MLA(hi, lo, (*fe)[1], ptr[31 - 14]);
-	  MLA(hi, lo, (*fe)[2], ptr[31 - 12]);
-	  MLA(hi, lo, (*fe)[3], ptr[31 - 10]);
-	  MLA(hi, lo, (*fe)[4], ptr[31 -  8]);
-	  MLA(hi, lo, (*fe)[5], ptr[31 -  6]);
-	  MLA(hi, lo, (*fe)[6], ptr[31 -  4]);
-	  MLA(hi, lo, (*fe)[7], ptr[31 -  2]);
-
-	  *pcm2-- = SHIFT(MLZ(hi, lo));
-	}
-
-	++fo;
-      }
-
-      ++Dptr;
-
-      ptr = *Dptr + po;
-      ML0(hi, lo, (*fo)[0], ptr[ 0]);
-      MLA(hi, lo, (*fo)[1], ptr[14]);
-      MLA(hi, lo, (*fo)[2], ptr[12]);
-      MLA(hi, lo, (*fo)[3], ptr[10]);
-      MLA(hi, lo, (*fo)[4], ptr[ 8]);
-      MLA(hi, lo, (*fo)[5], ptr[ 6]);
-      MLA(hi, lo, (*fo)[6], ptr[ 4]);
-      MLA(hi, lo, (*fo)[7], ptr[ 2]);
-
-      *pcm1 = SHIFT(-MLZ(hi, lo));
-      pcm1 += 8;
-
-      phase = (phase + 1) % 16;
-    }
-  }
-}
-
-/*
- * NAME:	synth->frame()
- * DESCRIPTION:	perform PCM synthesis of frame subband samples
- */
-void mad_synth_frame(struct mad_synth *synth, struct mad_frame const *frame)
-{
-  unsigned int nch, ns;
-  void (*synth_frame)(struct mad_synth *, struct mad_frame const *,
-		      unsigned int, unsigned int);
-
-  nch = MAD_NCHANNELS(&frame->header);
-  ns  = MAD_NSBSAMPLES(&frame->header);
-
-  synth->pcm.samplerate = frame->header.samplerate;
-  synth->pcm.channels   = nch;
-  synth->pcm.length     = 32 * ns;
-
-  synth_frame = synth_full;
-
-  if (frame->options & MAD_OPTION_HALFSAMPLERATE) {
-    synth->pcm.samplerate /= 2;
-    synth->pcm.length     /= 2;
-
-    synth_frame = synth_half;
-  }
-
-  synth_frame(synth, frame, nch, ns);
-
-  synth->phase = (synth->phase + ns) % 16;
-}
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/synth.h
--- a/src/libmad/synth.h	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2004 Underbit Technologies, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: synth.h,v 1.3 2004/04/22 00:23:24 miguelfreitas Exp $
- */
-
-# ifndef LIBMAD_SYNTH_H
-# define LIBMAD_SYNTH_H
-
-# include "fixed.h"
-# include "frame.h"
-
-struct mad_pcm {
-  unsigned int samplerate;		/* sampling frequency (Hz) */
-  unsigned short channels;		/* number of channels */
-  unsigned short length;		/* number of samples per channel */
-  mad_fixed_t samples[2][1152];		/* PCM output samples [ch][sample] */
-};
-
-struct mad_synth {
-  mad_fixed_t filter[2][2][2][16][8];	/* polyphase filterbank outputs */
-  					/* [ch][eo][peo][s][v] */
-
-  unsigned int phase;			/* current processing phase */
-
-  struct mad_pcm pcm;			/* PCM output */
-};
-
-/* single channel PCM selector */
-enum {
-  MAD_PCM_CHANNEL_SINGLE = 0
-};
-
-/* dual channel PCM selector */
-enum {
-  MAD_PCM_CHANNEL_DUAL_1 = 0,
-  MAD_PCM_CHANNEL_DUAL_2 = 1
-};
-
-/* stereo PCM selector */
-enum {
-  MAD_PCM_CHANNEL_STEREO_LEFT  = 0,
-  MAD_PCM_CHANNEL_STEREO_RIGHT = 1
-};
-
-void mad_synth_init(struct mad_synth *);
-
-# define mad_synth_finish(synth)  /* nothing */
-
-void mad_synth_mute(struct mad_synth *);
-
-void mad_synth_frame(struct mad_synth *, struct mad_frame const *);
-
-# endif
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/timer.c
--- a/src/libmad/timer.c	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,485 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2004 Underbit Technologies, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: timer.c,v 1.6 2004/04/22 00:23:26 miguelfreitas Exp $
- */
-
-# ifdef HAVE_CONFIG_H
-#  include "config.h"
-# endif
-
-# include "global.h"
-
-# include <stdio.h>
-
-# ifdef HAVE_ASSERT_H
-#  include <assert.h>
-# endif
-
-# include "timer.h"
-
-mad_timer_t const mad_timer_zero = { 0, 0 };
-
-/*
- * NAME:	timer->compare()
- * DESCRIPTION:	indicate relative order of two timers
- */
-int mad_timer_compare(mad_timer_t timer1, mad_timer_t timer2)
-{
-  signed long diff;
-
-  diff = timer1.seconds - timer2.seconds;
-  if (diff < 0)
-    return -1;
-  else if (diff > 0)
-    return +1;
-
-  diff = timer1.fraction - timer2.fraction;
-  if (diff < 0)
-    return -1;
-  else if (diff > 0)
-    return +1;
-
-  return 0;
-}
-
-/*
- * NAME:	timer->negate()
- * DESCRIPTION:	invert the sign of a timer
- */
-void mad_timer_negate(mad_timer_t *timer)
-{
-  timer->seconds = -timer->seconds;
-
-  if (timer->fraction) {
-    timer->seconds -= 1;
-    timer->fraction = MAD_TIMER_RESOLUTION - timer->fraction;
-  }
-}
-
-/*
- * NAME:	timer->abs()
- * DESCRIPTION:	return the absolute value of a timer
- */
-mad_timer_t mad_timer_abs(mad_timer_t timer)
-{
-  if (timer.seconds < 0)
-    mad_timer_negate(&timer);
-
-  return timer;
-}
-
-/*
- * NAME:	reduce_timer()
- * DESCRIPTION:	carry timer fraction into seconds
- */
-static
-void reduce_timer(mad_timer_t *timer)
-{
-  timer->seconds  += timer->fraction / MAD_TIMER_RESOLUTION;
-  timer->fraction %= MAD_TIMER_RESOLUTION;
-}
-
-/*
- * NAME:	gcd()
- * DESCRIPTION:	compute greatest common denominator
- */
-static
-unsigned long gcd(unsigned long num1, unsigned long num2)
-{
-  unsigned long tmp;
-
-  while (num2) {
-    tmp  = num2;
-    num2 = num1 % num2;
-    num1 = tmp;
-  }
-
-  return num1;
-}
-
-/*
- * NAME:	reduce_rational()
- * DESCRIPTION:	convert rational expression to lowest terms
- */
-static
-void reduce_rational(unsigned long *numer, unsigned long *denom)
-{
-  unsigned long factor;
-
[... 233 lines omitted ...]
-  case MAD_UNITS_HOURS:
-  case MAD_UNITS_MINUTES:
-  case MAD_UNITS_SECONDS:
-    break;
-
-  case MAD_UNITS_DECISECONDS:
-  case MAD_UNITS_CENTISECONDS:
-  case MAD_UNITS_MILLISECONDS:
-
-  case MAD_UNITS_8000_HZ:
-  case MAD_UNITS_11025_HZ:
-  case MAD_UNITS_12000_HZ:
-  case MAD_UNITS_16000_HZ:
-  case MAD_UNITS_22050_HZ:
-  case MAD_UNITS_24000_HZ:
-  case MAD_UNITS_32000_HZ:
-  case MAD_UNITS_44100_HZ:
-  case MAD_UNITS_48000_HZ:
-
-  case MAD_UNITS_24_FPS:
-  case MAD_UNITS_25_FPS:
-  case MAD_UNITS_30_FPS:
-  case MAD_UNITS_48_FPS:
-  case MAD_UNITS_50_FPS:
-  case MAD_UNITS_60_FPS:
-  case MAD_UNITS_75_FPS:
-    {
-      unsigned long denom;
-
-      denom = MAD_TIMER_RESOLUTION / fracunits;
-
-      frac = timer.fraction / denom;
-      sub  = scale_rational(timer.fraction % denom, denom, subparts);
-    }
-    break;
-
-  case MAD_UNITS_23_976_FPS:
-  case MAD_UNITS_24_975_FPS:
-  case MAD_UNITS_29_97_FPS:
-  case MAD_UNITS_47_952_FPS:
-  case MAD_UNITS_49_95_FPS:
-  case MAD_UNITS_59_94_FPS:
-    /* drop-frame encoding */
-    /* N.B. this is only well-defined for MAD_UNITS_29_97_FPS */
-    {
-      unsigned long frame, cycle, d, m;
-
-      frame = mad_timer_count(timer, fracunits);
-
-      cycle = -fracunits * 60 * 10 - (10 - 1) * 2;
-
-      d = frame / cycle;
-      m = frame % cycle;
-      frame += (10 - 1) * 2 * d;
-      if (m > 2)
-	frame += 2 * ((m - 2) / (cycle / 10));
-
-      frac    = frame % -fracunits;
-      seconds = frame / -fracunits;
-    }
-    break;
-  }
-
-  switch (units) {
-  case MAD_UNITS_HOURS:
-    minutes = seconds / 60;
-    hours   = minutes / 60;
-
-    sprintf(dest, format,
-	    hours,
-	    (unsigned int) (minutes % 60),
-	    (unsigned int) (seconds % 60),
-	    frac, sub);
-    break;
-
-  case MAD_UNITS_MINUTES:
-    minutes = seconds / 60;
-
-    sprintf(dest, format,
-	    minutes,
-	    (unsigned int) (seconds % 60),
-	    frac, sub);
-    break;
-
-  case MAD_UNITS_SECONDS:
-    sprintf(dest, format,
-	    seconds,
-	    frac, sub);
-    break;
-
-  case MAD_UNITS_23_976_FPS:
-  case MAD_UNITS_24_975_FPS:
-  case MAD_UNITS_29_97_FPS:
-  case MAD_UNITS_47_952_FPS:
-  case MAD_UNITS_49_95_FPS:
-  case MAD_UNITS_59_94_FPS:
-    if (fracunits < 0) {
-      /* not yet implemented */
-      sub = 0;
-    }
-
-    /* fall through */
-
-  case MAD_UNITS_DECISECONDS:
-  case MAD_UNITS_CENTISECONDS:
-  case MAD_UNITS_MILLISECONDS:
-
-  case MAD_UNITS_8000_HZ:
-  case MAD_UNITS_11025_HZ:
-  case MAD_UNITS_12000_HZ:
-  case MAD_UNITS_16000_HZ:
-  case MAD_UNITS_22050_HZ:
-  case MAD_UNITS_24000_HZ:
-  case MAD_UNITS_32000_HZ:
-  case MAD_UNITS_44100_HZ:
-  case MAD_UNITS_48000_HZ:
-
-  case MAD_UNITS_24_FPS:
-  case MAD_UNITS_25_FPS:
-  case MAD_UNITS_30_FPS:
-  case MAD_UNITS_48_FPS:
-  case MAD_UNITS_50_FPS:
-  case MAD_UNITS_60_FPS:
-  case MAD_UNITS_75_FPS:
-    sprintf(dest, format, mad_timer_count(timer, units), sub);
-    break;
-  }
-}
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/timer.h
--- a/src/libmad/timer.h	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2004 Underbit Technologies, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: timer.h,v 1.3 2004/04/22 00:23:27 miguelfreitas Exp $
- */
-
-# ifndef LIBMAD_TIMER_H
-# define LIBMAD_TIMER_H
-
-typedef struct {
-  signed long seconds;		/* whole seconds */
-  unsigned long fraction;	/* 1/MAD_TIMER_RESOLUTION seconds */
-} mad_timer_t;
-
-extern mad_timer_t const mad_timer_zero;
-
-# define MAD_TIMER_RESOLUTION	352800000UL
-
-enum mad_units {
-  MAD_UNITS_HOURS	 =    -2,
-  MAD_UNITS_MINUTES	 =    -1,
-  MAD_UNITS_SECONDS	 =     0,
-
-  /* metric units */
-
-  MAD_UNITS_DECISECONDS	 =    10,
-  MAD_UNITS_CENTISECONDS =   100,
-  MAD_UNITS_MILLISECONDS =  1000,
-
-  /* audio sample units */
-
-  MAD_UNITS_8000_HZ	 =  8000,
-  MAD_UNITS_11025_HZ	 = 11025,
-  MAD_UNITS_12000_HZ	 = 12000,
-
-  MAD_UNITS_16000_HZ	 = 16000,
-  MAD_UNITS_22050_HZ	 = 22050,
-  MAD_UNITS_24000_HZ	 = 24000,
-
-  MAD_UNITS_32000_HZ	 = 32000,
-  MAD_UNITS_44100_HZ	 = 44100,
-  MAD_UNITS_48000_HZ	 = 48000,
-
-  /* video frame/field units */
-
-  MAD_UNITS_24_FPS	 =    24,
-  MAD_UNITS_25_FPS	 =    25,
-  MAD_UNITS_30_FPS	 =    30,
-  MAD_UNITS_48_FPS	 =    48,
-  MAD_UNITS_50_FPS	 =    50,
-  MAD_UNITS_60_FPS	 =    60,
-
-  /* CD audio frames */
-
-  MAD_UNITS_75_FPS	 =    75,
-
-  /* video drop-frame units */
-
-  MAD_UNITS_23_976_FPS	 =   -24,
-  MAD_UNITS_24_975_FPS	 =   -25,
-  MAD_UNITS_29_97_FPS	 =   -30,
-  MAD_UNITS_47_952_FPS	 =   -48,
-  MAD_UNITS_49_95_FPS	 =   -50,
-  MAD_UNITS_59_94_FPS	 =   -60
-};
-
-# define mad_timer_reset(timer)	((void) (*(timer) = mad_timer_zero))
-
-int mad_timer_compare(mad_timer_t, mad_timer_t);
-
-# define mad_timer_sign(timer)	mad_timer_compare((timer), mad_timer_zero)
-
-void mad_timer_negate(mad_timer_t *);
-mad_timer_t mad_timer_abs(mad_timer_t);
-
-void mad_timer_set(mad_timer_t *, unsigned long, unsigned long, unsigned long);
-void mad_timer_add(mad_timer_t *, mad_timer_t);
-void mad_timer_multiply(mad_timer_t *, signed long);
-
-signed long mad_timer_count(mad_timer_t, enum mad_units);
-unsigned long mad_timer_fraction(mad_timer_t, unsigned long);
-void mad_timer_string(mad_timer_t, char *, char const *,
-		      enum mad_units, enum mad_units, unsigned long);
-
-# endif
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/version.c
--- a/src/libmad/version.c	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2004 Underbit Technologies, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: version.c,v 1.2 2004/04/22 00:23:27 miguelfreitas Exp $
- */
-
-# ifdef HAVE_CONFIG_H
-#  include "config.h"
-# endif
-
-# include "global.h"
-
-# include "version.h"
-
-char const mad_version[]   = "MPEG Audio Decoder " MAD_VERSION;
-char const mad_copyright[] = "Copyright (C) " MAD_PUBLISHYEAR " " MAD_AUTHOR;
-char const mad_author[]    = MAD_AUTHOR " <" MAD_EMAIL ">";
-
-char const mad_build[] = ""
-# if defined(DEBUG)
-  "DEBUG "
-# elif defined(NDEBUG)
-  "NDEBUG "
-# endif
-
-# if defined(EXPERIMENTAL)
-  "EXPERIMENTAL "
-# endif
-
-# if defined(FPM_64BIT)
-  "FPM_64BIT "
-# elif defined(FPM_INTEL)
-  "FPM_INTEL "
-# elif defined(FPM_ARM)
-  "FPM_ARM "
-# elif defined(FPM_MIPS)
-  "FPM_MIPS "
-# elif defined(FPM_SPARC)
-  "FPM_SPARC "
-# elif defined(FPM_PPC)
-  "FPM_PPC "
-# elif defined(FPM_DEFAULT)
-  "FPM_DEFAULT "
-# endif
-
-# if defined(ASO_IMDCT)
-  "ASO_IMDCT "
-# endif
-# if defined(ASO_INTERLEAVE1)
-  "ASO_INTERLEAVE1 "
-# endif
-# if defined(ASO_INTERLEAVE2)
-  "ASO_INTERLEAVE2 "
-# endif
-# if defined(ASO_ZEROCHECK)
-  "ASO_ZEROCHECK "
-# endif
-
-# if defined(OPT_SPEED)
-  "OPT_SPEED "
-# elif defined(OPT_ACCURACY)
-  "OPT_ACCURACY "
-# endif
-
-# if defined(OPT_SSO)
-  "OPT_SSO "
-# endif
-
-# if defined(OPT_DCTO)  /* never defined here */
-  "OPT_DCTO "
-# endif
-
-# if defined(OPT_STRICT)
-  "OPT_STRICT "
-# endif
-;
diff -r 3e9d711a77870cbbca8db3bca3dcacad6092064f -r \
                df73844e8a47005bef76ffe6cd9323d8e6a1c218 src/libmad/version.h
--- a/src/libmad/version.h	Thu Jun 21 23:27:37 2007 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
- * libmad - MPEG audio decoder library
- * Copyright (C) 2000-2004 Underbit Technologies, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * $Id: version.h,v 1.2 2004/04/22 00:23:29 miguelfreitas Exp $
- */
-
-# ifndef LIBMAD_VERSION_H
-# define LIBMAD_VERSION_H
-
-# define MAD_VERSION_MAJOR	0
-# define MAD_VERSION_MINOR	15
-# define MAD_VERSION_PATCH	1
-# define MAD_VERSION_EXTRA	" (beta)"
-
-# define MAD_VERSION_STRINGIZE(str)	#str
-# define MAD_VERSION_STRING(num)	MAD_VERSION_STRINGIZE(num)
-
-# define MAD_VERSION		MAD_VERSION_STRING(MAD_VERSION_MAJOR) "."  \
-				MAD_VERSION_STRING(MAD_VERSION_MINOR) "."  \
-				MAD_VERSION_STRING(MAD_VERSION_PATCH)  \
-				MAD_VERSION_EXTRA
-
-# define MAD_PUBLISHYEAR	"2000-2004"
-# define MAD_AUTHOR		"Underbit Technologies, Inc."
-# define MAD_EMAIL		"info@underbit.com"
-
-extern char const mad_version[];
-extern char const mad_copyright[];
-extern char const mad_author[];
-extern char const mad_build[];
-
-# endif

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Xine-cvslog mailing list
Xine-cvslog@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xine-cvslog


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic