[FFmpeg-cvslog] r26209 - in trunk: Changelog configure libavcodec/Makefile libavcodec/ac3enc.c libavcodec/ac3enc_fixed.c libavcodec/ac3enc_float.c libavcodec/ac3enc_float.h libavcodec/allcodecs.c libavcodec/avcode...

jbr subversion
Tue Jan 4 12:53:44 CET 2011


Author: jbr
Date: Tue Jan  4 12:53:44 2011
New Revision: 26209

Log:
Change the AC-3 encoder to use floating-point.
Fixed-point AC-3 encoder renamed to ac3_fixed.
Regression test acodec-ac3 renamed to acodec-ac3_fixed.
Regression test lavf-rm changed to use ac3_fixed encoder.

Added:
   trunk/libavcodec/ac3enc_float.c
      - copied, changed from r26206, trunk/libavcodec/ac3enc_fixed.c
   trunk/libavcodec/ac3enc_float.h
      - copied, changed from r26206, trunk/libavcodec/ac3enc_fixed.h
   trunk/tests/ref/acodec/ac3_fixed
      - copied unchanged from r26205, trunk/tests/ref/acodec/ac3
Deleted:
   trunk/tests/ref/acodec/ac3
Modified:
   trunk/Changelog
   trunk/configure
   trunk/libavcodec/Makefile
   trunk/libavcodec/ac3enc.c
   trunk/libavcodec/ac3enc_fixed.c
   trunk/libavcodec/allcodecs.c
   trunk/libavcodec/avcodec.h
   trunk/tests/codec-regression.sh
   trunk/tests/lavf-regression.sh

Modified: trunk/Changelog
==============================================================================
--- trunk/Changelog	Tue Jan  4 12:38:29 2011	(r26208)
+++ trunk/Changelog	Tue Jan  4 12:53:44 2011	(r26209)
@@ -70,6 +70,7 @@ version <next>:
 - Windows Televison (WTV) demuxer
 - FFmpeg metadata format muxer and demuxer
 - SubRip (srt) subtitle decoder
+- floating-point AC-3 encoder added
 
 
 version 0.6:

Modified: trunk/configure
==============================================================================
--- trunk/configure	Tue Jan  4 12:38:29 2011	(r26208)
+++ trunk/configure	Tue Jan  4 12:53:44 2011	(r26209)
@@ -1193,6 +1193,7 @@ aac_decoder_select="mdct rdft"
 aac_encoder_select="mdct"
 aac_latm_decoder_select="aac_decoder aac_latm_parser"
 ac3_decoder_select="mdct ac3_parser"
+ac3_encoder_select="mdct"
 alac_encoder_select="lpc"
 amrnb_decoder_select="lsp"
 amrwb_decoder_select="lsp"
@@ -1453,7 +1454,6 @@ set_ne_test_deps(){
 }
 
 test_deps _encoder _decoder                                             \
-    ac3                                                                 \
     adpcm_g726=g726                                                     \
     adpcm_ima_qt                                                        \
     adpcm_ima_wav                                                       \
@@ -1525,6 +1525,7 @@ test_deps _muxer _demuxer               
     wav                                                                 \
     yuv4mpegpipe=yuv4mpeg                                               \
 
+ac3_fixed_test_deps="ac3_fixed_encoder ac3_decoder rm_muxer rm_demuxer"
 mpg_test_deps="mpeg1system_muxer mpegps_demuxer"
 
 set_ne_test_deps pixdesc

Modified: trunk/libavcodec/Makefile
==============================================================================
--- trunk/libavcodec/Makefile	Tue Jan  4 12:38:29 2011	(r26208)
+++ trunk/libavcodec/Makefile	Tue Jan  4 12:53:44 2011	(r26209)
@@ -54,7 +54,8 @@ OBJS-$(CONFIG_AAC_ENCODER)             +
                                           mpeg4audio.o
 OBJS-$(CONFIG_AASC_DECODER)            += aasc.o msrledec.o
 OBJS-$(CONFIG_AC3_DECODER)             += ac3dec.o ac3dec_data.o ac3.o
