X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fthird_party%2Flibvpx%2Fsource%2Flibvpx%2Fvp8%2Fvp8_cx_iface.c;h=b1b079cb26058f4b3f21edce611dc216bcf11ed0;hb=3545e9f2671f595d2a2f3ee75ca0393b01e35ef6;hp=a10c401fe240db2229889a08fdd928406c9438ee;hpb=7d210d4c7e9ba36e635eabc5b5780495f8a63292;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/third_party/libvpx/source/libvpx/vp8/vp8_cx_iface.c b/src/third_party/libvpx/source/libvpx/vp8/vp8_cx_iface.c index a10c401..b1b079c 100644 --- a/src/third_party/libvpx/source/libvpx/vp8/vp8_cx_iface.c +++ b/src/third_party/libvpx/source/libvpx/vp8/vp8_cx_iface.c @@ -14,6 +14,7 @@ #include "vpx/vpx_codec.h" #include "vpx/internal/vpx_codec_internal.h" #include "vpx_version.h" +#include "vpx_mem/vpx_mem.h" #include "vp8/encoder/onyx_int.h" #include "vpx/vp8cx.h" #include "vp8/encoder/firstpass.h" @@ -39,40 +40,28 @@ struct vp8_extracfg }; -struct extraconfig_map -{ - int usage; - struct vp8_extracfg cfg; -}; - -static const struct extraconfig_map extracfg_map[] = -{ - { - 0, - { - NULL, +static struct vp8_extracfg default_extracfg = { + NULL, #if !(CONFIG_REALTIME_ONLY) - 0, /* cpu_used */ + 0, /* cpu_used */ #else - 4, /* cpu_used */ + 4, /* cpu_used */ #endif - 0, /* enable_auto_alt_ref */ - 0, /* noise_sensitivity */ - 0, /* Sharpness */ - 0, /* static_thresh */ + 0, /* enable_auto_alt_ref */ + 0, /* noise_sensitivity */ + 0, /* Sharpness */ + 0, /* static_thresh */ #if (CONFIG_REALTIME_ONLY & CONFIG_ONTHEFLY_BITPACKING) - VP8_EIGHT_TOKENPARTITION, + VP8_EIGHT_TOKENPARTITION, #else - VP8_ONE_TOKENPARTITION, /* token_partitions */ + VP8_ONE_TOKENPARTITION, /* token_partitions */ #endif - 0, /* arnr_max_frames */ - 3, /* arnr_strength */ - 3, /* arnr_type*/ - 0, /* tuning*/ - 10, /* cq_level */ - 0, /* rc_max_intra_bitrate_pct */ - } - } + 0, /* arnr_max_frames */ + 3, /* arnr_strength */ + 3, /* arnr_type*/ + 0, /* tuning*/ + 10, /* cq_level */ + 0, /* rc_max_intra_bitrate_pct */ }; struct vpx_codec_alg_priv @@ -631,27 +620,21 @@ static vpx_codec_err_t vp8e_init(vpx_codec_ctx_t *ctx, vpx_codec_priv_enc_mr_cfg_t *mr_cfg) { vpx_codec_err_t res = VPX_CODEC_OK; - struct vpx_codec_alg_priv *priv; - vpx_codec_enc_cfg_t *cfg; - unsigned int i; - struct VP8_COMP *optr; vp8_rtcd(); if (!ctx->priv) { - priv = calloc(1, sizeof(struct vpx_codec_alg_priv)); + struct vpx_codec_alg_priv *priv = + (struct vpx_codec_alg_priv *)vpx_calloc(1, sizeof(*priv)); if (!priv) { return VPX_CODEC_MEM_ERROR; } - ctx->priv = &priv->base; - ctx->priv->sz = sizeof(*ctx->priv); - ctx->priv->iface = ctx->iface; - ctx->priv->alg_priv = priv; + ctx->priv = (vpx_codec_priv_t *)priv; ctx->priv->init_flags = ctx->init_flags; if (ctx->config.enc) @@ -659,21 +642,11 @@ static vpx_codec_err_t vp8e_init(vpx_codec_ctx_t *ctx, /* Update the reference to the config structure to an * internal copy. */ - ctx->priv->alg_priv->cfg = *ctx->config.enc; - ctx->config.enc = &ctx->priv->alg_priv->cfg; + priv->cfg = *ctx->config.enc; + ctx->config.enc = &priv->cfg; } - cfg = &ctx->priv->alg_priv->cfg; - - /* Select the extra vp8 configuration table based on the current - * usage value. If the current usage value isn't found, use the - * values for usage case 0. - */ - for (i = 0; - extracfg_map[i].usage && extracfg_map[i].usage != cfg->g_usage; - i++); - - priv->vp8_cfg = extracfg_map[i].cfg; + priv->vp8_cfg = default_extracfg; priv->vp8_cfg.pkt_list = &priv->pkt_list.head; priv->cx_data_sz = priv->cfg.g_w * priv->cfg.g_h * 3 / 2 * 2; @@ -696,17 +669,10 @@ static vpx_codec_err_t vp8e_init(vpx_codec_ctx_t *ctx, if (!res) { - set_vp8e_config(&ctx->priv->alg_priv->oxcf, - ctx->priv->alg_priv->cfg, - ctx->priv->alg_priv->vp8_cfg, - mr_cfg); - - optr = vp8_create_compressor(&ctx->priv->alg_priv->oxcf); - - if (!optr) + set_vp8e_config(&priv->oxcf, priv->cfg, priv->vp8_cfg, mr_cfg); + priv->cpi = vp8_create_compressor(&priv->oxcf); + if (!priv->cpi) res = VPX_CODEC_MEM_ERROR; - else - ctx->priv->alg_priv->cpi = optr; } } @@ -727,24 +693,30 @@ static vpx_codec_err_t vp8e_destroy(vpx_codec_alg_priv_t *ctx) free(ctx->cx_data); vp8_remove_compressor(&ctx->cpi); - free(ctx); + vpx_free(ctx); return VPX_CODEC_OK; } static vpx_codec_err_t image2yuvconfig(const vpx_image_t *img, YV12_BUFFER_CONFIG *yv12) { + const int y_w = img->d_w; + const int y_h = img->d_h; + const int uv_w = (img->d_w + 1) / 2; + const int uv_h = (img->d_h + 1) / 2; 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 = (1 + yv12->y_width) / 2; - yv12->uv_height = (1 + yv12->y_height) / 2; + yv12->y_crop_width = y_w; + yv12->y_crop_height = y_h; + yv12->y_width = y_w; + yv12->y_height = y_h; + yv12->uv_crop_width = uv_w; + yv12->uv_crop_height = uv_h; + yv12->uv_width = uv_w; + yv12->uv_height = uv_h; yv12->y_stride = img->stride[VPX_PLANE_Y]; yv12->uv_stride = img->stride[VPX_PLANE_U]; @@ -1273,6 +1245,9 @@ static vpx_codec_enc_cfg_map_t vp8e_usage_cfg_map[] = 320, /* g_width */ 240, /* g_height */ + VPX_BITS_8, /* g_bit_depth */ + 8, /* g_input_bit_depth */ + {1, 30}, /* g_timebase */ 0, /* g_error_resilient */ @@ -1316,9 +1291,7 @@ static vpx_codec_enc_cfg_map_t vp8e_usage_cfg_map[] = "vp8.fpf" /* first pass filename */ #endif VPX_SS_DEFAULT_LAYERS, /* ss_number_layers */ -#if CONFIG_SPATIAL_SVC {0}, -#endif {0}, /* ss_target_bitrate */ 1, /* ts_number_layers */ {0}, /* ts_target_bitrate */ @@ -1326,7 +1299,6 @@ static vpx_codec_enc_cfg_map_t vp8e_usage_cfg_map[] = 0, /* ts_periodicity */ {0}, /* ts_layer_id */ }}, - { -1, {NOT_IMPLEMENTED}} }; @@ -1343,20 +1315,19 @@ CODEC_INTERFACE(vpx_codec_vp8_cx) = vp8e_init, /* vpx_codec_init_fn_t init; */ vp8e_destroy, /* vpx_codec_destroy_fn_t destroy; */ vp8e_ctf_maps, /* vpx_codec_ctrl_fn_map_t *ctrl_maps; */ - NOT_IMPLEMENTED, /* vpx_codec_get_mmap_fn_t get_mmap; */ - NOT_IMPLEMENTED, /* vpx_codec_set_mmap_fn_t set_mmap; */ { - NOT_IMPLEMENTED, /* vpx_codec_peek_si_fn_t peek_si; */ - NOT_IMPLEMENTED, /* vpx_codec_get_si_fn_t get_si; */ - NOT_IMPLEMENTED, /* vpx_codec_decode_fn_t decode; */ - NOT_IMPLEMENTED, /* vpx_codec_frame_get_fn_t frame_get; */ + NULL, /* vpx_codec_peek_si_fn_t peek_si; */ + NULL, /* vpx_codec_get_si_fn_t get_si; */ + NULL, /* vpx_codec_decode_fn_t decode; */ + NULL, /* vpx_codec_frame_get_fn_t frame_get; */ }, { + 1, /* 1 cfg map */ vp8e_usage_cfg_map, /* vpx_codec_enc_cfg_map_t peek_si; */ vp8e_encode, /* vpx_codec_encode_fn_t encode; */ vp8e_get_cxdata, /* vpx_codec_get_cx_data_fn_t frame_get; */ vp8e_set_config, - NOT_IMPLEMENTED, + NULL, vp8e_get_preview, vp8e_mr_alloc_mem, } /* encoder functions */