Commit 0c511eb2 authored by Paul B Mahol's avatar Paul B Mahol

avfilter/vf_stereo3d: stop dumping half of data for interleave rows output

Signed-off-by: 's avatarPaul B Mahol <onemda@gmail.com>
parent 32dd9b2c
...@@ -327,13 +327,6 @@ static int config_output(AVFilterLink *outlink) ...@@ -327,13 +327,6 @@ static int config_output(AVFilterLink *outlink)
case ABOVE_BELOW_LR: case ABOVE_BELOW_LR:
case ABOVE_BELOW_2_RL: case ABOVE_BELOW_2_RL:
case ABOVE_BELOW_RL: case ABOVE_BELOW_RL:
if (s->out.format == INTERLEAVE_ROWS_LR ||
s->out.format == INTERLEAVE_ROWS_RL) {
if (inlink->h & 3) {
av_log(ctx, AV_LOG_ERROR, "height must be multiple of 4\n");
return AVERROR_INVALIDDATA;
}
}
if (inlink->h & 1) { if (inlink->h & 1) {
av_log(ctx, AV_LOG_ERROR, "height must be even\n"); av_log(ctx, AV_LOG_ERROR, "height must be even\n");
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
...@@ -391,9 +384,7 @@ static int config_output(AVFilterLink *outlink) ...@@ -391,9 +384,7 @@ static int config_output(AVFilterLink *outlink)
s->in.off_lstep = 1; s->in.off_lstep = 1;
else else
s->in.off_rstep = 1; s->in.off_rstep = 1;
if (s->out.format != INTERLEAVE_ROWS_LR && if (s->out.format != CHECKERBOARD_LR &&
s->out.format != INTERLEAVE_ROWS_RL &&
s->out.format != CHECKERBOARD_LR &&
s->out.format != CHECKERBOARD_RL) s->out.format != CHECKERBOARD_RL)
s->height = inlink->h / 2; s->height = inlink->h / 2;
break; break;
...@@ -468,16 +459,16 @@ static int config_output(AVFilterLink *outlink) ...@@ -468,16 +459,16 @@ static int config_output(AVFilterLink *outlink)
s->out.row_left = s->height; s->out.row_left = s->height;
break; break;
case INTERLEAVE_ROWS_LR: case INTERLEAVE_ROWS_LR:
s->in.row_step = 2; s->in.row_step = 1 + (s->in.format == INTERLEAVE_ROWS_RL);
s->out.row_step = 2; s->out.row_step = 2;
s->height = s->height / 2; s->out.height = s->height * 2;
s->out.off_rstep = 1; s->out.off_rstep = 1;
s->in.off_rstep = s->in.format != INTERLEAVE_ROWS_RL; s->in.off_rstep = s->in.format != INTERLEAVE_ROWS_RL;
break; break;
case INTERLEAVE_ROWS_RL: case INTERLEAVE_ROWS_RL:
s->in.row_step = 2; s->in.row_step = 1 + (s->in.format == INTERLEAVE_ROWS_LR);
s->out.row_step = 2; s->out.row_step = 2;
s->height = s->height / 2; s->out.height = s->height * 2;
s->out.off_lstep = 1; s->out.off_lstep = 1;
s->in.off_lstep = s->in.format != INTERLEAVE_ROWS_LR; s->in.off_lstep = s->in.format != INTERLEAVE_ROWS_LR;
break; break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment