tabs: 4->8
authorkramm <kramm>
Sun, 13 Jan 2002 18:26:31 +0000 (18:26 +0000)
committerkramm <kramm>
Sun, 13 Jan 2002 18:26:31 +0000 (18:26 +0000)
lib/bladeenc/codec.c

index c6697ea..b40f598 100644 (file)
@@ -1,54 +1,54 @@
 /*
-                       (c) Copyright 1998-2000 - Tord Jansson
-                       ======================================
+           (c) Copyright 1998-2000 - Tord Jansson
+           ======================================
 
-               This file is part of the BladeEnc MP3 Encoder, based on
-               ISO's reference code for MPEG Layer 3 compression, and might
-               contain smaller or larger sections that are directly taken
-               from ISO's reference code.
+       This file is part of the BladeEnc MP3 Encoder, based on
+       ISO's reference code for MPEG Layer 3 compression, and might
+       contain smaller or larger sections that are directly taken
+       from ISO's reference code.
 
-               All changes to the ISO reference code herein are either
-               copyrighted by Tord Jansson (tord.jansson@swipnet.se)
-               or sublicensed to Tord Jansson by a third party.
+       All changes to the ISO reference code herein are either
+       copyrighted by Tord Jansson (tord.jansson@swipnet.se)
+       or sublicensed to Tord Jansson by a third party.
 
-       BladeEnc is free software; you can redistribute this file
-       and/or modify it under the terms of the GNU Lesser General Public
-       License as published by the Free Software Foundation; either
-       version 2.1 of the License, or (at your option) any later version.
+    BladeEnc is free software; you can redistribute this file
+    and/or modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
 
 
 
-       ------------    CHANGES    ------------
+    ------------    CHANGES    ------------
 
-       2000-11-22  Andre Piotrowski
+    2000-11-22  Andre Piotrowski
 
-       -       big fix: module - original dist10 error - l3_sb_sample has to be of type 'L3SBS' not 'SBS'.
-       -       bug fix: codecInit() - don't reset fInit-huffman_read_flag - read_huffcodetab() is a memory eater!
+    -  big fix: module - original dist10 error - l3_sb_sample has to be of type 'L3SBS' not 'SBS'.
+    -  bug fix: codecInit() - don't reset fInit-huffman_read_flag - read_huffcodetab() is a memory eater!
 
-       2000-12-11  ap
+    2000-12-11  ap
 
-       -       reformatted
-       -       speed up: use single buffer
+    -  reformatted
+    -  speed up: use single buffer
 */
 
-#include       <stdlib.h>
-#include       <assert.h>
+#include    <stdlib.h>
+#include    <assert.h>
 
-#include       "common.h"
-#include       "l3psy.h"
-#include       "mdct.h"
-#include       "reservoir.h"
-#include       "formatbitstream2.h"
-#include       "l3bitstream.h"
-#include       "loop.h"
-#include       "encoder.h"
-#include       "codec.h"
+#include    "common.h"
+#include    "l3psy.h"
+#include    "mdct.h"
+#include    "reservoir.h"
+#include    "formatbitstream2.h"
+#include    "l3bitstream.h"
+#include    "loop.h"
+#include    "encoder.h"
+#include    "codec.h"
 
 
 
 
 
-extern int                             fInit_fft;
+extern int             fInit_fft;
 
 
 
@@ -56,42 +56,42 @@ extern      int                             fInit_fft;
 
 /************************************************************************/
 
-#define        SAMPLES_PER_FRAME               1152
+#define        SAMPLES_PER_FRAME       1152
 
-static L3SBS                                   l3_sb_sample;
+static L3SBS                   l3_sb_sample;
 
-static layer                                   info;
+static layer                   info;
 
 
 
 #if ORG_BUFFERS
-static short                                   buffer[2][1152];
-/*     static  float                                   snr32[32]; */
-static short                                   sam[2][2048];
+static short                   buffer[2][1152];
+/*  static  float                  snr32[32]; */
+static short                   sam[2][2048];
 #else
-static FLOAT                                   buffer[2][2048];
-static int                                             buffer_idx;
+static FLOAT                   buffer[2][2048];
+static int                     buffer_idx;
 #endif
 
 
 
-static int                                             whole_SpF;
+static int                     whole_SpF;
 
-static double                                  frac_SpF, slot_lag;
+static double                  frac_SpF, slot_lag;
 
-static int                                             stereo, error_protection;
+static int                     stereo, error_protection;
 
-static III_side_info_t                 l3_side;
-static CodecInitOut                    sOut;
+static III_side_info_t         l3_side;
+static CodecInitOut            sOut;
 
-static frame_params                    fr_ps;
+static frame_params            fr_ps;
 
 
 
-char                                   *pEncodedOutput;
-int                                            outputBit;
+char                   *pEncodedOutput;
+int                    outputBit;
 
-volatile double                        avg_slots_per_frame;
+volatile double                avg_slots_per_frame;
 
 
 
@@ -99,68 +99,68 @@ volatile double                     avg_slots_per_frame;
 
 /*____ codecInit() ____________________________________________________________*/
 
-CodecInitOut                   *codecInit (CodecInitIn *psIn)
+CodecInitOut           *codecInit (CodecInitIn *psIn)
 {
-       int                                             j;
-
-       /* Read psIn */
-
-       switch (psIn->frequency)
-       {
-               case 48000:  info.sampling_frequency = 1;  break;
-               case 44100:  info.sampling_frequency = 0;  break;
-               case 32000:  info.sampling_frequency = 2;  break;
-               default   :  return FALSE;
-       }
-
-       switch (psIn->mode)
-       {
-               case  0:  info.mode = MPG_MD_STEREO      ;  info.mode_ext = 0;  break;
-               case  2:  info.mode = MPG_MD_DUAL_CHANNEL;  info.mode_ext = 0;  break;
-               case  3:  info.mode = MPG_MD_MONO        ;  info.mode_ext = 0;  break;
-               default:  return FALSE;
-       }
-
-       j = 0;
-       while (j < 15  &&  bitratex[1][j] != psIn->bitrate)
-               j++;
-       info.bitrate_index    = j;
-
-       info.version          = 1;   /* Default: MPEG-1 */
-       info.emphasis         = psIn->emphasis;
-       info.extension        = psIn->fPrivate;
-       info.copyright        = psIn->fCopyright;
-       info.original         = psIn->fOriginal;
-       info.error_protection = psIn->fCRC;
+    int                            j;
+
+    /* Read psIn */
+
+    switch (psIn->frequency)
+    {
+       case 48000:  info.sampling_frequency = 1;  break;
+       case 44100:  info.sampling_frequency = 0;  break;
+       case 32000:  info.sampling_frequency = 2;  break;
+       default   :  return FALSE;
+    }
+
+    switch (psIn->mode)
+    {
+       case  0:  info.mode = MPG_MD_STEREO      ;  info.mode_ext = 0;  break;
+       case  2:  info.mode = MPG_MD_DUAL_CHANNEL;  info.mode_ext = 0;  break;
+       case  3:  info.mode = MPG_MD_MONO        ;  info.mode_ext = 0;  break;
+       default:  return FALSE;
+    }
+
+    j = 0;
+    while (j < 15  &&  bitratex[1][j] != psIn->bitrate)
+       j++;
+    info.bitrate_index    = j;
+
+    info.version         = 1;   /* Default: MPEG-1 */
+    info.emphasis        = psIn->emphasis;
+    info.extension       = psIn->fPrivate;
+    info.copyright       = psIn->fCopyright;
+    info.original        = psIn->fOriginal;
+    info.error_protection = psIn->fCRC;
 
 
 /*_______ Static-fix _______________*/
 
 
-       fInit_mdct_sub = 0;
-       fInit_mdct = 0;
+    fInit_mdct_sub = 0;
+    fInit_mdct = 0;
 
-       fInit_fft = 0;
+    fInit_fft = 0;
 
-       fInit_iteration_loop = 0;
-/*     DON'T DO THAT ALL THE TIME
-       fInit_huffman_read_flag = 0;
+    fInit_iteration_loop = 0;
+/*  DON'T DO THAT ALL THE TIME
+    fInit_huffman_read_flag = 0;
 */
 
-       fixStatic_loop();
+    fixStatic_loop();
 
-       l3_side.main_data_begin = 0;
-       fixStatic_reservoir();
+    l3_side.main_data_begin = 0;
+    fixStatic_reservoir();
 
 
 /*___________________________________*/
 
     psycho_anal_init (psIn->frequency);
-       initWindowFilterSubband ();
-       initFormatBitstream ();
+    initWindowFilterSubband ();
+    initFormatBitstream ();
 
 /*     clear buffers */
-       memset ((char *) l3_sb_sample, 0, sizeof(l3_sb_sample));
+    memset ((char *) l3_sb_sample, 0, sizeof(l3_sb_sample));
     memset((char *) buffer, 0, sizeof(buffer));
 /*    memset((char *) snr32, 0, sizeof(snr32));*/
 #if ORG_BUFFERS
@@ -169,41 +169,41 @@ CodecInitOut                      *codecInit (CodecInitIn *psIn)
 
 
 
-    fr_ps.header         = &info;
-    fr_ps.tab_num        = -1;   /* no table loaded */
-    fr_ps.alloc          = NULL;
+    fr_ps.header      = &info;
+    fr_ps.tab_num     = -1;   /* no table loaded */
+    fr_ps.alloc              = NULL;
     fr_ps.actual_mode = info.mode;
-    fr_ps.stereo         = (info.mode == MPG_MD_MONO) ? 1 : 2;
-       fr_ps.sblimit     = SBLIMIT;
-    fr_ps.jsbound        = SBLIMIT;
+    fr_ps.stereo      = (info.mode == MPG_MD_MONO) ? 1 : 2;
+    fr_ps.sblimit     = SBLIMIT;
+    fr_ps.jsbound     = SBLIMIT;
 
     
     stereo = fr_ps.stereo;
     error_protection = info.error_protection;
 
     avg_slots_per_frame =
-               ((double) SAMPLES_PER_FRAME / s_freq[1][info.sampling_frequency]) *
-               ((double) bitratex[1][info.bitrate_index] / 8.0);
+       ((double) SAMPLES_PER_FRAME / s_freq[1][info.sampling_frequency]) *
+       ((double) bitratex[1][info.bitrate_index] / 8.0);
     whole_SpF = (int) avg_slots_per_frame;
     frac_SpF  = avg_slots_per_frame - (double) whole_SpF;
     slot_lag  = -frac_SpF;
 
 /*    if (frac_SpF == 0)
-       info.padding = 0;
+       info.padding = 0;
 */
-       genNoisePowTab();
+    genNoisePowTab();
 
 /*________________________*/
 
 
-       if( stereo != 2 )
-               sOut.nSamples = SAMPLES_PER_FRAME;
-       else
-               sOut.nSamples = SAMPLES_PER_FRAME*2;
+    if( stereo != 2 )
+       sOut.nSamples = SAMPLES_PER_FRAME;
+    else
+       sOut.nSamples = SAMPLES_PER_FRAME*2;
 
-       sOut.bufferSize = 2048;
+    sOut.bufferSize = 2048;
 
-       return  &sOut;                  /* How many samples we want in each chunk... */
+    return  &sOut;         /* How many samples we want in each chunk... */
 }
 
 