-OBJS-$(CONFIG_AC3_ENCODER)             += ac3enc_fixed.o ac3tab.o ac3.o
+OBJS-$(CONFIG_AC3_ENCODER)             += ac3enc_float.o ac3tab.o ac3.o
+OBJS-$(CONFIG_AC3_FIXED_ENCODER)       += ac3enc_fixed.o ac3tab.o ac3.o
 OBJS-$(CONFIG_ALAC_DECODER)            += alac.o
 OBJS-$(CONFIG_ALAC_ENCODER)            += alacenc.o
 OBJS-$(CONFIG_ALS_DECODER)             += alsdec.o bgmc.o mpeg4audio.o

Modified: trunk/libavcodec/ac3enc.c
==============================================================================
--- trunk/libavcodec/ac3enc.c	Tue Jan  4 12:38:29 2011	(r26208)
+++ trunk/libavcodec/ac3enc.c	Tue Jan  4 12:53:44 2011	(r26209)
@@ -37,6 +37,11 @@
 #include "audioconvert.h"
 
 
+#ifndef CONFIG_AC3ENC_FLOAT
+#define CONFIG_AC3ENC_FLOAT 0
+#endif
+
+
 /** Maximum number of exponent groups. +1 for separate DC exponent. */
 #define AC3_MAX_EXP_GROUPS 85
 
@@ -44,7 +49,11 @@
 #define SCALE_FLOAT(a, bits) lrintf((a) * (float)(1 << (bits)))
 
 
+#if CONFIG_AC3ENC_FLOAT
+#include "ac3enc_float.h"
+#else
 #include "ac3enc_fixed.h"
+#endif
 
 
 /**
@@ -130,7 +139,7 @@ typedef struct AC3EncodeContext {
 } AC3EncodeContext;
 
 
-/* prototypes for functions in ac3enc_fixed.c */
+/* prototypes for functions in ac3enc_fixed.c and ac3_float.c */
 
 static av_cold void mdct_end(AC3MDCTContext *mdct);
 

Modified: trunk/libavcodec/ac3enc_fixed.c
==============================================================================
--- trunk/libavcodec/ac3enc_fixed.c	Tue Jan  4 12:38:29 2011	(r26208)
+++ trunk/libavcodec/ac3enc_fixed.c	Tue Jan  4 12:53:44 2011	(r26209)
@@ -26,6 +26,7 @@
  * fixed-point AC-3 encoder.
  */
 
+#undef CONFIG_AC3ENC_FLOAT
 #include "ac3enc.c"
 
 
@@ -413,8 +414,8 @@ int main(void)
 #endif /* TEST */
 
 
