Also silence initial block frames.
Unified · Split
| @@ -793,6 +793,9 @@ static int config_filter(AVFilterLink *outlink, int reset) · 792 unmodified lines | |||
| 793 | s->block[i] = ff_get_audio_buffer(outlink, s->block_samples * 2); | 793 | s->block[i] = ff_get_audio_buffer(outlink, s->block_samples * 2); |
| 794 | if (!s->block[i]) | 794 | if (!s->block[i]) |
| 795 | return AVERROR(ENOMEM); | 795 | return AVERROR(ENOMEM); |
| 796 | av_samples_set_silence(s->block[i]->extended_data, 0, s->block_samples * 2, | ||
| 797 | s->block[i]->ch_layout.nb_channels, s->block[i]->format); | ||
| 798 | |||
| 796 | } | 799 | } |
| 797 | } | 800 | } |
| 798 | 801 | ||
| @@ -927,14 +930,14 @@ static void reverse_samples(AVFrame *out, AVFrame *in, int p, · 128 unmodified lines | |||
| 927 | { | 930 | { |
| 928 | switch (out->format) { | 931 | switch (out->format) { |
| 929 | case AV_SAMPLE_FMT_S16P: { | 932 | case AV_SAMPLE_FMT_S16P: { |
| 930 | const int16_t *src = ((const int16_t *)out->extended_data[p]) + io; | 933 | const int16_t *src = ((const int16_t *)in->extended_data[p]) + io; |
| 931 | int16_t *dst = ((int16_t *)out->extended_data[p]) + oo; | 934 | int16_t *dst = ((int16_t *)out->extended_data[p]) + oo; |
| 932 | for (int i = 0, j = nb_samples - 1; i < nb_samples; i++, j--) | 935 | for (int i = 0, j = nb_samples - 1; i < nb_samples; i++, j--) |
| 933 | dst[i] = src[j]; | 936 | dst[i] = src[j]; |
| 934 | } | 937 | } |
| 935 | break; | 938 | break; |
| 936 | case AV_SAMPLE_FMT_S32P: { | 939 | case AV_SAMPLE_FMT_S32P: { |
| 937 | const int32_t *src = ((const int32_t *)out->extended_data[p]) + io; | 940 | const int32_t *src = ((const int32_t *)in->extended_data[p]) + io; |
| 938 | int32_t *dst = ((int32_t *)out->extended_data[p]) + oo; | 941 | int32_t *dst = ((int32_t *)out->extended_data[p]) + oo; |
| 939 | for (int i = 0, j = nb_samples - 1; i < nb_samples; i++, j--) | 942 | for (int i = 0, j = nb_samples - 1; i < nb_samples; i++, j--) |
| 940 | dst[i] = src[j]; | 943 | dst[i] = src[j]; |