X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavfilter%2Ff_settb.c;h=99ea7a78267ffc408da6eb8e0398dd7950ba1521;hb=83ab46a57e4b8c647366bf81679891164e215a00;hp=f42a15c78d10817eb27aeb0cd89b857ca6059a63;hpb=494945cb66fae7678efbde0be14b4d5e6fa5824d;p=ffmpeg diff --git a/libavfilter/f_settb.c b/libavfilter/f_settb.c index f42a15c78d1..99ea7a78267 100644 --- a/libavfilter/f_settb.c +++ b/libavfilter/f_settb.c @@ -103,37 +103,20 @@ static int config_output_props(AVFilterLink *outlink) return 0; } -static int start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref) +static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *frame) { AVFilterContext *ctx = inlink->dst; AVFilterLink *outlink = ctx->outputs[0]; if (av_cmp_q(inlink->time_base, outlink->time_base)) { - int64_t orig_pts = picref->pts; - picref->pts = av_rescale_q(picref->pts, inlink->time_base, outlink->time_base); + int64_t orig_pts = frame->pts; + frame->pts = av_rescale_q(frame->pts, inlink->time_base, outlink->time_base); av_log(ctx, AV_LOG_DEBUG, "tb:%d/%d pts:%"PRId64" -> tb:%d/%d pts:%"PRId64"\n", inlink ->time_base.num, inlink ->time_base.den, orig_pts, - outlink->time_base.num, outlink->time_base.den, picref->pts); + outlink->time_base.num, outlink->time_base.den, frame->pts); } - inlink->cur_buf = NULL; - return ff_start_frame(outlink, picref); -} - -static int filter_samples(AVFilterLink *inlink, AVFilterBufferRef *samplesref) -{ - AVFilterContext *ctx = inlink->dst; - AVFilterLink *outlink = ctx->outputs[0]; - - if (av_cmp_q(inlink->time_base, outlink->time_base)) { - int64_t orig_pts = samplesref->pts; - samplesref->pts = av_rescale_q(samplesref->pts, inlink->time_base, outlink->time_base); - av_log(ctx, AV_LOG_DEBUG, "tb:%d/%d pts:%"PRId64" -> tb:%d/%d pts:%"PRId64"\n", - inlink ->time_base.num, inlink ->time_base.den, orig_pts, - outlink->time_base.num, outlink->time_base.den, samplesref->pts); - } - - return ff_filter_samples(outlink, samplesref); + return ff_filter_frame(outlink, frame); } #if CONFIG_SETTB_FILTER @@ -142,8 +125,7 @@ static const AVFilterPad avfilter_vf_settb_inputs[] = { .name = "default", .type = AVMEDIA_TYPE_VIDEO, .get_video_buffer = ff_null_get_video_buffer, - .start_frame = start_frame, - .end_frame = ff_null_end_frame + .filter_frame = filter_frame, }, { NULL } }; @@ -170,25 +152,32 @@ AVFilter avfilter_vf_settb = { #endif #if CONFIG_ASETTB_FILTER +static const AVFilterPad avfilter_af_asettb_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .get_audio_buffer = ff_null_get_audio_buffer, + .filter_frame = filter_frame, + }, + { NULL } +}; + +static const AVFilterPad avfilter_af_asettb_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .config_props = config_output_props, + }, + { NULL } +}; + AVFilter avfilter_af_asettb = { .name = "asettb", .description = NULL_IF_CONFIG_SMALL("Set timebase for the audio output link."), .init = init, .priv_size = sizeof(SetTBContext), - - .inputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .get_audio_buffer = ff_null_get_audio_buffer, - .filter_samples = filter_samples, }, - { .name = NULL } - }, - .outputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .config_props = config_output_props, }, - { .name = NULL} - }, + .inputs = avfilter_af_asettb_inputs, + .outputs = avfilter_af_asettb_outputs, }; #endif