History

avfilter/af_asdr: set output frame duration

Paul B Mahol committed 3 years ago

Commit a47bd6d1 parent a2f4adf1 file · +7 −5Browse files

Unified · Split

libavfilter/af_asdr.c+7−5
@@ -60,11 +60,12 @@ static void sdr(AVFilterContext *ctx, const AVFrame *u, const AVFrame *v) · 59 unmodified lines
60static int activate(AVFilterContext *ctx)60static int activate(AVFilterContext *ctx)
61{61{
62 AudioSDRContext *s = ctx->priv;62 AudioSDRContext *s = ctx->priv;
63 AVFilterLink *outlink = ctx->outputs[0];
63 int ret, status;64 int ret, status;
64 int available;65 int available;
65 int64_t pts;66 int64_t pts;
66 67
67 FF_FILTER_FORWARD_STATUS_BACK_ALL(ctx->outputs[0], ctx);68 FF_FILTER_FORWARD_STATUS_BACK_ALL(outlink, ctx);
68 69
69 available = FFMIN(ff_inlink_queued_samples(ctx->inputs[0]), ff_inlink_queued_samples(ctx->inputs[1]));70 available = FFMIN(ff_inlink_queued_samples(ctx->inputs[0]), ff_inlink_queued_samples(ctx->inputs[1]));
70 if (available > 0) {71 if (available > 0) {
@@ -83,21 +84,22 @@ static int activate(AVFilterContext *ctx) · 12 unmodified lines
83 av_frame_free(&s->cache[1]);84 av_frame_free(&s->cache[1]);
84 out = s->cache[0];85 out = s->cache[0];
85 out->nb_samples = available;86 out->nb_samples = available;
86 out->pts = s->pts;87 out->pts = av_rescale_q(s->pts, av_make_q(1, outlink->sample_rate), outlink->time_base);
88 out->duration = av_rescale_q(out->nb_samples, av_make_q(1, outlink->sample_rate), outlink->time_base);
87 s->pts += available;89 s->pts += available;
88 s->cache[0] = NULL;90 s->cache[0] = NULL;
89 91
90 return ff_filter_frame(ctx->outputs[0], out);92 return ff_filter_frame(outlink, out);
91 }93 }
92 94
93 for (int i = 0; i < 2; i++) {95 for (int i = 0; i < 2; i++) {
94 if (ff_inlink_acknowledge_status(ctx->inputs[i], &status, &pts)) {96 if (ff_inlink_acknowledge_status(ctx->inputs[i], &status, &pts)) {
95 ff_outlink_set_status(ctx->outputs[0], status, s->pts);97 ff_outlink_set_status(outlink, status, s->pts);
96 return 0;98 return 0;
97 }99 }
98 }100 }
99 101
100 if (ff_outlink_frame_wanted(ctx->outputs[0])) {102 if (ff_outlink_frame_wanted(outlink)) {
101 for (int i = 0; i < 2; i++) {103 for (int i = 0; i < 2; i++) {
102 if (ff_inlink_queued_samples(ctx->inputs[i]) > 0)104 if (ff_inlink_queued_samples(ctx->inputs[i]) > 0)
103 continue;105 continue;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t