Unified · Split
| @@ -706,7 +706,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) · 705 unmodified lines | ||
| 706 | 706 | cqueue_dequeue(s->is_enabled, &is_enabled); |
| 707 | 707 | |
| 708 | 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 | 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 | 750 | static int flush(AVFilterLink *outlink) |
| 750 | 751 | { |
| 751 | 752 | AVFilterContext *ctx = outlink->src; |
| 753 | + AVFilterLink *inlink = ctx->inputs[0]; | |
| 752 | 754 | DynamicAudioNormalizerContext *s = ctx->priv; |
| 753 | 755 | int ret = 0; |
| 754 | 756 | |
| 755 | 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 | 759 | } else if (s->queue.available) { |
| 758 | 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 | 764 | ret = ff_filter_frame(outlink, out); |
| 762 | 765 | } |
| 763 | 766 | |