Mercurial > libavcodec.hg
comparison vorbis_enc.c @ 3866:4d5f73f10198 libavcodec
Original Commit: r66 | ods15 | 2006-09-25 18:42:13 +0300 (Mon, 25 Sep 2006) | 2 lines
some different values for higher accuracy
author | ods15 |
---|---|
date | Mon, 02 Oct 2006 06:07:59 +0000 |
parents | 04d496813135 |
children | edd2496ee02a |
comparison
equal
deleted
inserted
replaced
3865:04d496813135 | 3866:4d5f73f10198 |
---|---|
266 mapping_t * mc; | 266 mapping_t * mc; |
267 int i, book; | 267 int i, book; |
268 | 268 |
269 venc->channels = avccontext->channels; | 269 venc->channels = avccontext->channels; |
270 venc->sample_rate = avccontext->sample_rate; | 270 venc->sample_rate = avccontext->sample_rate; |
271 venc->blocksize[0] = venc->blocksize[1] = 8; | 271 venc->blocksize[0] = venc->blocksize[1] = 9; |
272 | 272 |
273 venc->ncodebooks = 10; | 273 venc->ncodebooks = 10; |
274 venc->codebooks = av_malloc(sizeof(codebook_t) * venc->ncodebooks); | 274 venc->codebooks = av_malloc(sizeof(codebook_t) * venc->ncodebooks); |
275 | 275 |
276 // codebook 0 - floor1 book, values 0..255 | 276 // codebook 0 - floor1 book, values 0..255 |
318 venc->nfloors = 1; | 318 venc->nfloors = 1; |
319 venc->floors = av_malloc(sizeof(floor_t) * venc->nfloors); | 319 venc->floors = av_malloc(sizeof(floor_t) * venc->nfloors); |
320 | 320 |
321 // just 1 floor | 321 // just 1 floor |
322 fc = &venc->floors[0]; | 322 fc = &venc->floors[0]; |
323 fc->partitions = 1; | 323 fc->partitions = 3; |
324 fc->partition_to_class = av_malloc(sizeof(int) * fc->partitions); | 324 fc->partition_to_class = av_malloc(sizeof(int) * fc->partitions); |
325 for (i = 0; i < fc->partitions; i++) fc->partition_to_class[i] = 0; | 325 for (i = 0; i < fc->partitions; i++) fc->partition_to_class[i] = 0; |
326 fc->nclasses = 1; | 326 fc->nclasses = 1; |
327 fc->classes = av_malloc(sizeof(floor_class_t) * fc->nclasses); | 327 fc->classes = av_malloc(sizeof(floor_class_t) * fc->nclasses); |
328 for (i = 0; i < fc->nclasses; i++) { | 328 for (i = 0; i < fc->nclasses; i++) { |
329 floor_class_t * c = &fc->classes[i]; | 329 floor_class_t * c = &fc->classes[i]; |
330 int j, books; | 330 int j, books; |
331 c->dim = 1; | 331 c->dim = 2; |
332 c->subclass = 0; | 332 c->subclass = 0; |
333 c->masterbook = 0; | 333 c->masterbook = 0; |
334 books = (1 << c->subclass); | 334 books = (1 << c->subclass); |
335 c->books = av_malloc(sizeof(int) * books); | 335 c->books = av_malloc(sizeof(int) * books); |
336 for (j = 0; j < books; j++) c->books[j] = 0; | 336 for (j = 0; j < books; j++) c->books[j] = 0; |
344 | 344 |
345 fc->list = av_malloc(sizeof(floor_entry_t) * fc->values); | 345 fc->list = av_malloc(sizeof(floor_entry_t) * fc->values); |
346 fc->list[0].x = 0; | 346 fc->list[0].x = 0; |
347 fc->list[1].x = 1 << fc->rangebits; | 347 fc->list[1].x = 1 << fc->rangebits; |
348 for (i = 2; i < fc->values; i++) { | 348 for (i = 2; i < fc->values; i++) { |
349 int a = i - 1; | 349 /*int a = i - 1; |
350 int g = ilog(a); | 350 int g = ilog(a); |
351 assert(g <= fc->rangebits); | 351 assert(g <= fc->rangebits); |
352 a ^= 1 << (g-1); | 352 a ^= 1 << (g-1); |
353 g = 1 << (fc->rangebits - g); | 353 g = 1 << (fc->rangebits - g); |
354 fc->list[i].x = g + a*2*g; | 354 fc->list[i].x = g + a*2*g;*/ |
355 int a[] = {14, 4, 58, 2, 8, 28, 90}; | |
356 fc->list[i].x = a[i - 2]; | |
355 } | 357 } |
356 ready_floor(fc); | 358 ready_floor(fc); |
357 | 359 |
358 venc->nresidues = 1; | 360 venc->nresidues = 1; |
359 venc->residues = av_malloc(sizeof(residue_t) * venc->nresidues); | 361 venc->residues = av_malloc(sizeof(residue_t) * venc->nresidues); |
368 rc->classbook = 1; | 370 rc->classbook = 1; |
369 rc->books = av_malloc(sizeof(int[8]) * rc->classifications); | 371 rc->books = av_malloc(sizeof(int[8]) * rc->classifications); |
370 for (i = 0; i < rc->classifications; i++) { | 372 for (i = 0; i < rc->classifications; i++) { |
371 int j; | 373 int j; |
372 for (j = 0; j < 8; j++) rc->books[i][j] = 2 + j; | 374 for (j = 0; j < 8; j++) rc->books[i][j] = 2 + j; |
373 rc->books[i][0] = rc->books[i][1] = rc->books[i][2] = rc->books[i][3] = -1; | 375 //rc->books[i][0] = rc->books[i][1] = rc->books[i][2] = rc->books[i][3] = -1; |
374 } | 376 } |
375 | 377 |
376 venc->nmappings = 1; | 378 venc->nmappings = 1; |
377 venc->mappings = av_malloc(sizeof(mapping_t) * venc->nmappings); | 379 venc->mappings = av_malloc(sizeof(mapping_t) * venc->nmappings); |
378 | 380 |
656 end = (position + end ) / 2; | 658 end = (position + end ) / 2; |
657 | 659 |
658 assert(end <= samples); | 660 assert(end <= samples); |
659 for (j = begin; j < end; j++) average += fabs(coeffs[j]); | 661 for (j = begin; j < end; j++) average += fabs(coeffs[j]); |
660 average /= end - begin; | 662 average /= end - begin; |
661 average /= 64; // MAGIC! | 663 average /= 5000; // MAGIC! |
662 for (j = 0; j < range; j++) if (floor1_inverse_db_table[j * fc->multiplier] > average) break; | 664 for (j = 0; j < range; j++) if (floor1_inverse_db_table[j * fc->multiplier] > average) break; |
663 posts[fc->list[i].sort] = j; | 665 posts[fc->list[i].sort] = j; |
664 } | 666 } |
665 } | 667 } |
666 | 668 |