Mercurial > libavcodec.hg
comparison vorbis_enc.c @ 3871:7fffd3ab056a libavcodec
Original Commit: r71 | ods15 | 2006-09-28 21:00:24 +0300 (Thu, 28 Sep 2006) | 2 lines
residue type 2
author | ods15 |
---|---|
date | Mon, 02 Oct 2006 06:08:11 +0000 |
parents | 986fb3b8fe60 |
children | 9f99e471bf72 |
comparison
equal
deleted
inserted
replaced
3870:986fb3b8fe60 | 3871:7fffd3ab056a |
---|---|
805 int pass, i, j, p, k; | 805 int pass, i, j, p, k; |
806 int psize = rc->partition_size; | 806 int psize = rc->partition_size; |
807 int partitions = (rc->end - rc->begin) / psize; | 807 int partitions = (rc->end - rc->begin) / psize; |
808 int classes[channels][partitions]; | 808 int classes[channels][partitions]; |
809 int classwords = venc->codebooks[rc->classbook].ndimentions; | 809 int classwords = venc->codebooks[rc->classbook].ndimentions; |
810 int real_ch = channels; | |
811 | |
812 if (rc->type == 2) channels = 1; | |
810 | 813 |
811 for (pass = 0; pass < 8; pass++) { | 814 for (pass = 0; pass < 8; pass++) { |
812 p = 0; | 815 p = 0; |
813 while (p < partitions) { | 816 while (p < partitions) { |
814 if (pass == 0) for (j = 0; j < channels; j++) { | 817 if (pass == 0) for (j = 0; j < channels; j++) { |
825 int nbook = rc->books[classes[j][p]][pass]; | 828 int nbook = rc->books[classes[j][p]][pass]; |
826 codebook_t * book = &venc->codebooks[nbook]; | 829 codebook_t * book = &venc->codebooks[nbook]; |
827 float * buf = coeffs + samples*j + rc->begin + p*psize; | 830 float * buf = coeffs + samples*j + rc->begin + p*psize; |
828 if (nbook == -1) continue; | 831 if (nbook == -1) continue; |
829 | 832 |
830 assert(rc->type == 0); | 833 assert(rc->type == 0 || rc->type == 2); |
831 assert(!(psize % book->ndimentions)); | 834 assert(!(psize % book->ndimentions)); |
832 | 835 |
836 if (rc->type == 0) { | |
833 for (k = 0; k < psize; k += book->ndimentions) { | 837 for (k = 0; k < psize; k += book->ndimentions) { |
834 float * a = put_vector(book, pb, &buf[k]); | 838 float * a = put_vector(book, pb, &buf[k]); |
835 int l; | 839 int l; |
836 for (l = 0; l < book->ndimentions; l++) buf[k + l] -= a[l]; | 840 for (l = 0; l < book->ndimentions; l++) buf[k + l] -= a[l]; |
841 } | |
842 } else { | |
843 for (k = 0; k < psize; k += book->ndimentions) { | |
844 int dim = book->ndimentions, s = rc->begin + p * psize, l; | |
845 float vec[dim], * pvec = vec, * a; | |
846 for (l = s + k; l < s + k + dim; l++) | |
847 *pvec++ = coeffs[(l % real_ch) * samples + l / real_ch]; | |
848 a = put_vector(book, pb, vec); | |
849 for (l = s + k; l < s + k + dim; l++) | |
850 coeffs[(l % real_ch) * samples + l / real_ch] -= *a++; | |
851 } | |
837 } | 852 } |
838 } | 853 } |
839 } | 854 } |
840 } | 855 } |
841 } | 856 } |