-AVCodec ac3_encoder = {
-    "ac3",
+AVCodec ac3_fixed_encoder = {
+    "ac3_fixed",
     AVMEDIA_TYPE_AUDIO,
     CODEC_ID_AC3,
     sizeof(AC3EncodeContext),

Copied and modified: trunk/libavcodec/ac3enc_float.c (from r26206, trunk/libavcodec/ac3enc_fixed.c)
==============================================================================
--- trunk/libavcodec/ac3enc_fixed.c	Mon Jan  3 17:08:56 2011	(r26206, copy source)
+++ trunk/libavcodec/ac3enc_float.c	Tue Jan  4 12:53:44 2011	(r26209)
@@ -23,56 +23,20 @@
 
 /**
  * @file
- * fixed-point AC-3 encoder.
+ * floating-point AC-3 encoder.
  */
 
+#define CONFIG_AC3ENC_FLOAT 1
 #include "ac3enc.c"
 
 
-/** Scale a float value by 2^15, convert to an integer, and clip to range -32767..32767. */
-#define FIX15(a) av_clip(SCALE_FLOAT(a, 15), -32767, 32767)
-
-
 /**
  * Finalize MDCT and free allocated memory.
  */
 static av_cold void mdct_end(AC3MDCTContext *mdct)
 {
-    mdct->nbits = 0;
-    av_freep(&mdct->costab);
-    av_freep(&mdct->sintab);
-    av_freep(&mdct->xcos1);
-    av_freep(&mdct->xsin1);
-    av_freep(&mdct->rot_tmp);
-    av_freep(&mdct->cplx_tmp);
-}
-
-
-/**
- * Initialize FFT tables.
- * @param ln log2(FFT size)
- */
-static av_cold int fft_init(AVCodecContext *avctx, AC3MDCTContext *mdct, int ln)
-{
-    int i, n, n2;
-    float alpha;
-
-    n  = 1 << ln;
-    n2 = n >> 1;
-
-    FF_ALLOC_OR_GOTO(avctx, mdct->costab, n2 * sizeof(*mdct->costab), fft_alloc_fail);
-    FF_ALLOC_OR_GOTO(avctx, mdct->sintab, n2 * sizeof(*mdct->sintab), fft_alloc_fail);
-
-    for (i = 0; i < n2; i++) {
-        alpha     = 2.0 * M_PI * i / n;
-        mdct->costab[i] = FIX15(cos(alpha));
-        mdct->sintab[i] = FIX15(sin(alpha));
-    }
-
-    return 0;
-fft_alloc_fail:
-    mdct_end(mdct);
-    return AVERROR(ENOMEM);
+    ff_mdct_end(&mdct->fft);
+    av_freep(&mdct->window);
 }
 
 
@@ -83,129 +47,21 @@ fft_alloc_fail:
 static av_cold int mdct_init(AVCodecContext *avctx, AC3MDCTContext *mdct,
                              int nbits)
 {
-    int i, n, n4, ret;
+    float *window;
+    int n, n2;
 
     n  = 1 << nbits;
-    n4 = n >> 2;
-
-    mdct->nbits = nbits;
-
-    ret = fft_init(avctx, mdct, nbits - 2);
-    if (ret)
-        return ret;
-
-    mdct->window = ff_ac3_window;
-
-    FF_ALLOC_OR_GOTO(avctx, mdct->xcos1,    n4 * sizeof(*mdct->xcos1),    mdct_alloc_fail);
-    FF_ALLOC_OR_GOTO(avctx, mdct->xsin1,    n4 * sizeof(*mdct->xsin1),    mdct_alloc_fail);
-    FF_ALLOC_OR_GOTO(avctx, mdct->rot_tmp,  n  * sizeof(*mdct->rot_tmp),  mdct_alloc_fail);
-    FF_ALLOC_OR_GOTO(avctx, mdct->cplx_tmp, n4 * sizeof(*mdct->cplx_tmp), mdct_alloc_fail);
-
-    for (i = 0; i < n4; i++) {
-        float alpha = 2.0 * M_PI * (i + 1.0 / 8.0) / n;
-        mdct->xcos1[i] = FIX15(-cos(alpha));
-        mdct->xsin1[i] = FIX15(-sin(alpha));
-    }
-
-    return 0;
-mdct_alloc_fail:
-    mdct_end(mdct);
-    return AVERROR(ENOMEM);
-}
-
-
-/** Butterfly op */
-#define BF(pre, pim, qre, qim, pre1, pim1, qre1, qim1)  \
-{                                                       \
-  int ax, ay, bx, by;                                   \
-  bx  = pre1;                                           \
-  by  = pim1;                                           \
-  ax  = qre1;                                           \
-  ay  = qim1;                                           \
-  pre = (bx + ax) >> 1;                                 \
-  pim = (by + ay) >> 1;                                 \
-  qre = (bx - ax) >> 1;                                 \
-  qim = (by - ay) >> 1;                                 \
-}
-
-
-/** Complex multiply */
-#define CMUL(pre, pim, are, aim, bre, bim)              \
-{                                                       \
-   pre = (MUL16(are, bre) - MUL16(aim, bim)) >> 15;     \
-   pim = (MUL16(are, bim) + MUL16(bre, aim)) >> 15;     \
-}
-
-
-/**
- * Calculate a 2^n point complex FFT on 2^ln points.
- * @param z  complex input/output samples
- * @param ln log2(FFT size)
- */
-static void fft(AC3MDCTContext *mdct, IComplex *z, int ln)
-{
-    int j, l, np, np2;
-    int nblocks, nloops;
-    register IComplex *p,*q;
-    int tmp_re, tmp_im;
-
-    np = 1 << ln;
+    n2 = n >> 1;
 
-    /* reverse */
-    for (j = 0; j < np; j++) {
-        int k = av_reverse[j] >> (8 - ln);
-        if (k < j)
-            FFSWAP(IComplex, z[k], z[j]);
+    window = av_malloc(n2 * sizeof(*window));
+    if (!window) {
+        av_log(avctx, AV_LOG_ERROR, "Cannot allocate memory.\n");
+        return AVERROR(ENOMEM);
     }
+    ff_kbd_window_init(window, 5.0, n2);
+    mdct->window = window;
 
-    /* pass 0 */
-
-    p = &z[0];
-    j = np >> 1;
-    do {
-        BF(p[0].re, p[0].im, p[1].re, p[1].im,
-           p[0].re, p[0].im, p[1].re, p[1].im);
-        p += 2;
-    } while (--j);
-
-    /* pass 1 */
-
-    p = &z[0];
-    j = np >> 2;
-    do {
-        BF(p[0].re, p[0].im, p[2].re,  p[2].im,
-           p[0].re, p[0].im, p[2].re,  p[2].im);
-        BF(p[1].re, p[1].im, p[3].re,  p[3].im,
-           p[1].re, p[1].im, p[3].im, -p[3].re);
-        p+=4;
-    } while (--j);
-
-    /* pass 2 .. ln-1 */
-
-    nblocks = np >> 3;
-    nloops  =  1 << 2;
-    np2     = np >> 1;
-    do {
-        p = z;
-        q = z + nloops;
-        for (j = 0; j < nblocks; j++) {
-            BF(p->re, p->im, q->re, q->im,
-               p->re, p->im, q->re, q->im);
-            p++;
-            q++;
-            for(l = nblocks; l < np2; l += nblocks) {
-                CMUL(tmp_re, tmp_im, mdct->costab[l], -mdct->sintab[l], q->re, q->im);
-                BF(p->re, p->im, q->re,  q->im,
-                   p->re, p->im, tmp_re, tmp_im);
-                p++;
-                q++;
-            }
-            p += nloops;
-            q += nloops;
-        }
-        nblocks = nblocks >> 1;
-        nloops  = nloops  << 1;
-    } while (nblocks);
+    return ff_mdct_init(&mdct->fft, nbits, 0, -2.0 / n);
 }
 
 
@@ -214,203 +70,36 @@ static void fft(AC3MDCTContext *mdct, IC
  * @param out 256 output frequency coefficients
  * @param in  512 windowed input audio samples
  */
-static void mdct512(AC3MDCTContext *mdct, int32_t *out, int16_t *in)
+static void mdct512(AC3MDCTContext *mdct, float *out, float *in)
 {
-    int i, re, im, n, n2, n4;
-    int16_t *rot = mdct->rot_tmp;
-    IComplex *x  = mdct->cplx_tmp;
-
-    n  = 1 << mdct->nbits;
-    n2 = n >> 1;
-    n4 = n >> 2;
-
-    /* shift to simplify computations */
-    for (i = 0; i <n4; i++)
-        rot[i] = -in[i + 3*n4];
-    memcpy(&rot[n4], &in[0], 3*n4*sizeof(*in));
-
-    /* pre rotation */
-    for (i = 0; i < n4; i++) {
-        re =  ((int)rot[   2*i] - (int)rot[ n-1-2*i]) >> 1;
-        im = -((int)rot[n2+2*i] - (int)rot[n2-1-2*i]) >> 1;
-        CMUL(x[i].re, x[i].im, re, im, -mdct->xcos1[i], mdct->xsin1[i]);
-    }
-
-    fft(mdct, x, mdct->nbits - 2);
-
-    /* post rotation */
-    for (i = 0; i < n4; i++) {
-        re = x[i].re;
-        im = x[i].im;
-        CMUL(out[n2-1-2*i], out[2*i], re, im, mdct->xsin1[i], mdct->xcos1[i]);
-    }
+    ff_mdct_calc(&mdct->fft, out, in);
 }
 
 
 /**
  * Apply KBD window to input samples prior to MDCT.
  */
-static void apply_window(int16_t *output, const int16_t *input,
-                         const int16_t *window, int n)
+static void apply_window(float *output, const float *input,
+                         const float *window, int n)
 {
     int i;
     int n2 = n >> 1;
 
     for (i = 0; i < n2; i++) {
-        output[i]     = MUL16(input[i],     window[i]) >> 15;
-        output[n-i-1] = MUL16(input[n-i-1], window[i]) >> 15;
-    }
-}
-
-
-/**
- * Calculate the log2() of the maximum absolute value in an array.
- * @param tab input array
- * @param n   number of values in the array
- * @return    log2(max(abs(tab[])))
- */
-static int log2_tab(int16_t *tab, int n)
-{
-    int i, v;
-
-    v = 0;
-    for (i = 0; i < n; i++)
-        v |= abs(tab[i]);
-
-    return av_log2(v);
-}
-
-
-/**
- * Left-shift each value in an array by a specified amount.
- * @param tab    input array
- * @param n      number of values in the array
- * @param lshift left shift amount. a negative value means right shift.
- */
-static void lshift_tab(int16_t *tab, int n, int lshift)
-{
-    int i;
-
-    if (lshift > 0) {
-        for (i = 0; i < n; i++)
-            tab[i] <<= lshift;
-    } else if (lshift < 0) {
-        lshift = -lshift;
-        for (i = 0; i < n; i++)
-            tab[i] >>= lshift;
+        output[i]     = input[i]     * window[i];
+        output[n-i-1] = input[n-i-1] * window[i];
     }
 }
 
 
 /**
  * Normalize the input samples to use the maximum available precision.
- * This assumes signed 16-bit input samples. Exponents are reduced by 9 to
- * match the 24-bit internal precision for MDCT coefficients.
- *
- * @return exponent shift
  */
 static int normalize_samples(AC3EncodeContext *s)
 {
-    int v = 14 - log2_tab(s->windowed_samples, AC3_WINDOW_SIZE);
-    v = FFMAX(0, v);
-    lshift_tab(s->windowed_samples, AC3_WINDOW_SIZE, v);
-    return v - 9;
-}
-
-
-#ifdef TEST
-/*************************************************************************/
-/* TEST */
-
-#include "libavutil/lfg.h"
-
-#define MDCT_NBITS 9
-#define MDCT_SAMPLES (1 << MDCT_NBITS)
-#define FN (MDCT_SAMPLES/4)
-
-
-static void fft_test(AC3MDCTContext *mdct, AVLFG *lfg)
-{
-    IComplex in[FN], in1[FN];
-    int k, n, i;
-    float sum_re, sum_im, a;
-
-    for (i = 0; i < FN; i++) {
-        in[i].re = av_lfg_get(lfg) % 65535 - 32767;
-        in[i].im = av_lfg_get(lfg) % 65535 - 32767;
-        in1[i]   = in[i];
-    }
-    fft(mdct, in, 7);
-
-    /* do it by hand */
-    for (k = 0; k < FN; k++) {
-        sum_re = 0;
-        sum_im = 0;
-        for (n = 0; n < FN; n++) {
-            a = -2 * M_PI * (n * k) / FN;
-            sum_re += in1[n].re * cos(a) - in1[n].im * sin(a);
-            sum_im += in1[n].re * sin(a) + in1[n].im * cos(a);
-        }
-        av_log(NULL, AV_LOG_DEBUG, "%3d: %6d,%6d %6.0f,%6.0f\n",
-               k, in[k].re, in[k].im, sum_re / FN, sum_im / FN);
-    }
-}
-
-
-static void mdct_test(AC3MDCTContext *mdct, AVLFG *lfg)
-{
-    int16_t input[MDCT_SAMPLES];
-    int32_t output[AC3_MAX_COEFS];
-    float input1[MDCT_SAMPLES];
-    float output1[AC3_MAX_COEFS];
-    float s, a, err, e, emax;
-    int i, k, n;
-
-    for (i = 0; i < MDCT_SAMPLES; i++) {
-        input[i]  = (av_lfg_get(lfg) % 65535 - 32767) * 9 / 10;
-        input1[i] = input[i];
-    }
-
-    mdct512(mdct, output, input);
-
-    /* do it by hand */
-    for (k = 0; k < AC3_MAX_COEFS; k++) {
-        s = 0;
-        for (n = 0; n < MDCT_SAMPLES; n++) {
-            a = (2*M_PI*(2*n+1+MDCT_SAMPLES/2)*(2*k+1) / (4 * MDCT_SAMPLES));
-            s += input1[n] * cos(a);
-        }
-        output1[k] = -2 * s / MDCT_SAMPLES;
-    }
-
-    err  = 0;
-    emax = 0;
-    for (i = 0; i < AC3_MAX_COEFS; i++) {
-        av_log(NULL, AV_LOG_DEBUG, "%3d: %7d %7.0f\n", i, output[i], output1[i]);
-        e = output[i] - output1[i];
-        if (e > emax)
-            emax = e;
-        err += e * e;
-    }
-    av_log(NULL, AV_LOG_DEBUG, "err2=%f emax=%f\n", err / AC3_MAX_COEFS, emax);
-}
-
-
-int main(void)
-{
-    AVLFG lfg;
-    AC3MDCTContext mdct;
-
-    mdct.avctx = NULL;
-    av_log_set_level(AV_LOG_DEBUG);
-    mdct_init(&mdct, 9);
-
-    fft_test(&mdct, &lfg);
-    mdct_test(&mdct, &lfg);
-
+    /* Normalization is not needed for floating-point samples, so just return 0 */
     return 0;
 }
-#endif /* TEST */
 
 
 AVCodec ac3_encoder = {
@@ -422,7 +111,7 @@ AVCodec ac3_encoder = {
     ac3_encode_frame,
     ac3_encode_close,
     NULL,
-    .sample_fmts = (const enum AVSampleFormat[]){AV_SAMPLE_FMT_S16,AV_SAMPLE_FMT_NONE},
+    .sample_fmts = (const enum AVSampleFormat[]){AV_SAMPLE_FMT_FLT,AV_SAMPLE_FMT_NONE},
     .long_name = NULL_IF_CONFIG_SMALL("ATSC A/52A (AC-3)"),
     .channel_layouts = ac3_channel_layouts,
 };

Copied and modified: trunk/libavcodec/ac3enc_float.h (from r26206, trunk/libavcodec/ac3enc_fixed.h)
==============================================================================
--- trunk/libavcodec/ac3enc_fixed.h	Mon Jan  3 17:08:56 2011	(r26206, copy source)
+++ trunk/libavcodec/ac3enc_float.h	Tue Jan  4 12:53:44 2011	(r26209)
@@ -23,38 +23,24 @@
 
 /**
  * @file
- * fixed-point AC-3 encoder header.
+ * floating-point AC-3 encoder header.
  */
 
-#ifndef AVCODEC_AC3ENC_FIXED_H
-#define AVCODEC_AC3ENC_FIXED_H
+#ifndef AVCODEC_AC3ENC_FLOAT_H
+#define AVCODEC_AC3ENC_FLOAT_H
 
-#include <stdint.h>
+#include "fft.h"
 
 
-typedef int16_t SampleType;
-typedef int32_t CoefType;
-
-#define SCALE_COEF(a) (a)
+typedef float SampleType;
+typedef float CoefType;
 
+#define SCALE_COEF(a) SCALE_FLOAT((a), 24)
 
-/**
- * Compex number.
- * Used in fixed-point MDCT calculation.
- */
-typedef struct IComplex {
-    int16_t re,im;
-} IComplex;
 
 typedef struct AC3MDCTContext {
-    const int16_t *window;                  ///< MDCT window function
-    int nbits;                              ///< log2(transform size)
-    int16_t *costab;                        ///< FFT cos table
-    int16_t *sintab;                        ///< FFT sin table
-    int16_t *xcos1;                         ///< MDCT cos table
-    int16_t *xsin1;                         ///< MDCT sin table
-    int16_t *rot_tmp;                       ///< temp buffer for pre-rotated samples
-    IComplex *cplx_tmp;                     ///< temp buffer for complex pre-rotated samples
+    const float *window;    ///< MDCT window function
+    FFTContext fft;         ///< FFT context for MDCT calculation
 } AC3MDCTContext;
 
-#endif /* AVCODEC_AC3ENC_FIXED_H */
+#endif /* AVCODEC_AC3ENC_FLOAT_H */

Modified: trunk/libavcodec/allcodecs.c
==============================================================================
--- trunk/libavcodec/allcodecs.c	Tue Jan  4 12:38:29 2011	(r26208)
+++ trunk/libavcodec/allcodecs.c	Tue Jan  4 12:53:44 2011	(r26209)
@@ -222,6 +222,7 @@ void avcodec_register_all(void)
     REGISTER_ENCDEC  (AAC, aac);
     REGISTER_DECODER (AAC_LATM, aac_latm);
     REGISTER_ENCDEC  (AC3, ac3);
+    REGISTER_ENCODER (AC3_FIXED, ac3_fixed);
     REGISTER_ENCDEC  (ALAC, alac);
     REGISTER_DECODER (ALS, als);
     REGISTER_DECODER (AMRNB, amrnb);

Modified: trunk/libavcodec/avcodec.h
==============================================================================
--- trunk/libavcodec/avcodec.h	Tue Jan  4 12:38:29 2011	(r26208)
+++ trunk/libavcodec/avcodec.h	Tue Jan  4 12:53:44 2011	(r26209)
@@ -32,7 +32,7 @@
 #include "libavutil/cpu.h"
 
 #define LIBAVCODEC_VERSION_MAJOR 52
-#define LIBAVCODEC_VERSION_MINOR 101
+#define LIBAVCODEC_VERSION_MINOR 102
 #define LIBAVCODEC_VERSION_MICRO  0
 
 #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \

Modified: trunk/tests/codec-regression.sh
==============================================================================
--- trunk/tests/codec-regression.sh	Tue Jan  4 12:38:29 2011	(r26208)
+++ trunk/tests/codec-regression.sh	Tue Jan  4 12:53:44 2011	(r26209)
@@ -269,8 +269,8 @@ do_audio_decoding
 $tiny_psnr $pcm_dst $pcm_ref 2 1924 >> $logfile
 fi
 
-if [ -n "$do_ac3" ] ; then
-do_audio_encoding ac3.rm "" -vn
+if [ -n "$do_ac3_fixed" ] ; then
+do_audio_encoding ac3.rm "" "-vn -acodec ac3_fixed"
 # binaries configured with --disable-sse decode ac3 differently
 #do_audio_decoding
 #$tiny_psnr $pcm_dst $pcm_ref 2 1024 >> $logfile

Modified: trunk/tests/lavf-regression.sh
==============================================================================
--- trunk/tests/lavf-regression.sh	Tue Jan  4 12:38:29 2011	(r26208)
+++ trunk/tests/lavf-regression.sh	Tue Jan  4 12:53:44 2011	(r26209)
@@ -57,7 +57,7 @@ fi
 
 if [ -n "$do_rm" ] ; then
 file=${outfile}lavf.rm
-do_ffmpeg $file -t 1 -qscale 10 -f image2 -vcodec pgmyuv -i $raw_src -f s16le -i $pcm_src
+do_ffmpeg $file -t 1 -qscale 10 -f image2 -vcodec pgmyuv -i $raw_src -f s16le -i $pcm_src -acodec ac3_fixed
 # broken
 #do_ffmpeg_crc $file -i $target_path/$file
 fi



More information about the ffmpeg-cvslog mailing list