mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
vf_framepack: Check and update frame_rate
(cherry picked from ffmpeg commit a46a23d30f
)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
This commit is contained in:
parent
65e73bc60f
commit
7d12cba95c
@ -76,12 +76,13 @@ static av_cold void framepack_uninit(AVFilterContext *ctx)
|
||||
|
||||
static int config_output(AVFilterLink *outlink)
|
||||
{
|
||||
AVFilterContext *ctx = outlink->src;
|
||||
FramepackContext *s = outlink->src->priv;
|
||||
AVFilterContext *ctx = outlink->src;
|
||||
FramepackContext *s = outlink->src->priv;
|
||||
|
||||
int width = ctx->inputs[LEFT]->w;
|
||||
int height = ctx->inputs[LEFT]->h;
|
||||
AVRational time_base = ctx->inputs[LEFT]->time_base;
|
||||
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;
|
||||
|
||||
// check size and fps match on the other input
|
||||
if (width != ctx->inputs[RIGHT]->w ||
|
||||
@ -93,11 +94,18 @@ static int config_output(AVFilterLink *outlink)
|
||||
return AVERROR_INVALIDDATA;
|
||||
} else if (av_cmp_q(time_base, ctx->inputs[RIGHT]->time_base) != 0) {
|
||||
av_log(ctx, AV_LOG_ERROR,
|
||||
"Left and right framerates differ (%d/%d vs %d/%d).\n",
|
||||
"Left and right time bases differ (%d/%d vs %d/%d).\n",
|
||||
time_base.num, time_base.den,
|
||||
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) {
|
||||
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);
|
||||
return AVERROR_INVALIDDATA;
|
||||
}
|
||||
|
||||
s->pix_desc = av_pix_fmt_desc_get(outlink->format);
|
||||
@ -107,7 +115,9 @@ static int config_output(AVFilterLink *outlink)
|
||||
// modify output properties as needed
|
||||
switch (s->format) {
|
||||
case AV_STEREO3D_FRAMESEQUENCE:
|
||||
time_base.den *= 2;
|
||||
time_base.den *= 2;
|
||||
frame_rate.num *= 2;
|
||||
|
||||
s->double_pts = AV_NOPTS_VALUE;
|
||||
break;
|
||||
case AV_STEREO3D_COLUMNS:
|
||||
@ -123,9 +133,10 @@ static int config_output(AVFilterLink *outlink)
|
||||
return AVERROR_INVALIDDATA;
|
||||
}
|
||||
|
||||
outlink->w = width;
|
||||
outlink->h = height;
|
||||
outlink->time_base = time_base;
|
||||
outlink->w = width;
|
||||
outlink->h = height;
|
||||
outlink->time_base = time_base;
|
||||
outlink->frame_rate = frame_rate;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user