@@ -212,177 +212,177 @@ CodecInitOut                    *codecInit (CodecInitIn *psIn)
 
 /*____ codecEncodeChunk() _____________________________________________________*/
 
-unsigned int                   codecEncodeChunk
+unsigned int           codecEncodeChunk
 (
-       int                                             nSamples,
-       short                                   *pSamples,
-       char                                    *pDest
+    int                            nSamples,
+    short                  *pSamples,
+    char                   *pDest
 )
 {
-       static  double                          xr[2][2][576];
-       static  double                          xr_dec[2][2][576];
-       static  double                          pe[2][2];
-       static  int                                     l3_enc[2][2][576];
-       static  III_psy_ratio           ratio;
-       static  III_scalefac_t          scalefac;
-       int                                                     gr, ch;
-       int                                                     mean_bits, sideinfo_len;
-       int                                                     bitsPerFrame;
-       int                                                     j;
+    static  double             xr[2][2][576];
+    static  double             xr_dec[2][2][576];
+    static  double             pe[2][2];
+    static  int                        l3_enc[2][2][576];
+    static  III_psy_ratio      ratio;
+    static  III_scalefac_t     scalefac;
+    int                                gr, ch;
+    int                                mean_bits, sideinfo_len;
+    int                                bitsPerFrame;
+    int                                j;
 
 /*
-       static  int                                     fFirst = TRUE;
-
-       if (fFirst)
-       {
-               memset ((char *) &xr      , 0, sizeof(xr));
-               memset ((char *) &xr_dec  , 0, sizeof(xr_dec));
-               memset ((char *) &pe      , 0, sizeof(pe));
-               memset ((char *) &l3_enc  , 0, sizeof(l3_enc));
-               memset ((char *) &ratio   , 0, sizeof(ratio));
-               memset ((char *) &l3_side , 0, sizeof(l3_side));
-               memset ((char *) &scalefac, 0, sizeof(scalefac));
-
-               fFirst = FALSE;
-       }
+    static  int                        fFirst = TRUE;
+
+    if (fFirst)
+    {
+       memset ((char *) &xr      , 0, sizeof(xr));
+       memset ((char *) &xr_dec  , 0, sizeof(xr_dec));
+       memset ((char *) &pe      , 0, sizeof(pe));
+       memset ((char *) &l3_enc  , 0, sizeof(l3_enc));
+       memset ((char *) &ratio   , 0, sizeof(ratio));
+       memset ((char *) &l3_side , 0, sizeof(l3_side));
+       memset ((char *) &scalefac, 0, sizeof(scalefac));
+
+       fFirst = FALSE;
+    }
 */
 
 
 /* rebuffer audio */
 
 #if ORG_BUFFERS
-       rebuffer_audio (buffer, pSamples, nSamples, stereo);
+    rebuffer_audio (buffer, pSamples, nSamples, stereo);
 #else
-       rebuffer_audio (pSamples, buffer, &buffer_idx, nSamples, stereo);
+    rebuffer_audio (pSamples, buffer, &buffer_idx, nSamples, stereo);
 #endif
 
 
 /* psychoacoustic model */
 
-       for (gr = 0;  gr < 2;  gr++)
-               for (ch = 0;  ch < stereo;  ch++)
-                       psycho_anal
-                       (
+    for (gr = 0;  gr < 2;  gr++)
+       for (ch = 0;  ch < stereo;  ch++)
+           psycho_anal
+           (
 #if ORG_BUFFERS
-                               &buffer[ch][gr*576],
-                               &sam[ch][0],
+               &buffer[ch][gr*576],
+               &sam[ch][0],
 #else
-                       buffer[ch],
-                       (buffer_idx+gr*576) & 2047,
+               buffer[ch],
+               (buffer_idx+gr*576) & 2047,
 #endif
-                               ch,
-                               3,
-                               /*snr32,*/
-                               &ratio.l[gr][ch][0],
-                               &ratio.s[gr][ch][0],
-                               &pe[gr][ch],
-                               &l3_side.gr[gr].ch[ch].tt
-                       );
+               ch,
+               3,
+               /*snr32,*/
+               &ratio.l[gr][ch][0],
+               &ratio.s[gr][ch][0],
+               &pe[gr][ch],
+               &l3_side.gr[gr].ch[ch].tt
+           );
 
 
 /* polyphase filtering */
 
-       for (gr = 0;  gr < 2;  gr++)
+    for (gr = 0;  gr < 2;  gr++)
+    {
+       int     gr_plus_1 = gr_idx[gr+1];
+
+       for (ch = 0;  ch < stereo;  ch++)
        {
-               int             gr_plus_1 = gr_idx[gr+1];
-
-               for (ch = 0;  ch < stereo;  ch++)
-               {
-                       for (j = 0;  j < 18;  j++)
-                       {
-                               windowFilterSubband
-                               (
+           for (j = 0;  j < 18;  j++)
+           {
+               windowFilterSubband
+               (
 #if ORG_BUFFERS
-                                       &buffer[ch][gr*18*32+32*j],
-                                       ch,
+                   &buffer[ch][gr*18*32+32*j],
+                   ch,
 #else
-                                       buffer[ch],
-                                       (buffer_idx+768-480+gr*18*32+32*j) & 2047,
+                   buffer[ch],
+                   (buffer_idx+768-480+gr*18*32+32*j) & 2047,
 #endif
-                                       l3_sb_sample[ch][gr_plus_1][j]
-                               );
-                       }
-               }
+                   l3_sb_sample[ch][gr_plus_1][j]
+               );
+           }
        }
+    }
 
 
 /* apply mdct to the polyphase outputs */
 
-       mdct_sub (&l3_sb_sample, xr, stereo, &l3_side, 2);
+    mdct_sub (&l3_sb_sample, xr, stereo, &l3_side, 2);
 
 
-       pEncodedOutput = pDest;
-       outputBit = 8;
-       pEncodedOutput[0] = 0;
+    pEncodedOutput = pDest;
+    outputBit = 8;
+    pEncodedOutput[0] = 0;
 
 
-       if (frac_SpF != 0)
+    if (frac_SpF != 0)
+    {
+       if (slot_lag > (frac_SpF-1.0))
+       {
+           slot_lag -= frac_SpF;
+           info.padding = 0;
+       }
+       else
        {
-               if (slot_lag > (frac_SpF-1.0))
-               {
-                       slot_lag -= frac_SpF;
-                       info.padding = 0;
-               }
-               else
-               {
-                       info.padding = 1;
-                       slot_lag += (1-frac_SpF);
-               }
+           info.padding = 1;
+           slot_lag += (1-frac_SpF);
        }
+    }
 
-       bitsPerFrame = 8 * whole_SpF + (info.padding * 8);
+    bitsPerFrame = 8 * whole_SpF + (info.padding * 8);
 
 
 /* determine the mean bitrate for main data */
 
-       sideinfo_len = 32;
+    sideinfo_len = 32;
 
-       if (stereo == 1)
-               sideinfo_len += 136;
-       else
-               sideinfo_len += 256;
+    if (stereo == 1)
+       sideinfo_len += 136;
+    else
+       sideinfo_len += 256;
 
-       if (info.error_protection)
-               sideinfo_len += 16;
+    if (info.error_protection)
+       sideinfo_len += 16;
 
-       mean_bits = (bitsPerFrame - sideinfo_len) / 2;
+    mean_bits = (bitsPerFrame - sideinfo_len) / 2;
 
 
 /* bit and noise allocation */
 
-       iteration_loop
-       (
-               pe,
-               xr,
-               &ratio,
-               &l3_side,
-               l3_enc,
-               mean_bits,
-               stereo,
-               xr_dec,
-               &scalefac,
-               &fr_ps,
-               0,
-               bitsPerFrame
-       );
+    iteration_loop
+    (
+       pe,
+       xr,
+       &ratio,
+       &l3_side,
+       l3_enc,
+       mean_bits,
+       stereo,
+       xr_dec,
+       &scalefac,
+       &fr_ps,
+       0,
+       bitsPerFrame
+    );
 
 
 /* write the frame to the bitstream */
 
-       III_format_bitstream
-       (
-               bitsPerFrame,
-               &fr_ps,
-               l3_enc,
-               &l3_side,
-               &scalefac,
-               xr,
-               NULL,
-               0
-       );
+    III_format_bitstream
+    (
+       bitsPerFrame,
+       &fr_ps,
+       l3_enc,
+       &l3_side,
+       &scalefac,
+       xr,
+       NULL,
+       0
+    );
 
 
-       return  pEncodedOutput - pDest;
+    return  pEncodedOutput - pDest;
 }
 
 
