On Wed, Sep 03, 2014 at 09:40:55PM +0200, Reimar Döffinger wrote: > We only actually need to use a tiny part of it. > Unfortunately we seem to have no real test coverage on > the code, so this is a bit risky. > > Signed-off-by: Reimar Döffinger <[email protected]> > --- > libswresample/rematrix.c | 23 +++++++++++++++++------ > 1 file changed, 17 insertions(+), 6 deletions(-) [...] > @@ -295,10 +296,10 @@ av_cold static int auto_matrix(SwrContext *s) > av_assert0(0); > } > > - for(out_i=i=0; i<64; i++){ > + for(out_i=i=0; i<FF_ARRAY_ELEMS(matrix); i++){ > double sum=0; > - int in_i=0; > - for(j=0; j<64; j++){ > + in_i=0; > + for(j=0; j<FF_ARRAY_ELEMS(matrix[0]); j++){ > s->matrix[out_i][in_i]= matrix[i][j]; > if(matrix[i][j]){ > sum += fabs(matrix[i][j]); > @@ -310,6 +311,16 @@ av_cold static int auto_matrix(SwrContext *s) > if(out_ch_layout & (1ULL<<i)) > out_i++; > } > + for (; i < 64; i++) { > + if (in_ch_layout & out_ch_layout & (1ULL<<i)) { > + s->matrix[out_i][in_i] = 1.0; > + maxcoef = FFMAX(maxcoef, 1.0); > + } > + if (in_ch_layout & (1ULL<<i)) > + in_i++; > + if (out_ch_layout & (1ULL<<i)) > + out_i++; > + } > if(s->rematrix_volume < 0) > maxcoef = -s->rematrix_volume;
if (i and j are small enough)
s->matrix[out_i][in_i]= matrix[i][j];
else
s->matrix[out_i][in_i]= 0
sum += fabs(s->matrix[out_i][in_i]);
in the first loop should be simpler than a seperate loop
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
The educated differ from the uneducated as much as the living from the
dead. -- Aristotle
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list [email protected] http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
