changeset 3841:6591b55f6482 libavcodec

Original Commit: r38 | ods15 | 2006-09-23 09:02:34 +0300 (Sat, 23 Sep 2006) | 2 lines buffer related struct variables
author ods15
date Mon, 02 Oct 2006 05:56:23 +0000
parents bb414feb6a0d
children 5f8cfa1a6fdb
files vorbis_enc.c
diffstat 1 files changed, 33 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/vorbis_enc.c	Mon Oct 02 05:56:21 2006 +0000
+++ b/vorbis_enc.c	Mon Oct 02 05:56:23 2006 +0000
@@ -24,6 +24,11 @@
 
 #include "avcodec.h"
 
+#define BITSTREAM_H // don't include this
+typedef int VLC;
+typedef int GetBitContext;
+#include "vorbis.h"
+
 #undef NDEBUG
 #include <assert.h>
 
@@ -91,6 +96,12 @@
     int channels;
     int sample_rate;
     int blocksize[2]; // in (1<<n) format
+    MDCTContext mdct[2];
+    const float * win[2];
+    float * saved;
+    float * samples;
+    float * floor; // also used for tmp values for mdct
+    float * coeffs; // also used for residue after floor
 
     int ncodebooks;
     codebook_t * codebooks;
@@ -327,6 +338,20 @@
     // single mode
     venc->modes[0].blockflag = 0;
     venc->modes[0].mapping = 0;
+
+    venc->saved = av_malloc(sizeof(float) * venc->channels * (1 << venc->blocksize[1]) / 2);
+    venc->samples = av_malloc(sizeof(float) * venc->channels * (1 << venc->blocksize[1]));
+    venc->floor = av_malloc(sizeof(float) * venc->channels * (1 << venc->blocksize[1]) / 2);
+    venc->coeffs = av_malloc(sizeof(float) * venc->channels * (1 << venc->blocksize[1]) / 2);
+
+    {
+        const float *vwin[8]={ vwin64, vwin128, vwin256, vwin512, vwin1024, vwin2048, vwin4096, vwin8192 };
+        venc->win[0] = vwin[venc->blocksize[0] - 6];
+        venc->win[1] = vwin[venc->blocksize[1] - 6];
+    }
+
+    ff_mdct_init(&venc->mdct[0], venc->blocksize[0], 0);
+    ff_mdct_init(&venc->mdct[1], venc->blocksize[1], 0);
 }
 
 static inline int ilog(unsigned int a) {
@@ -669,6 +694,14 @@
 
     av_freep(&venc->modes);
 
+    av_freep(&venc->saved);
+    av_freep(&venc->samples);
+    av_freep(&venc->floor);
+    av_freep(&venc->coeffs);
+
+    ff_mdct_end(&venc->mdct[0]);
+    ff_mdct_end(&venc->mdct[1]);
+
     av_freep(&avccontext->coded_frame);
     av_freep(&avccontext->extradata);