@@ -391,17 +391,17 @@ unsigned int                      codecEncodeChunk
 
 /*____ codecExit() ____________________________________________________________*/
 
-unsigned int                   codecExit (char *pDest)
+unsigned int           codecExit (char *pDest)
 {
-       pEncodedOutput = pDest;
-       outputBit = 8;
-       pEncodedOutput[0] = 0;
+    pEncodedOutput = pDest;
+    outputBit = 8;
+    pEncodedOutput[0] = 0;
 
-       psycho_anal_exit ();
-       exitFormatBitstream ();
-       III_FlushBitstream ();
+    psycho_anal_exit ();
+    exitFormatBitstream ();
+    III_FlushBitstream ();
 
-       return pEncodedOutput - pDest;
+    return pEncodedOutput - pDest;
 }
 
 
@@ -410,22 +410,22 @@ unsigned int                      codecExit (char *pDest)
 
 /*____ codecFlush() _________________________________________________________*/
 
-unsigned int                   codecFlush (char *pDest)
+unsigned int           codecFlush (char *pDest)
 {
-       pEncodedOutput = pDest;
-       outputBit = 8;
-       pEncodedOutput[0] = 0;
+    pEncodedOutput = pDest;
+    outputBit = 8;
+    pEncodedOutput[0] = 0;
 
-       flushFrame ();
+    flushFrame ();
 
-       whole_SpF = (int) avg_slots_per_frame;
-       frac_SpF  = avg_slots_per_frame - (double) whole_SpF;
-       slot_lag  = -frac_SpF;
+    whole_SpF = (int) avg_slots_per_frame;
+    frac_SpF  = avg_slots_per_frame - (double) whole_SpF;
+    slot_lag  = -frac_SpF;
 
-       l3_side.main_data_begin = 0;
-       fixStatic_reservoir ();
+    l3_side.main_data_begin = 0;
+    fixStatic_reservoir ();
 
-       return pEncodedOutput - pDest;
+    return pEncodedOutput - pDest;
 }