Mercurial > libavcodec.hg
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; |