Unified · Split
| @@ -706,7 +706,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) · 705 unmodified lines | |||
| 706 | cqueue_dequeue(s->is_enabled, &is_enabled); | 706 | cqueue_dequeue(s->is_enabled, &is_enabled); |
| 707 | 707 | ||
| 708 | amplify_frame(s, out, is_enabled > 0.); | 708 | amplify_frame(s, out, is_enabled > 0.); |
| 709 | s->pts = out->pts + out->nb_samples; | 709 | s->pts = out->pts + av_rescale_q(out->nb_samples, av_make_q(1, outlink->sample_rate), |
| 710 | outlink->time_base); | ||
| 710 | ret = ff_filter_frame(outlink, out); | 711 | ret = ff_filter_frame(outlink, out); |
| 711 | } | 712 | } |
| 712 | 713 | ||
| @@ -749,15 +750,17 @@ static int flush_buffer(DynamicAudioNormalizerContext *s, AVFilterLink *inlink, · 36 unmodified lines | |||
| 749 | static int flush(AVFilterLink *outlink) | 750 | static int flush(AVFilterLink *outlink) |
| 750 | { | 751 | { |
| 751 | AVFilterContext *ctx = outlink->src; | 752 | AVFilterContext *ctx = outlink->src; |
| 753 | AVFilterLink *inlink = ctx->inputs[0]; | ||
| 752 | DynamicAudioNormalizerContext *s = ctx->priv; | 754 | DynamicAudioNormalizerContext *s = ctx->priv; |
| 753 | int ret = 0; | 755 | int ret = 0; |
| 754 | 756 | ||
| 755 | if (!cqueue_empty(s->gain_history_smoothed[0])) { | 757 | if (!cqueue_empty(s->gain_history_smoothed[0])) { |
| 756 | ret = flush_buffer(s, ctx->inputs[0], outlink); | 758 | ret = flush_buffer(s, inlink, outlink); |
| 757 | } else if (s->queue.available) { | 759 | } else if (s->queue.available) { |
| 758 | AVFrame *out = ff_bufqueue_get(&s->queue); | 760 | AVFrame *out = ff_bufqueue_get(&s->queue); |
| 759 | 761 | ||
| 760 | s->pts = out->pts + out->nb_samples; | 762 | s->pts = out->pts + av_rescale_q(out->nb_samples, av_make_q(1, outlink->sample_rate), |
| 763 | outlink->time_base); | ||
| 761 | ret = ff_filter_frame(outlink, out); | 764 | ret = ff_filter_frame(outlink, out); |
| 762 | } | 765 | } |
| 763 | 766 | ||