[SCM] libav/experimental: Original Commit: r71 | ods15 | 2006-09-28 21:00:24 +0300 (Thu, 28 Sep 2006) | 2 lines

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 15:51:31 UTC 2013


The following commit has been merged in the experimental branch:
commit e3df7fc64c1cbadc9462b7dd8adaf811070d3086
Author: Oded Shimon <ods15 at ods15.dyndns.org>
Date:   Mon Oct 2 06:08:11 2006 +0000

    Original Commit: r71 | ods15 | 2006-09-28 21:00:24 +0300 (Thu, 28 Sep 2006) | 2 lines
    
    residue type 2
    
    Originally committed as revision 6476 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavcodec/vorbis_enc.c b/libavcodec/vorbis_enc.c
index 53fb848..2366840 100644
--- a/libavcodec/vorbis_enc.c
+++ b/libavcodec/vorbis_enc.c
@@ -807,6 +807,9 @@ static void residue_encode(venc_context_t * venc, residue_t * rc, PutBitContext
     int partitions = (rc->end - rc->begin) / psize;
     int classes[channels][partitions];
     int classwords = venc->codebooks[rc->classbook].ndimentions;
+    int real_ch = channels;
+
+    if (rc->type == 2) channels = 1;
 
     for (pass = 0; pass < 8; pass++) {
         p = 0;
@@ -827,14 +830,26 @@ static void residue_encode(venc_context_t * venc, residue_t * rc, PutBitContext
                     float * buf = coeffs + samples*j + rc->begin + p*psize;
                     if (nbook == -1) continue;
 
-                    assert(rc->type == 0);
+                    assert(rc->type == 0 || rc->type == 2);
                     assert(!(psize % book->ndimentions));
 
+                    if (rc->type == 0) {
                     for (k = 0; k < psize; k += book->ndimentions) {
                         float * a = put_vector(book, pb, &buf[k]);
                         int l;
                         for (l = 0; l < book->ndimentions; l++) buf[k + l] -= a[l];
                     }
+                    } else {
+                        for (k = 0; k < psize; k += book->ndimentions) {
+                            int dim = book->ndimentions, s = rc->begin + p * psize, l;
+                            float vec[dim], * pvec = vec, * a;
+                            for (l = s + k; l < s + k + dim; l++)
+                                *pvec++ = coeffs[(l % real_ch) * samples + l / real_ch];
+                            a = put_vector(book, pb, vec);
+                            for (l = s + k; l < s + k + dim; l++)
+                                coeffs[(l % real_ch) * samples + l / real_ch] -= *a++;
+                        }
+                    }
                 }
             }
         }

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list