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 }