-
- plane->tmpbuf = av_malloc(inlink->w * inlink->h);
- plane->gradients = av_calloc(inlink->w * inlink->h, sizeof(*plane->gradients));
- plane->directions = av_malloc(inlink->w * inlink->h);
+ int vsub = p ? desc->log2_chroma_h : 0;
+ int hsub = p ? desc->log2_chroma_w : 0;
+
+ plane->width = AV_CEIL_RSHIFT(inlink->w, hsub);
+ plane->height = AV_CEIL_RSHIFT(inlink->h, vsub);
+ plane->tmpbuf = av_malloc(plane->width * plane->height);
+ plane->gradients = av_calloc(plane->width * plane->height, sizeof(*plane->gradients));
+ plane->directions = av_malloc(plane->width * plane->height);