Commit 990b1380 authored by Paul B Mahol's avatar Paul B Mahol

lavfi/blend: use correct way to check number of planes

This fix crash with gray, as its marked as pseudopal,
and thus have extra plane.
Signed-off-by: 's avatarPaul B Mahol <onemda@gmail.com>
parent 89b5039f
...@@ -80,6 +80,7 @@ typedef struct { ...@@ -80,6 +80,7 @@ typedef struct {
struct FFBufQueue queue_top; struct FFBufQueue queue_top;
struct FFBufQueue queue_bottom; struct FFBufQueue queue_bottom;
int hsub, vsub; ///< chroma subsampling values int hsub, vsub; ///< chroma subsampling values
int nb_planes;
int frame_requested; int frame_requested;
char *all_expr; char *all_expr;
enum BlendMode all_mode; enum BlendMode all_mode;
...@@ -330,6 +331,7 @@ static int config_input_top(AVFilterLink *inlink) ...@@ -330,6 +331,7 @@ static int config_input_top(AVFilterLink *inlink)
b->hsub = pix_desc->log2_chroma_w; b->hsub = pix_desc->log2_chroma_w;
b->vsub = pix_desc->log2_chroma_h; b->vsub = pix_desc->log2_chroma_h;
b->nb_planes = av_pix_fmt_count_planes(inlink->format);
return 0; return 0;
} }
...@@ -371,7 +373,7 @@ static void blend_frame(AVFilterContext *ctx, ...@@ -371,7 +373,7 @@ static void blend_frame(AVFilterContext *ctx,
FilterParams *param; FilterParams *param;
int plane; int plane;
for (plane = 0; dst_buf->data[plane]; plane++) { for (plane = 0; plane < b->nb_planes; plane++) {
int hsub = plane == 1 || plane == 2 ? b->hsub : 0; int hsub = plane == 1 || plane == 2 ? b->hsub : 0;
int vsub = plane == 1 || plane == 2 ? b->vsub : 0; int vsub = plane == 1 || plane == 2 ? b->vsub : 0;
int outw = dst_buf->width >> hsub; int outw = dst_buf->width >> hsub;
...@@ -422,7 +424,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *buf) ...@@ -422,7 +424,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *buf)
b->frame_requested = 0; b->frame_requested = 0;
blend_frame(ctx, top_buf, bottom_buf, out_buf); blend_frame(ctx, top_buf, bottom_buf, out_buf);
ret = ff_filter_frame(ctx->outputs[0], out_buf); ret = ff_filter_frame(outlink, out_buf);
av_frame_free(&top_buf); av_frame_free(&top_buf);
av_frame_free(&bottom_buf); av_frame_free(&bottom_buf);
} }
......
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