+ if (in->perms & AV_PERM_WRITE) {
+ direct = 1;
+ out = in;
+ } else {
+ out = ff_get_video_buffer(outlink, AV_PERM_WRITE, outlink->w, outlink->h);
+ if (!out) {
+ avfilter_unref_bufferp(&in);
+ return AVERROR(ENOMEM);
+ }
+ avfilter_copy_buffer_ref_props(out, in);
+ }
+
+ for (plane = 0; plane < 4 && in->data[plane]; plane++) {