| Index: source/libvpx/vpx/src/vpx_decoder.c
|
| ===================================================================
|
| --- source/libvpx/vpx/src/vpx_decoder.c (revision 290053)
|
| +++ source/libvpx/vpx/src/vpx_decoder.c (working copy)
|
| @@ -31,8 +31,6 @@
|
| 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,19 +48,15 @@
|
| 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);
|
| }
|
| +
|
| + if (ctx->priv)
|
| + ctx->priv->iface = ctx->iface;
|
| }
|
|
|
| return SAVE_STATUS(ctx, res);
|
| @@ -119,7 +113,7 @@
|
|
|
| /* 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;
|
| @@ -183,50 +177,6 @@
|
| 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) {
|
|
|