Mercurial > libavcodec.hg
comparison vorbis_enc.c @ 3874:84890fea8074 libavcodec
Original Commit: r74 | ods15 | 2006-09-29 13:03:31 +0300 (Fri, 29 Sep 2006) | 2 lines
support multiple codebooks for floor
author | ods15 |
---|---|
date | Mon, 02 Oct 2006 06:08:19 +0000 |
parents | 41bddab6a00b |
children | ad075294470d |
comparison
equal
deleted
inserted
replaced
3873:41bddab6a00b | 3874:84890fea8074 |
---|---|
751 } | 751 } |
752 | 752 |
753 counter = 2; | 753 counter = 2; |
754 for (i = 0; i < fc->partitions; i++) { | 754 for (i = 0; i < fc->partitions; i++) { |
755 floor_class_t * c = &fc->classes[fc->partition_to_class[i]]; | 755 floor_class_t * c = &fc->classes[fc->partition_to_class[i]]; |
756 codebook_t * book = &venc->codebooks[c->books[0]]; | 756 int k, cval = 0, csub = 1<<c->subclass; |
757 int k; | 757 if (c->subclass) { |
758 assert(!c->subclass); | 758 codebook_t * book = &venc->codebooks[c->masterbook]; |
759 int cshift = 0; | |
760 for (k = 0; k < c->dim; k++) { | |
761 int l; | |
762 for (l = 0; l < csub; l++) { | |
763 int maxval = 1; | |
764 if (c->books[l] != -1) maxval = venc->codebooks[c->books[l]].nentries; | |
765 // coded could be -1, but this still works, cause thats 0 | |
766 if (coded[counter + k] < maxval) break; | |
767 } | |
768 assert(l != csub); | |
769 cval |= l << cshift; | |
770 cshift += c->subclass; | |
771 } | |
772 assert(cval < book->nentries); | |
773 put_bits(pb, book->entries[cval].len, book->entries[cval].codeword); | |
774 } | |
759 for (k = 0; k < c->dim; k++) { | 775 for (k = 0; k < c->dim; k++) { |
776 codebook_t * book = &venc->codebooks[c->books[cval & (csub-1)]]; | |
760 int entry = coded[counter++]; | 777 int entry = coded[counter++]; |
778 cval >>= c->subclass; | |
761 if (entry == -1) entry = 0; | 779 if (entry == -1) entry = 0; |
762 assert(entry < book->nentries); | 780 assert(entry < book->nentries); |
763 assert(entry >= 0); | 781 assert(entry >= 0); |
764 put_bits(pb, book->entries[entry].len, book->entries[entry].codeword); | 782 put_bits(pb, book->entries[entry].len, book->entries[entry].codeword); |
765 } | 783 } |