Mercurial > libavcodec.hg
comparison vorbis.c @ 2741:d5ac91dafaa8 libavcodec
maxdepth is supposed to be a constant, its faster if its too large then if its non constant
author | michael |
---|---|
date | Mon, 30 May 2005 19:14:50 +0000 |
parents | 977209c4cc54 |
children | 9f469a5d3a33 |
comparison
equal
deleted
inserted
replaced
2740:977209c4cc54 | 2741:d5ac91dafaa8 |
---|---|
896 | 896 |
897 AV_DEBUG("Cbits %d \n", cbits); | 897 AV_DEBUG("Cbits %d \n", cbits); |
898 | 898 |
899 if (cbits) { // this reads all subclasses for this partition's class | 899 if (cbits) { // this reads all subclasses for this partition's class |
900 cval=get_vlc2(gb, vc->codebooks[vf->class_masterbook[class_]].vlc.table, | 900 cval=get_vlc2(gb, vc->codebooks[vf->class_masterbook[class_]].vlc.table, |
901 V_NB_BITS, vc->codebooks[vf->class_masterbook[class_]].maxdepth); | 901 V_NB_BITS, 3); |
902 } | 902 } |
903 | 903 |
904 for(j=0;j<cdim;++j) { | 904 for(j=0;j<cdim;++j) { |
905 book=vf->subclass_books[class_][cval & csub]; | 905 book=vf->subclass_books[class_][cval & csub]; |
906 | 906 |
907 AV_DEBUG("book %d Cbits %d cval %d bits:%d \n", book, cbits, cval, get_bits_count(gb)); | 907 AV_DEBUG("book %d Cbits %d cval %d bits:%d \n", book, cbits, cval, get_bits_count(gb)); |
908 | 908 |
909 cval=cval>>cbits; | 909 cval=cval>>cbits; |
910 if (book>0) { | 910 if (book>0) { |
911 floor1_Y[offset+j]=get_vlc2(gb, vc->codebooks[book].vlc.table, | 911 floor1_Y[offset+j]=get_vlc2(gb, vc->codebooks[book].vlc.table, |
912 V_NB_BITS, vc->codebooks[book].maxdepth); | 912 V_NB_BITS, 3); |
913 } else { | 913 } else { |
914 floor1_Y[offset+j]=0; | 914 floor1_Y[offset+j]=0; |
915 } | 915 } |
916 | 916 |
917 AV_DEBUG(" floor(%d) = %d \n", vf->x_list[offset+j], floor1_Y[offset+j]); | 917 AV_DEBUG(" floor(%d) = %d \n", vf->x_list[offset+j], floor1_Y[offset+j]); |
1093 for(partition_count=0;partition_count<ptns_to_read;) { // SPEC error | 1093 for(partition_count=0;partition_count<ptns_to_read;) { // SPEC error |
1094 if (!pass) { | 1094 if (!pass) { |
1095 for(j_times_ptns_to_read=0, j=0;j<ch_used;++j) { | 1095 for(j_times_ptns_to_read=0, j=0;j<ch_used;++j) { |
1096 if (!do_not_decode[j]) { | 1096 if (!do_not_decode[j]) { |
1097 uint_fast32_t temp=get_vlc2(gb, vc->codebooks[vr->classbook].vlc.table, | 1097 uint_fast32_t temp=get_vlc2(gb, vc->codebooks[vr->classbook].vlc.table, |
1098 V_NB_BITS, vc->codebooks[vr->classbook].maxdepth); | 1098 V_NB_BITS, 3); |
1099 | 1099 |
1100 AV_DEBUG("Classword: %d \n", temp); | 1100 AV_DEBUG("Classword: %d \n", temp); |
1101 | 1101 |
1102 for(i=0;i<c_p_c;++i) { | 1102 for(i=0;i<c_p_c;++i) { |
1103 uint_fast32_t temp2; | 1103 uint_fast32_t temp2; |
1125 uint_fast16_t step=vr->partition_size/vc->codebooks[vqbook].dimensions; | 1125 uint_fast16_t step=vr->partition_size/vc->codebooks[vqbook].dimensions; |
1126 | 1126 |
1127 voffs=voffset+j*vlen; | 1127 voffs=voffset+j*vlen; |
1128 for(k=0;k<step;++k) { | 1128 for(k=0;k<step;++k) { |
1129 coffs=get_vlc2(gb, vc->codebooks[vqbook].vlc.table, | 1129 coffs=get_vlc2(gb, vc->codebooks[vqbook].vlc.table, |
1130 V_NB_BITS, vc->codebooks[vr->classbook].maxdepth) * vc->codebooks[vqbook].dimensions; | 1130 V_NB_BITS, 3) * vc->codebooks[vqbook].dimensions; |
1131 for(l=0;l<vc->codebooks[vqbook].dimensions;++l) { | 1131 for(l=0;l<vc->codebooks[vqbook].dimensions;++l) { |
1132 vec[voffs+k+l*step]+=vc->codebooks[vqbook].codevectors[coffs+l]; // FPMATH | 1132 vec[voffs+k+l*step]+=vc->codebooks[vqbook].codevectors[coffs+l]; // FPMATH |
1133 } | 1133 } |
1134 } | 1134 } |
1135 } | 1135 } |
1136 else if (vr->type==1) { | 1136 else if (vr->type==1) { |
1137 voffs=voffset+j*vlen; | 1137 voffs=voffset+j*vlen; |
1138 for(k=0;k<vr->partition_size/vc->codebooks[vqbook].dimensions;++k) { | 1138 for(k=0;k<vr->partition_size/vc->codebooks[vqbook].dimensions;++k) { |
1139 coffs=get_vlc2(gb, vc->codebooks[vqbook].vlc.table, | 1139 coffs=get_vlc2(gb, vc->codebooks[vqbook].vlc.table, |
1140 V_NB_BITS, vc->codebooks[vr->classbook].maxdepth) * vc->codebooks[vqbook].dimensions; | 1140 V_NB_BITS, 3) * vc->codebooks[vqbook].dimensions; |
1141 for(l=0;l<vc->codebooks[vqbook].dimensions;++l, ++voffs) { | 1141 for(l=0;l<vc->codebooks[vqbook].dimensions;++l, ++voffs) { |
1142 vec[voffs]+=vc->codebooks[vqbook].codevectors[coffs+l]; // FPMATH | 1142 vec[voffs]+=vc->codebooks[vqbook].codevectors[coffs+l]; // FPMATH |
1143 | 1143 |
1144 AV_DEBUG(" pass %d offs: %d curr: %f change: %f cv offs.: %d \n", pass, voffs, vec[voffs], vc->codebooks[vqbook].codevectors[coffs+l], coffs); | 1144 AV_DEBUG(" pass %d offs: %d curr: %f change: %f cv offs.: %d \n", pass, voffs, vec[voffs], vc->codebooks[vqbook].codevectors[coffs+l], coffs); |
1145 } | 1145 } |
1148 else if (vr->type==2 && ch==2) { // most frequent case optimized | 1148 else if (vr->type==2 && ch==2) { // most frequent case optimized |
1149 voffs=voffset; | 1149 voffs=voffset; |
1150 | 1150 |
1151 for(k=0;k<vr->partition_size/vc->codebooks[vqbook].dimensions;++k) { | 1151 for(k=0;k<vr->partition_size/vc->codebooks[vqbook].dimensions;++k) { |
1152 coffs=get_vlc2(gb, vc->codebooks[vqbook].vlc.table, | 1152 coffs=get_vlc2(gb, vc->codebooks[vqbook].vlc.table, |
1153 V_NB_BITS, vc->codebooks[vr->classbook].maxdepth) * vc->codebooks[vqbook].dimensions; | 1153 V_NB_BITS, 3) * vc->codebooks[vqbook].dimensions; |
1154 for(l=0;l<vc->codebooks[vqbook].dimensions;++l, ++voffs) { | 1154 for(l=0;l<vc->codebooks[vqbook].dimensions;++l, ++voffs) { |
1155 vec[(voffs>>1)+((voffs&1) ? vlen : 0)]+=vc->codebooks[vqbook].codevectors[coffs+l]; // FPMATH | 1155 vec[(voffs>>1)+((voffs&1) ? vlen : 0)]+=vc->codebooks[vqbook].codevectors[coffs+l]; // FPMATH |
1156 | 1156 |
1157 AV_DEBUG(" pass %d offs: %d curr: %f change: %f cv offs.: %d+%d \n", pass, voffset/ch+(voffs%ch)*vlen, vec[voffset/ch+(voffs%ch)*vlen], vc->codebooks[vqbook].codevectors[coffs+l], coffs, l); | 1157 AV_DEBUG(" pass %d offs: %d curr: %f change: %f cv offs.: %d+%d \n", pass, voffset/ch+(voffs%ch)*vlen, vec[voffset/ch+(voffs%ch)*vlen], vc->codebooks[vqbook].codevectors[coffs+l], coffs, l); |
1158 } | 1158 } |
1162 else if (vr->type==2) { | 1162 else if (vr->type==2) { |
1163 voffs=voffset; | 1163 voffs=voffset; |
1164 | 1164 |
1165 for(k=0;k<vr->partition_size/vc->codebooks[vqbook].dimensions;++k) { | 1165 for(k=0;k<vr->partition_size/vc->codebooks[vqbook].dimensions;++k) { |
1166 coffs=get_vlc2(gb, vc->codebooks[vqbook].vlc.table, | 1166 coffs=get_vlc2(gb, vc->codebooks[vqbook].vlc.table, |
1167 V_NB_BITS, vc->codebooks[vr->classbook].maxdepth) * vc->codebooks[vqbook].dimensions; | 1167 V_NB_BITS, 3) * vc->codebooks[vqbook].dimensions; |
1168 for(l=0;l<vc->codebooks[vqbook].dimensions;++l, ++voffs) { | 1168 for(l=0;l<vc->codebooks[vqbook].dimensions;++l, ++voffs) { |
1169 vec[voffs/ch+(voffs%ch)*vlen]+=vc->codebooks[vqbook].codevectors[coffs+l]; // FPMATH FIXME use if and counter instead of / and % | 1169 vec[voffs/ch+(voffs%ch)*vlen]+=vc->codebooks[vqbook].codevectors[coffs+l]; // FPMATH FIXME use if and counter instead of / and % |
1170 | 1170 |
1171 AV_DEBUG(" pass %d offs: %d curr: %f change: %f cv offs.: %d+%d \n", pass, voffset/ch+(voffs%ch)*vlen, vec[voffset/ch+(voffs%ch)*vlen], vc->codebooks[vqbook].codevectors[coffs+l], coffs, l); | 1171 AV_DEBUG(" pass %d offs: %d curr: %f change: %f cv offs.: %d+%d \n", pass, voffset/ch+(voffs%ch)*vlen, vec[voffset/ch+(voffs%ch)*vlen], vc->codebooks[vqbook].codevectors[coffs+l], coffs, l); |
1172 } | 1172 } |