diff options
author | Dmitry Kovalev <dkovalev@google.com> | 2013-05-15 16:49:53 -0700 |
---|---|---|
committer | Gerrit Code Review <gerrit@gerrit.golo.chromium.org> | 2013-05-15 16:49:53 -0700 |
commit | 3ba985779c73a883b9b78a0c78c651cadc6cef0c (patch) | |
tree | 0d1028001d52f8e2d3dcc22764a55e339d6d96c5 /vp9 | |
parent | cd16fe91606a698721dcc5802b29f6f859a629ff (diff) | |
parent | b7a4f8a6db9e83ef23e4d51341db2404d938e57e (diff) | |
download | libvpx-3ba985779c73a883b9b78a0c78c651cadc6cef0c.tar libvpx-3ba985779c73a883b9b78a0c78c651cadc6cef0c.tar.gz libvpx-3ba985779c73a883b9b78a0c78c651cadc6cef0c.tar.bz2 libvpx-3ba985779c73a883b9b78a0c78c651cadc6cef0c.zip |
Merge "Adding alpha plane to YV12_BUFFER_CONFIG structure." into experimental
Diffstat (limited to 'vp9')
-rw-r--r-- | vp9/vp9_cx_iface.c | 25 | ||||
-rw-r--r-- | vp9/vp9_dx_iface.c | 24 | ||||
-rw-r--r-- | vp9/vp9_iface_common.h | 34 |
3 files changed, 32 insertions, 51 deletions
diff --git a/vp9/vp9_cx_iface.c b/vp9/vp9_cx_iface.c index 45609da87..9326165ed 100644 --- a/vp9/vp9_cx_iface.c +++ b/vp9/vp9_cx_iface.c @@ -543,31 +543,6 @@ static vpx_codec_err_t vp8e_destroy(vpx_codec_alg_priv_t *ctx) { return VPX_CODEC_OK; } -static vpx_codec_err_t image2yuvconfig(const vpx_image_t *img, - YV12_BUFFER_CONFIG *yv12) { - vpx_codec_err_t res = VPX_CODEC_OK; - yv12->y_buffer = img->planes[VPX_PLANE_Y]; - yv12->u_buffer = img->planes[VPX_PLANE_U]; - yv12->v_buffer = img->planes[VPX_PLANE_V]; - - yv12->y_crop_width = img->d_w; - yv12->y_crop_height = img->d_h; - yv12->y_width = img->d_w; - yv12->y_height = img->d_h; - - yv12->uv_width = img->x_chroma_shift == 1 ? (1 + yv12->y_width) / 2 - : yv12->y_width; - yv12->uv_height = img->y_chroma_shift == 1 ? (1 + yv12->y_height) / 2 - : yv12->y_height; - - yv12->y_stride = img->stride[VPX_PLANE_Y]; - yv12->uv_stride = img->stride[VPX_PLANE_U]; - - yv12->border = (img->stride[VPX_PLANE_Y] - img->w) / 2; - yv12->clrtype = REG_YUV; - return res; -} - static void pick_quickcompress_mode(vpx_codec_alg_priv_t *ctx, unsigned long duration, unsigned long deadline) { diff --git a/vp9/vp9_dx_iface.c b/vp9/vp9_dx_iface.c index 85022c951..811cea7f4 100644 --- a/vp9/vp9_dx_iface.c +++ b/vp9/vp9_dx_iface.c @@ -578,30 +578,6 @@ static vpx_codec_err_t vp8_xma_set_mmap(vpx_codec_ctx_t *ctx, return res; } -static vpx_codec_err_t image2yuvconfig(const vpx_image_t *img, - YV12_BUFFER_CONFIG *yv12) { - vpx_codec_err_t res = VPX_CODEC_OK; - yv12->y_buffer = img->planes[VPX_PLANE_Y]; - yv12->u_buffer = img->planes[VPX_PLANE_U]; - yv12->v_buffer = img->planes[VPX_PLANE_V]; - - yv12->y_crop_width = img->d_w; - yv12->y_crop_height = img->d_h; - yv12->y_width = img->d_w; - yv12->y_height = img->d_h; - yv12->uv_width = yv12->y_width / 2; - yv12->uv_height = yv12->y_height / 2; - - yv12->y_stride = img->stride[VPX_PLANE_Y]; - yv12->uv_stride = img->stride[VPX_PLANE_U]; - - yv12->border = (img->stride[VPX_PLANE_Y] - img->d_w) / 2; - yv12->clrtype = (img->fmt == VPX_IMG_FMT_VPXI420 || - img->fmt == VPX_IMG_FMT_VPXYV12); - - return res; -} - static vpx_codec_err_t vp9_set_reference(vpx_codec_alg_priv_t *ctx, int ctr_id, diff --git a/vp9/vp9_iface_common.h b/vp9/vp9_iface_common.h index 96de5f548..84b4d398b 100644 --- a/vp9/vp9_iface_common.h +++ b/vp9/vp9_iface_common.h @@ -37,11 +37,11 @@ static void yuvconfig2image(vpx_image_t *img, const YV12_BUFFER_CONFIG *yv12, img->planes[VPX_PLANE_Y] = yv12->y_buffer; img->planes[VPX_PLANE_U] = yv12->u_buffer; img->planes[VPX_PLANE_V] = yv12->v_buffer; - img->planes[VPX_PLANE_ALPHA] = NULL; + img->planes[VPX_PLANE_ALPHA] = yv12->alpha_buffer; img->stride[VPX_PLANE_Y] = yv12->y_stride; img->stride[VPX_PLANE_U] = yv12->uv_stride; img->stride[VPX_PLANE_V] = yv12->uv_stride; - img->stride[VPX_PLANE_ALPHA] = yv12->y_stride; + img->stride[VPX_PLANE_ALPHA] = yv12->alpha_stride; img->bps = bps; img->user_priv = user_priv; img->img_data = yv12->buffer_alloc; @@ -49,4 +49,34 @@ static void yuvconfig2image(vpx_image_t *img, const YV12_BUFFER_CONFIG *yv12, img->self_allocd = 0; } +static vpx_codec_err_t image2yuvconfig(const vpx_image_t *img, + YV12_BUFFER_CONFIG *yv12) { + yv12->y_buffer = img->planes[VPX_PLANE_Y]; + yv12->u_buffer = img->planes[VPX_PLANE_U]; + yv12->v_buffer = img->planes[VPX_PLANE_V]; + yv12->alpha_buffer = img->planes[VPX_PLANE_ALPHA]; + + yv12->y_crop_width = img->d_w; + yv12->y_crop_height = img->d_h; + yv12->y_width = img->d_w; + yv12->y_height = img->d_h; + + yv12->uv_width = img->x_chroma_shift == 1 ? (1 + yv12->y_width) / 2 + : yv12->y_width; + yv12->uv_height = img->y_chroma_shift == 1 ? (1 + yv12->y_height) / 2 + : yv12->y_height; + + yv12->alpha_width = yv12->alpha_buffer ? img->d_w : 0; + yv12->alpha_height = yv12->alpha_buffer ? img->d_h : 0; + + yv12->y_stride = img->stride[VPX_PLANE_Y]; + yv12->uv_stride = img->stride[VPX_PLANE_U]; + yv12->alpha_stride = yv12->alpha_buffer ? img->stride[VPX_PLANE_ALPHA] : 0; + + yv12->border = (img->stride[VPX_PLANE_Y] - img->w) / 2; + yv12->clrtype = REG_YUV; + + return VPX_CODEC_OK; +} + #endif // VP9_VP9_IFACE_COMMON_H_ |