rawimg->stride[VPX_PLANE_Y] = frame->linesize[0];
rawimg->stride[VPX_PLANE_U] = frame->linesize[1];
rawimg->stride[VPX_PLANE_V] = frame->linesize[2];
+ if (ctx->is_alpha) {
+ uint8_t *u_plane, *v_plane;
+ rawimg_alpha = &ctx->rawimg_alpha;
+ rawimg_alpha->planes[VPX_PLANE_Y] = frame->data[3];
+ u_plane = av_malloc(frame->linesize[1] * frame->height);
+ v_plane = av_malloc(frame->linesize[2] * frame->height);
+ if (!u_plane || !v_plane) {
+ av_free(u_plane);
+ av_free(v_plane);
+ return AVERROR(ENOMEM);
+ }
+ memset(u_plane, 0x80, frame->linesize[1] * frame->height);
+ rawimg_alpha->planes[VPX_PLANE_U] = u_plane;
+ memset(v_plane, 0x80, frame->linesize[2] * frame->height);
+ rawimg_alpha->planes[VPX_PLANE_V] = v_plane;
+ rawimg_alpha->stride[VPX_PLANE_Y] = frame->linesize[0];
+ rawimg_alpha->stride[VPX_PLANE_U] = frame->linesize[1];
+ rawimg_alpha->stride[VPX_PLANE_V] = frame->linesize[2];
+ }
timestamp = frame->pts;
+ #if VPX_IMAGE_ABI_VERSION >= 4
+ switch (frame->color_range) {
+ case AVCOL_RANGE_MPEG:
+ rawimg->range = VPX_CR_STUDIO_RANGE;
+ break;
+ case AVCOL_RANGE_JPEG:
+ rawimg->range = VPX_CR_FULL_RANGE;
+ break;
+ }
+ #endif
if (frame->pict_type == AV_PICTURE_TYPE_I)
flags |= VPX_EFLAG_FORCE_KF;
}