s->h_edge_pos = h->mb_width * 16;
s->v_edge_pos = h->mb_height * 16;
- if (ff_h264_alloc_tables(h) < 0) {
+ s->intra4x4_pred_mode = av_mallocz(h->mb_stride * 2 * 8);
+ if (!s->intra4x4_pred_mode)
+ return AVERROR(ENOMEM);
+
+ s->mb2br_xy = av_mallocz(h->mb_stride * (h->mb_height + 1) *
+ sizeof(*s->mb2br_xy));
+ if (!s->mb2br_xy)
+ return AVERROR(ENOMEM);
+
+ for (y = 0; y < h->mb_height; y++)
+ for (x = 0; x < h->mb_width; x++) {
+ const int mb_xy = x + y * h->mb_stride;
+
+ s->mb2br_xy[mb_xy] = 8 * (mb_xy % (2 * h->mb_stride));
+ }
+
+ if ((ret = ff_h264_alloc_tables(h)) < 0) {
av_log(avctx, AV_LOG_ERROR, "svq3 memory allocation failed\n");
- return AVERROR(ENOMEM);
+ goto fail;
}
return 0;