aboutsummaryrefslogtreecommitdiffstats
path: root/libavfilter/vf_stereo3d.c
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2015-09-06 09:22:43 +0000
committerPaul B Mahol <onemda@gmail.com>2015-09-06 11:49:03 +0000
commit0c511eb272e007b5998fa0b4741618274b78b4df (patch)
tree471f13697648f1ff327aab668cd98d14979fbf69 /libavfilter/vf_stereo3d.c
parent32dd9b2c6e951d188d812c25c1c883669a7e4ff6 (diff)
downloadffmpeg-0c511eb272e007b5998fa0b4741618274b78b4df.tar.gz
avfilter/vf_stereo3d: stop dumping half of data for interleave rows output
Signed-off-by: Paul B Mahol <onemda@gmail.com>
Diffstat (limited to 'libavfilter/vf_stereo3d.c')
-rw-r--r--libavfilter/vf_stereo3d.c19
1 files changed, 5 insertions, 14 deletions
diff --git a/libavfilter/vf_stereo3d.c b/libavfilter/vf_stereo3d.c
index d51c748b6a..02dc948744 100644
--- a/libavfilter/vf_stereo3d.c
+++ b/libavfilter/vf_stereo3d.c
@@ -327,13 +327,6 @@ static int config_output(AVFilterLink *outlink)
case ABOVE_BELOW_LR:
case ABOVE_BELOW_2_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) {
av_log(ctx, AV_LOG_ERROR, "height must be even\n");
return AVERROR_INVALIDDATA;
@@ -391,9 +384,7 @@ static int config_output(AVFilterLink *outlink)
s->in.off_lstep = 1;
else
s->in.off_rstep = 1;
- if (s->out.format != INTERLEAVE_ROWS_LR &&
- s->out.format != INTERLEAVE_ROWS_RL &&
- s->out.format != CHECKERBOARD_LR &&
+ if (s->out.format != CHECKERBOARD_LR &&
s->out.format != CHECKERBOARD_RL)
s->height = inlink->h / 2;
break;
@@ -468,16 +459,16 @@ static int config_output(AVFilterLink *outlink)
s->out.row_left = s->height;
break;
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->height = s->height / 2;
+ s->out.height = s->height * 2;
s->out.off_rstep = 1;
s->in.off_rstep = s->in.format != INTERLEAVE_ROWS_RL;
break;
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->height = s->height / 2;
+ s->out.height = s->height * 2;
s->out.off_lstep = 1;
s->in.off_lstep = s->in.format != INTERLEAVE_ROWS_LR;
break;