struct lookahead_ctx *vp9_lookahead_init(unsigned int width, unsigned int height, unsigned int subsampling_x, unsigned int subsampling_y, unsigned int depth) { struct lookahead_ctx *ctx = NULL; // Clamp the lookahead queue depth depth = clamp(depth, 1, MAX_LAG_BUFFERS); // Allocate memory to keep previous source frames available. depth += MAX_PRE_FRAMES; // Allocate the lookahead structures ctx = calloc(1, sizeof(*ctx)); if (ctx) { unsigned int i; ctx->max_sz = depth; ctx->buf = calloc(depth, sizeof(*ctx->buf)); if (!ctx->buf) goto bail; for (i = 0; i < depth; i++) if (vp9_alloc_frame_buffer(&ctx->buf[i].img, width, height, subsampling_x, subsampling_y, VP9_ENC_BORDER_IN_PIXELS)) goto bail; } return ctx; bail: vp9_lookahead_destroy(ctx); return NULL; }
struct lookahead_ctx * vp9_lookahead_init(unsigned int width, unsigned int height, unsigned int subsampling_x, unsigned int subsampling_y, unsigned int depth) { struct lookahead_ctx *ctx = NULL; depth = clamp(depth, 1, MAX_LAG_BUFFERS); ctx = calloc(1, sizeof(*ctx)); if (ctx) { unsigned int i; ctx->max_sz = depth; ctx->buf = calloc(depth, sizeof(*ctx->buf)); if (!ctx->buf) goto bail; for (i = 0; i < depth; i++) if (vp9_alloc_frame_buffer(&ctx->buf[i].img, width, height, subsampling_x, subsampling_y, VP9BORDERINPIXELS)) goto bail; } return ctx; bail: vp9_lookahead_destroy(ctx); return NULL; }