X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fthird_party%2Flibvpx%2Fsource%2Flibvpx%2Fvpx%2Fsrc%2Fvpx_decoder.c;h=802d8edd8a437a3e424941adb3273485ff00b23d;hb=3545e9f2671f595d2a2f3ee75ca0393b01e35ef6;hp=63fdaf308da187afa1d555ac9b82136482085535;hpb=7d210d4c7e9ba36e635eabc5b5780495f8a63292;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/third_party/libvpx/source/libvpx/vpx/src/vpx_decoder.c b/src/third_party/libvpx/source/libvpx/vpx/src/vpx_decoder.c index 63fdaf3..802d8ed 100644 --- a/src/third_party/libvpx/source/libvpx/vpx/src/vpx_decoder.c +++ b/src/third_party/libvpx/source/libvpx/vpx/src/vpx_decoder.c @@ -18,9 +18,13 @@ #define SAVE_STATUS(ctx,var) (ctx?(ctx->err = var):var) +static vpx_codec_alg_priv_t *get_alg_priv(vpx_codec_ctx_t *ctx) { + return (vpx_codec_alg_priv_t *)ctx->priv; +} + vpx_codec_err_t vpx_codec_dec_init_ver(vpx_codec_ctx_t *ctx, vpx_codec_iface_t *iface, - vpx_codec_dec_cfg_t *cfg, + const vpx_codec_dec_cfg_t *cfg, vpx_codec_flags_t flags, int ver) { vpx_codec_err_t res; @@ -31,8 +35,6 @@ vpx_codec_err_t vpx_codec_dec_init_ver(vpx_codec_ctx_t *ctx, res = VPX_CODEC_INVALID_PARAM; else if (iface->abi_version != VPX_CODEC_INTERNAL_ABI_VERSION) res = VPX_CODEC_ABI_MISMATCH; - else if ((flags & VPX_CODEC_USE_XMA) && !(iface->caps & VPX_CODEC_CAP_XMA)) - res = VPX_CODEC_INCAPABLE; else if ((flags & VPX_CODEC_USE_POSTPROC) && !(iface->caps & VPX_CODEC_CAP_POSTPROC)) res = VPX_CODEC_INCAPABLE; else if ((flags & VPX_CODEC_USE_ERROR_CONCEALMENT) && @@ -50,18 +52,11 @@ vpx_codec_err_t vpx_codec_dec_init_ver(vpx_codec_ctx_t *ctx, ctx->priv = NULL; ctx->init_flags = flags; ctx->config.dec = cfg; - res = VPX_CODEC_OK; - if (!(flags & VPX_CODEC_USE_XMA)) { - res = ctx->iface->init(ctx, NULL); - - if (res) { - ctx->err_detail = ctx->priv ? ctx->priv->err_detail : NULL; - vpx_codec_destroy(ctx); - } - - if (ctx->priv) - ctx->priv->iface = ctx->iface; + res = ctx->iface->init(ctx, NULL); + if (res) { + ctx->err_detail = ctx->priv ? ctx->priv->err_detail : NULL; + vpx_codec_destroy(ctx); } } @@ -103,7 +98,7 @@ vpx_codec_err_t vpx_codec_get_stream_info(vpx_codec_ctx_t *ctx, si->w = 0; si->h = 0; - res = ctx->iface->dec.get_si(ctx->priv->alg_priv, si); + res = ctx->iface->dec.get_si(get_alg_priv(ctx), si); } return SAVE_STATUS(ctx, res); @@ -119,13 +114,13 @@ vpx_codec_err_t vpx_codec_decode(vpx_codec_ctx_t *ctx, /* Sanity checks */ /* NULL data ptr allowed if data_sz is 0 too */ - if (!ctx || (!data && data_sz)) + if (!ctx || (!data && data_sz) || (data && !data_sz)) res = VPX_CODEC_INVALID_PARAM; else if (!ctx->iface || !ctx->priv) res = VPX_CODEC_ERROR; else { - res = ctx->iface->dec.decode(ctx->priv->alg_priv, data, data_sz, - user_priv, deadline); + res = ctx->iface->dec.decode(get_alg_priv(ctx), data, data_sz, user_priv, + deadline); } return SAVE_STATUS(ctx, res); @@ -138,7 +133,7 @@ vpx_image_t *vpx_codec_get_frame(vpx_codec_ctx_t *ctx, if (!ctx || !iter || !ctx->iface || !ctx->priv) img = NULL; else - img = ctx->iface->dec.get_frame(ctx->priv->alg_priv, iter); + img = ctx->iface->dec.get_frame(get_alg_priv(ctx), iter); return img; } @@ -183,50 +178,6 @@ vpx_codec_err_t vpx_codec_register_put_slice_cb(vpx_codec_ctx_t *ctx return SAVE_STATUS(ctx, res); } - -vpx_codec_err_t vpx_codec_get_mem_map(vpx_codec_ctx_t *ctx, - vpx_codec_mmap_t *mmap, - vpx_codec_iter_t *iter) { - vpx_codec_err_t res = VPX_CODEC_OK; - - if (!ctx || !mmap || !iter || !ctx->iface) - res = VPX_CODEC_INVALID_PARAM; - else if (!(ctx->iface->caps & VPX_CODEC_CAP_XMA)) - res = VPX_CODEC_ERROR; - else - res = ctx->iface->get_mmap(ctx, mmap, iter); - - return SAVE_STATUS(ctx, res); -} - - -vpx_codec_err_t vpx_codec_set_mem_map(vpx_codec_ctx_t *ctx, - vpx_codec_mmap_t *mmap, - unsigned int num_maps) { - vpx_codec_err_t res = VPX_CODEC_MEM_ERROR; - - if (!ctx || !mmap || !ctx->iface) - res = VPX_CODEC_INVALID_PARAM; - else if (!(ctx->iface->caps & VPX_CODEC_CAP_XMA)) - res = VPX_CODEC_ERROR; - else { - unsigned int i; - - for (i = 0; i < num_maps; i++, mmap++) { - if (!mmap->base) - break; - - /* Everything look ok, set the mmap in the decoder */ - res = ctx->iface->set_mmap(ctx, mmap); - - if (res) - break; - } - } - - return SAVE_STATUS(ctx, res); -} - vpx_codec_err_t vpx_codec_set_frame_buffer_functions( vpx_codec_ctx_t *ctx, vpx_get_frame_buffer_cb_fn_t cb_get, vpx_release_frame_buffer_cb_fn_t cb_release, void *cb_priv) { @@ -238,7 +189,7 @@ vpx_codec_err_t vpx_codec_set_frame_buffer_functions( !(ctx->iface->caps & VPX_CODEC_CAP_EXTERNAL_FRAME_BUFFER)) { res = VPX_CODEC_ERROR; } else { - res = ctx->iface->dec.set_fb_fn(ctx->priv->alg_priv, cb_get, cb_release, + res = ctx->iface->dec.set_fb_fn(get_alg_priv(ctx), cb_get, cb_release, cb_priv); }