]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
unroll another common case in vorbis_residue_decode
authorlorenm <lorenm@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Tue, 15 Jul 2008 23:01:15 +0000 (23:01 +0000)
committerlorenm <lorenm@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Tue, 15 Jul 2008 23:01:15 +0000 (23:01 +0000)
git-svn-id: file:///var/local/repositories/ffmpeg/trunk@14250 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavcodec/vorbis_dec.c

index d4a5402d861f55fc6a52cd2483265cea652b644e..2143db76e53ceaad0b9593f1c93320dd3a7e5076 100644 (file)
@@ -1330,6 +1330,14 @@ static int vorbis_residue_decode(vorbis_context *vc, vorbis_residue *vr, uint_fa
                                         vec[voffs+k     ]+=codebook.codevectors[coffs  ];  // FPMATH
                                         vec[voffs+k+vlen]+=codebook.codevectors[coffs+1];  // FPMATH
                                     }
+                                } else if(dim==4) {
+                                    for(k=0;k<step;++k, voffs+=2) {
+                                        coffs=get_vlc2(gb, codebook.vlc.table, codebook.nb_bits, 3) * 4;
+                                        vec[voffs       ]+=codebook.codevectors[coffs  ];  // FPMATH
+                                        vec[voffs+1     ]+=codebook.codevectors[coffs+2];  // FPMATH
+                                        vec[voffs+vlen  ]+=codebook.codevectors[coffs+1];  // FPMATH
+                                        vec[voffs+vlen+1]+=codebook.codevectors[coffs+3];  // FPMATH
+                                    }
                                 } else
                                 for(k=0;k<step;++k) {
                                     coffs=get_vlc2(gb, codebook.vlc.table, codebook.nb_bits, 3) * dim;