aboutsummaryrefslogtreecommitdiffstats
path: root/libavfilter/vf_framepack.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2024-08-06 08:50:21 +0200
committerAnton Khirnov <anton@khirnov.net>2024-08-15 19:34:27 +0200
commita23d565ea7d41e61f160578f9714a23e695f3bfd (patch)
tree4f49446e8da10c5496cffbd1e0e3270b61ca7381 /libavfilter/vf_framepack.c
parentd6318a244d1dde48c1429c48b4076df47c2c7fe9 (diff)
downloadffmpeg-a23d565ea7d41e61f160578f9714a23e695f3bfd.tar.gz
lavfi: move AVFilterLink.frame_rate to FilterLink
Co-developed-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavfilter/vf_framepack.c')
-rw-r--r--libavfilter/vf_framepack.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/libavfilter/vf_framepack.c b/libavfilter/vf_framepack.c
index 3b915ddddf..d3a195c024 100644
--- a/libavfilter/vf_framepack.c
+++ b/libavfilter/vf_framepack.c
@@ -91,11 +91,14 @@ static int config_output(AVFilterLink *outlink)
{
AVFilterContext *ctx = outlink->src;
FramepackContext *s = outlink->src->priv;
+ FilterLink *leftl = ff_filter_link(ctx->inputs[LEFT]);
+ FilterLink *rightl = ff_filter_link(ctx->inputs[RIGHT]);
+ FilterLink *ol = ff_filter_link(outlink);
int width = ctx->inputs[LEFT]->w;
int height = ctx->inputs[LEFT]->h;
AVRational time_base = ctx->inputs[LEFT]->time_base;
- AVRational frame_rate = ctx->inputs[LEFT]->frame_rate;
+ AVRational frame_rate = leftl->frame_rate;
// check size and fps match on the other input
if (width != ctx->inputs[RIGHT]->w ||
@@ -112,12 +115,12 @@ static int config_output(AVFilterLink *outlink)
ctx->inputs[RIGHT]->time_base.num,
ctx->inputs[RIGHT]->time_base.den);
return AVERROR_INVALIDDATA;
- } else if (av_cmp_q(frame_rate, ctx->inputs[RIGHT]->frame_rate) != 0) {
+ } else if (av_cmp_q(frame_rate, rightl->frame_rate) != 0) {
av_log(ctx, AV_LOG_ERROR,
"Left and right framerates differ (%d/%d vs %d/%d).\n",
frame_rate.num, frame_rate.den,
- ctx->inputs[RIGHT]->frame_rate.num,
- ctx->inputs[RIGHT]->frame_rate.den);
+ rightl->frame_rate.num,
+ rightl->frame_rate.den);
return AVERROR_INVALIDDATA;
}
@@ -148,7 +151,7 @@ static int config_output(AVFilterLink *outlink)
outlink->w = width;
outlink->h = height;
outlink->time_base = time_base;
- outlink->frame_rate = frame_rate;
+ ol->frame_rate = frame_rate;
return 0;
}
@@ -312,6 +315,7 @@ static int try_push_frame(AVFilterContext *ctx)
{
FramepackContext *s = ctx->priv;
AVFilterLink *outlink = ctx->outputs[0];
+ FilterLink *l = ff_filter_link(outlink);
AVStereo3D *stereo;
int ret, i;
@@ -323,8 +327,8 @@ static int try_push_frame(AVFilterContext *ctx)
for (i = 0; i < 2; i++) {
// set correct timestamps
if (pts != AV_NOPTS_VALUE) {
- s->input_views[i]->pts = i == 0 ? pts * 2 : pts * 2 + av_rescale_q(1, av_inv_q(outlink->frame_rate), outlink->time_base);
- s->input_views[i]->duration = av_rescale_q(1, av_inv_q(outlink->frame_rate), outlink->time_base);
+ s->input_views[i]->pts = i == 0 ? pts * 2 : pts * 2 + av_rescale_q(1, av_inv_q(l->frame_rate), outlink->time_base);
+ s->input_views[i]->duration = av_rescale_q(1, av_inv_q(l->frame_rate), outlink->time_base);
}
// set stereo3d side data