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
This commit is contained in:
parent
9d74ff0e55
commit
e3df7fc64c
@ -807,6 +807,9 @@ static void residue_encode(venc_context_t * venc, residue_t * rc, PutBitContext
|
|||||||
int partitions = (rc->end - rc->begin) / psize;
|
int partitions = (rc->end - rc->begin) / psize;
|
||||||
int classes[channels][partitions];
|
int classes[channels][partitions];
|
||||||
int classwords = venc->codebooks[rc->classbook].ndimentions;
|
int classwords = venc->codebooks[rc->classbook].ndimentions;
|
||||||
|
int real_ch = channels;
|
||||||
|
|
||||||
|
if (rc->type == 2) channels = 1;
|
||||||
|
|
||||||
for (pass = 0; pass < 8; pass++) {
|
for (pass = 0; pass < 8; pass++) {
|
||||||
p = 0;
|
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;
|
float * buf = coeffs + samples*j + rc->begin + p*psize;
|
||||||
if (nbook == -1) continue;
|
if (nbook == -1) continue;
|
||||||
|
|
||||||
assert(rc->type == 0);
|
assert(rc->type == 0 || rc->type == 2);
|
||||||
assert(!(psize % book->ndimentions));
|
assert(!(psize % book->ndimentions));
|
||||||
|
|
||||||
|
if (rc->type == 0) {
|
||||||
for (k = 0; k < psize; k += book->ndimentions) {
|
for (k = 0; k < psize; k += book->ndimentions) {
|
||||||
float * a = put_vector(book, pb, &buf[k]);
|
float * a = put_vector(book, pb, &buf[k]);
|
||||||
int l;
|
int l;
|
||||||
for (l = 0; l < book->ndimentions; l++) buf[k + l] -= a[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++;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user