-static int bink_decode_plane(BinkContext *c, GetBitContext *gb, int plane_idx,
- int is_chroma)
+static int bink_put_pixels(BinkContext *c,
+ uint8_t *dst, uint8_t *prev, int stride,
+ uint8_t *ref_start,
+ uint8_t *ref_end)
+{
+ int xoff = get_value(c, BINK_SRC_X_OFF);
+ int yoff = get_value(c, BINK_SRC_Y_OFF);
+ uint8_t *ref = prev + xoff + yoff * stride;
+ if (ref < ref_start || ref > ref_end) {
+ av_log(c->avctx, AV_LOG_ERROR, "Copy out of bounds @%d, %d\n",
+ xoff, yoff);
+ return AVERROR_INVALIDDATA;
+ }
+ c->hdsp.put_pixels_tab[1][0](dst, ref, stride, 8);
+
+ return 0;
+}
+
+static int bink_decode_plane(BinkContext *c, AVFrame *frame, GetBitContext *gb,
+ int plane_idx, int is_chroma)