[FFmpeg-cvslog] lavfi/stereo3d: check input width & height

Paul B Mahol git at videolan.org
Wed Apr 17 17:19:53 CEST 2013


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Wed Apr 17 15:15:12 2013 +0000| [716588188d87178d4b850982b5b361150cb7e94c] | committer: Paul B Mahol

lavfi/stereo3d: check input width & height

Signed-off-by: Paul B Mahol <onemda at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=716588188d87178d4b850982b5b361150cb7e94c
---

 libavfilter/vf_stereo3d.c |   28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/libavfilter/vf_stereo3d.c b/libavfilter/vf_stereo3d.c
index c387684..09d4554 100644
--- a/libavfilter/vf_stereo3d.c
+++ b/libavfilter/vf_stereo3d.c
@@ -196,6 +196,34 @@ static int config_output(AVFilterLink *outlink)
     Stereo3DContext *s = ctx->priv;
     AVRational aspect = inlink->sample_aspect_ratio;
 
+    switch (s->in.format) {
+    case SIDE_BY_SIDE_2_LR:
+    case SIDE_BY_SIDE_LR:
+    case SIDE_BY_SIDE_2_RL:
+    case SIDE_BY_SIDE_RL:
+        if (inlink->w & 1) {
+            av_log(ctx, AV_LOG_ERROR, "width must be even\n");
+            return AVERROR_INVALIDDATA;
+        }
+        break;
+    case ABOVE_BELOW_2_LR:
+    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;
+        }
+        break;
+    }
+
     s->in.width     =
     s->width        = inlink->w;
     s->in.height    =



More information about the ffmpeg-cvslog mailing list