From febdebf27a5b7c07c72684280ac24f92f92e9519 Mon Sep 17 00:00:00 2001 From: James Zern Date: Sat, 9 Aug 2014 19:16:18 -0700 Subject: [PATCH] remove remaining references to XMA the bulk of the functionality was removed in: a42b5c2 Removing legacy XMA features from libvpx. BUG=840 Change-Id: I8ca51d6aa76028f36d0eb1a15d2f2e3161e12ea4 --- usage.dox | 77 +------------------------------------------ vpx/src/vpx_decoder.c | 20 ++++------- vpx/src/vpx_encoder.c | 4 --- vpx/vpx_codec.h | 2 -- vpx/vpx_decoder.h | 4 --- vpx/vpx_encoder.h | 8 ----- 6 files changed, 8 insertions(+), 107 deletions(-) diff --git a/usage.dox b/usage.dox index 92fd6b26e..237b8dc42 100644 --- a/usage.dox +++ b/usage.dox @@ -57,9 +57,6 @@ the vpx_codec_get_caps() method. Attempts to invoke features not supported by an algorithm will generally result in #VPX_CODEC_INCAPABLE. - Currently defined features available in both encoders and decoders include: - - \subpage usage_xma - \if decoder Currently defined decoder features include: - \ref usage_cb @@ -70,9 +67,7 @@ To initialize a codec instance, the address of the codec context and interface structures are passed to an initialization function. Depending on the \ref usage_features that the codec supports, the codec could be - initialized in different modes. Most notably, the application may choose to - use \ref usage_xma mode to gain fine grained control over how and where - memory is allocated for the codec. + initialized in different modes. To prevent cases of confusion where the ABI of the library changes, the ABI is versioned. The ABI version number must be passed at @@ -136,73 +131,3 @@ possible." */ - - -/*! \page usage_xma External Memory Allocation - Applications that wish to have fine grained control over how and where - decoders allocate memory \ref MAY make use of the eXternal Memory Allocation - (XMA) interface. Not all codecs support the XMA \ref usage_features. - - To use a decoder in XMA mode, the decoder \ref MUST be initialized with the - vpx_codec_xma_init_ver() function. The amount of memory a decoder needs to - allocate is heavily dependent on the size of the encoded video frames. The - size of the video must be known before requesting the decoder's memory map. - This stream information can be obtained with the vpx_codec_peek_stream_info() - function, which does not require a constructed decoder context. If the exact - stream is not known, a stream info structure can be created that reflects - the maximum size that the decoder instance is required to support. - - Once the decoder instance has been initialized and the stream information - determined, the application calls the vpx_codec_get_mem_map() iterator - repeatedly to get a list of the memory segments requested by the decoder. - The iterator value should be initialized to NULL to request the first - element, and the function will return #VPX_CODEC_LIST_END to signal the end of - the list. - - After each segment is identified, it must be passed to the codec through the - vpx_codec_set_mem_map() function. Segments \ref MUST be passed in the same - order as they are returned from vpx_codec_get_mem_map(), but there is no - requirement that vpx_codec_get_mem_map() must finish iterating before - vpx_codec_set_mem_map() is called. For instance, some applications may choose - to get a list of all requests, construct an optimal heap, and then set all - maps at once with one call. Other applications may set one map at a time, - allocating it immediately after it is returned from vpx_codec_get_mem_map(). - - After all segments have been set using vpx_codec_set_mem_map(), the codec may - be used as it would be in normal internal allocation mode. - - \section usage_xma_seg_id Segment Identifiers - Each requested segment is identified by an identifier unique to - that decoder type. Some of these identifiers are private, while others are - enumerated for application use. Identifiers not enumerated publicly are - subject to change. Identifiers are non-consecutive. - - \section usage_xma_seg_szalign Segment Size and Alignment - The sz (size) and align (alignment) parameters describe the required size - and alignment of the requested segment. Alignment will always be a power of - two. Applications \ref MUST honor the alignment requested. Failure to do so - could result in program crashes or may incur a speed penalty. - - \section usage_xma_seg_flags Segment Flags - The flags member of the segment structure indicates any requirements or - desires of the codec for the particular segment. The #VPX_CODEC_MEM_ZERO flag - indicates that the segment \ref MUST be zeroed by the application prior to - passing it to the application. The #VPX_CODEC_MEM_WRONLY flag indicates that - the segment will only be written into by the decoder, not read. If this flag - is not set, the application \ref MUST insure that the memory segment is - readable. On some platforms, framebuffer memory is writable but not - readable, for example. The #VPX_CODEC_MEM_FAST flag indicates that the segment - will be frequently accessed, and that it should be placed into fast memory, - if any is available. The application \ref MAY choose to place other segments - in fast memory as well, but the most critical segments will be identified by - this flag. - - \section usage_xma_seg_basedtor Segment Base Address and Destructor - For each requested memory segment, the application must determine the - address of a memory segment that meets the requirements of the codec. This - address is set in the base member of the #vpx_codec_mmap - structure. If the application requires processing when the segment is no - longer used by the codec (for instance to deallocate it or close an - associated file descriptor) the dtor and priv - members can be set. -*/ diff --git a/vpx/src/vpx_decoder.c b/vpx/src/vpx_decoder.c index 276238bdf..d9c8a9522 100644 --- a/vpx/src/vpx_decoder.c +++ b/vpx/src/vpx_decoder.c @@ -31,8 +31,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,19 +48,15 @@ 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); } + + if (ctx->priv) + ctx->priv->iface = ctx->iface; } return SAVE_STATUS(ctx, res); diff --git a/vpx/src/vpx_encoder.c b/vpx/src/vpx_encoder.c index db019957e..6e18bd129 100644 --- a/vpx/src/vpx_encoder.c +++ b/vpx/src/vpx_encoder.c @@ -35,8 +35,6 @@ vpx_codec_err_t vpx_codec_enc_init_ver(vpx_codec_ctx_t *ctx, res = VPX_CODEC_ABI_MISMATCH; else if (!(iface->caps & VPX_CODEC_CAP_ENCODER)) res = VPX_CODEC_INCAPABLE; - else if ((flags & VPX_CODEC_USE_XMA) && !(iface->caps & VPX_CODEC_CAP_XMA)) - res = VPX_CODEC_INCAPABLE; else if ((flags & VPX_CODEC_USE_PSNR) && !(iface->caps & VPX_CODEC_CAP_PSNR)) res = VPX_CODEC_INCAPABLE; @@ -80,8 +78,6 @@ vpx_codec_err_t vpx_codec_enc_init_multi_ver(vpx_codec_ctx_t *ctx, res = VPX_CODEC_ABI_MISMATCH; else if (!(iface->caps & VPX_CODEC_CAP_ENCODER)) res = VPX_CODEC_INCAPABLE; - else if ((flags & VPX_CODEC_USE_XMA) && !(iface->caps & VPX_CODEC_CAP_XMA)) - res = VPX_CODEC_INCAPABLE; else if ((flags & VPX_CODEC_USE_PSNR) && !(iface->caps & VPX_CODEC_CAP_PSNR)) res = VPX_CODEC_INCAPABLE; diff --git a/vpx/vpx_codec.h b/vpx/vpx_codec.h index 04f93020f..07df72a78 100644 --- a/vpx/vpx_codec.h +++ b/vpx/vpx_codec.h @@ -153,7 +153,6 @@ extern "C" { typedef long vpx_codec_caps_t; #define VPX_CODEC_CAP_DECODER 0x1 /**< Is a decoder */ #define VPX_CODEC_CAP_ENCODER 0x2 /**< Is an encoder */ -#define VPX_CODEC_CAP_XMA 0x4 /**< Supports eXternal Memory Allocation */ /*! \brief Initialization-time Feature Enabling @@ -164,7 +163,6 @@ extern "C" { * The available flags are specified by VPX_CODEC_USE_* defines. */ typedef long vpx_codec_flags_t; -#define VPX_CODEC_USE_XMA 0x00000001 /**< Use eXternal Memory Allocation mode */ /*!\brief Codec interface structure. diff --git a/vpx/vpx_decoder.h b/vpx/vpx_decoder.h index ba183283e..10b89fa0f 100644 --- a/vpx/vpx_decoder.h +++ b/vpx/vpx_decoder.h @@ -122,10 +122,6 @@ extern "C" { * is not thread safe and should be guarded with a lock if being used * in a multithreaded context. * - * In XMA mode (activated by setting VPX_CODEC_USE_XMA in the flags - * parameter), the storage pointed to by the cfg parameter must be - * kept readable and stable until all memory maps have been set. - * * \param[in] ctx Pointer to this instance's context. * \param[in] iface Pointer to the algorithm interface to use. * \param[in] cfg Configuration to use, if known. May be NULL. diff --git a/vpx/vpx_encoder.h b/vpx/vpx_encoder.h index 9d2f18c88..44f81df3e 100644 --- a/vpx/vpx_encoder.h +++ b/vpx/vpx_encoder.h @@ -704,10 +704,6 @@ extern "C" { * is not thread safe and should be guarded with a lock if being used * in a multithreaded context. * - * In XMA mode (activated by setting VPX_CODEC_USE_XMA in the flags - * parameter), the storage pointed to by the cfg parameter must be - * kept readable and stable until all memory maps have been set. - * * \param[in] ctx Pointer to this instance's context. * \param[in] iface Pointer to the algorithm interface to use. * \param[in] cfg Configuration to use, if known. May be NULL. @@ -741,10 +737,6 @@ extern "C" { * instead of this function directly, to ensure that the ABI version number * parameter is properly initialized. * - * In XMA mode (activated by setting VPX_CODEC_USE_XMA in the flags - * parameter), the storage pointed to by the cfg parameter must be - * kept readable and stable until all memory maps have been set. - * * \param[in] ctx Pointer to this instance's context. * \param[in] iface Pointer to the algorithm interface to use. * \param[in] cfg Configuration to use, if known. May be NULL.