OSDN Git Service

swresample/rematrix: Fix float part of swr_set_matrix()
authorVodyannikov Aleksandr <Aleksoid1978@mail.ru>
Thu, 20 Oct 2016 03:57:35 +0000 (06:57 +0300)
committerMichael Niedermayer <michael@niedermayer.cc>
Wed, 26 Oct 2016 17:27:22 +0000 (19:27 +0200)
Fixes Ticket #5897.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libswresample/rematrix.c

index 1af2498..4721063 100644 (file)
@@ -68,14 +68,12 @@ int swr_set_matrix(struct SwrContext *s, const double *matrix, int stride)
     if (!s || s->in_convert) // s needs to be allocated but not initialized
         return AVERROR(EINVAL);
     memset(s->matrix, 0, sizeof(s->matrix));
+    memset(s->matrix_flt, 0, sizeof(s->matrix_flt));
     nb_in  = av_get_channel_layout_nb_channels(s->user_in_ch_layout);
     nb_out = av_get_channel_layout_nb_channels(s->user_out_ch_layout);
     for (out = 0; out < nb_out; out++) {
         for (in = 0; in < nb_in; in++)
-            s->matrix[out][in] = matrix[in];
-        if (s->int_sample_fmt == AV_SAMPLE_FMT_FLTP)
-            for (in = 0; in < nb_in; in++)
-                s->matrix_flt[out][in] = matrix[in];
+            s->matrix_flt[out][in] = s->matrix[out][in] = matrix[in];
         matrix += stride;
     }
     s->rematrix_custom = 1;