comparison vorbis_enc.c @ 3820:3cfdf99da951 libavcodec

Original Commit: r14 | ods15 | 2006-09-22 12:26:17 +0300 (Fri, 22 Sep 2006) | 2 lines use several codebooks and passes to prevent header from being several MB...
author ods15
date Mon, 02 Oct 2006 05:55:37 +0000
parents 92063e9b6728
children 5fdb0fa900cd
comparison
equal deleted inserted replaced
3819:92063e9b6728 3820:3cfdf99da951
162 162
163 } 163 }
164 164
165 static void create_vorbis_context(venc_context_t * venc, AVCodecContext * avccontext) { 165 static void create_vorbis_context(venc_context_t * venc, AVCodecContext * avccontext) {
166 codebook_t * cb; 166 codebook_t * cb;
167 int i; 167 int i, book;
168 168
169 venc->channels = avccontext->channels; 169 venc->channels = avccontext->channels;
170 venc->sample_rate = avccontext->sample_rate; 170 venc->sample_rate = avccontext->sample_rate;
171 venc->blocksize[0] = venc->blocksize[1] = 8; 171 venc->blocksize[0] = venc->blocksize[1] = 8;
172 172
173 venc->ncodebooks = 3; 173 venc->ncodebooks = 10;
174 venc->codebooks = av_malloc(sizeof(codebook_t) * venc->ncodebooks); 174 venc->codebooks = av_malloc(sizeof(codebook_t) * venc->ncodebooks);
175 175
176 // codebook 1 - floor1 book, values 0..255 176 // codebook 1 - floor1 book, values 0..255
177 cb = &venc->codebooks[0]; 177 cb = &venc->codebooks[0];
178 cb->nentries = 256; 178 cb->nentries = 256;
197 cb->seq_p = 0; 197 cb->seq_p = 0;
198 cb->lookup = 0; 198 cb->lookup = 0;
199 cb->quantlist = NULL; 199 cb->quantlist = NULL;
200 ready_codebook(cb); 200 ready_codebook(cb);
201 201
202 // codebook 3 - vector, for the residue, dimentions 1. values -32768..32767 202 // codebook 3..10 - vector, for the residue, values -32767..32767, dimentions 1
203 cb = &venc->codebooks[2]; 203 for (book = 0; book < 8; book++) {
204 cb->nentries = 32767 - (-32768); 204 cb = &venc->codebooks[2 + book];
205 cb->entries = av_malloc(sizeof(cb_entry_t) * cb->nentries); 205 cb->nentries = 5;
206 for (i = 0; i < cb->nentries; i++) cb->entries[i].len = 16; 206 cb->entries = av_malloc(sizeof(cb_entry_t) * cb->nentries);
207 cb->ndimentions = 1; 207 for (i = 0; i < cb->nentries; i++) cb->entries[i].len = i == 2 ? 1 : 3;
208 cb->min = -32768.; 208 cb->ndimentions = 1;
209 cb->delta = 1.; 209 cb->delta = 1 << ((7 - book) * 2);
210 cb->seq_p = 0; 210 cb->min = -cb->delta*2;
211 cb->lookup = 2; 211 cb->seq_p = 0;
212 cb->quantlist = av_malloc(sizeof(int) * cb_lookup_vals(cb->lookup, cb->ndimentions, cb->nentries)); 212 cb->lookup = 2;
213 for (i = 0; i < cb->nentries; i++) cb->quantlist[i] = i; 213 cb->quantlist = av_malloc(sizeof(int) * cb_lookup_vals(cb->lookup, cb->ndimentions, cb->nentries));
214 ready_codebook(cb); 214 for (i = 0; i < cb->nentries; i++) cb->quantlist[i] = i;
215 ready_codebook(cb);
216 }
215 217
216 } 218 }
217 219
218 static inline int ilog(unsigned int a) { 220 static inline int ilog(unsigned int a) {
219 int i; 221 int i;