• James Zern's avatar
    documentation: minor cosmetics · f42d52e6
    James Zern authored
    - correct spelling
    - remove explicit file name w/\file (unnecessary when contained in the
      same file and prone to desync)
    
    Change-Id: I68a3960ac5ab84d0f2e5c9b2e29799f26dfccf23
    f42d52e6
vpx_codec.h 19.13 KiB
/*
 *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree. An additional intellectual property rights grant can be found
 *  in the file PATENTS.  All contributing project authors may
 *  be found in the AUTHORS file in the root of the source tree.
 */
/*!\defgroup codec Common Algorithm Interface
 * This abstraction allows applications to easily support multiple video
 * formats with minimal code duplication. This section describes the interface
 * common to all codecs (both encoders and decoders).
 * @{
/*!\file
 * \brief Describes the codec algorithm interface to applications.
 * This file describes the interface between an application and a
 * video codec algorithm.
 * An application instantiates a specific codec instance by using
 * vpx_codec_init() and a pointer to the algorithm's interface structure:
 *     <pre>
 *     my_app.c:
 *       extern vpx_codec_iface_t my_codec;
 *       {
 *           vpx_codec_ctx_t algo;
 *           res = vpx_codec_init(&algo, &my_codec);
 *       }
 *     </pre>
 * Once initialized, the instance is manged using other functions from
 * the vpx_codec_* family.
#ifdef __cplusplus
extern "C" {
#endif
#ifndef VPX_CODEC_H
#define VPX_CODEC_H
#include "vpx_integer.h"
#include "vpx_image.h"
  /*!\brief Decorator indicating a function is deprecated */
#ifndef DEPRECATED
#if defined(__GNUC__) && __GNUC__
#define DEPRECATED          __attribute__ ((deprecated))
#elif defined(_MSC_VER)
#define DEPRECATED
#else
#define DEPRECATED
#endif
#endif  /* DEPRECATED */
#ifndef DECLSPEC_DEPRECATED
#if defined(__GNUC__) && __GNUC__
#define DECLSPEC_DEPRECATED /**< \copydoc #DEPRECATED */
#elif defined(_MSC_VER)
#define DECLSPEC_DEPRECATED __declspec(deprecated) /**< \copydoc #DEPRECATED */
#else
#define DECLSPEC_DEPRECATED /**< \copydoc #DEPRECATED */
#endif
#endif  /* DECLSPEC_DEPRECATED */
  /*!\brief Decorator indicating a function is potentially unused */
#ifdef UNUSED
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
#elif __GNUC__ #define UNUSED __attribute__ ((unused)) #else #define UNUSED #endif /*!\brief Current ABI version number * * \internal * If this file is altered in any way that changes the ABI, this value * must be bumped. Examples include, but are not limited to, changing * types, removing or reassigning enums, adding/removing/rearranging * fields to structures */ #define VPX_CODEC_ABI_VERSION (2 + VPX_IMAGE_ABI_VERSION) /**<\hideinitializer*/ /*!\brief Algorithm return codes */ typedef enum { /*!\brief Operation completed without error */ VPX_CODEC_OK, /*!\brief Unspecified error */ VPX_CODEC_ERROR, /*!\brief Memory operation failed */ VPX_CODEC_MEM_ERROR, /*!\brief ABI version mismatch */ VPX_CODEC_ABI_MISMATCH, /*!\brief Algorithm does not have required capability */ VPX_CODEC_INCAPABLE, /*!\brief The given bitstream is not supported. * * The bitstream was unable to be parsed at the highest level. The decoder * is unable to proceed. This error \ref SHOULD be treated as fatal to the * stream. */ VPX_CODEC_UNSUP_BITSTREAM, /*!\brief Encoded bitstream uses an unsupported feature * * The decoder does not implement a feature required by the encoder. This * return code should only be used for features that prevent future * pictures from being properly decoded. This error \ref MAY be treated as * fatal to the stream or \ref MAY be treated as fatal to the current GOP. */ VPX_CODEC_UNSUP_FEATURE, /*!\brief The coded data for this stream is corrupt or incomplete * * There was a problem decoding the current frame. This return code * should only be used for failures that prevent future pictures from * being properly decoded. This error \ref MAY be treated as fatal to the * stream or \ref MAY be treated as fatal to the current GOP. If decoding * is continued for the current GOP, artifacts may be present. */ VPX_CODEC_CORRUPT_FRAME, /*!\brief An application-supplied parameter is not valid. * */ VPX_CODEC_INVALID_PARAM, /*!\brief An iterator reached the end of list. * */ VPX_CODEC_LIST_END }
141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
vpx_codec_err_t; /*! \brief Codec capabilities bitfield * * Each codec advertises the capabilities it supports as part of its * ::vpx_codec_iface_t interface structure. Capabilities are extra interfaces * or functionality, and are not required to be supported. * * The available flags are specified by VPX_CODEC_CAP_* defines. */ 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 * * Certain codec features must be known at initialization time, to allow for * proper memory allocation. * * 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. * * Contains function pointers and other data private to the codec * implementation. This structure is opaque to the application. */ typedef const struct vpx_codec_iface vpx_codec_iface_t; /*!\brief Codec private data structure. * * Contains data private to the codec implementation. This structure is opaque * to the application. */ typedef struct vpx_codec_priv vpx_codec_priv_t; /*!\brief Iterator * * Opaque storage used for iterating over lists. */ typedef const void *vpx_codec_iter_t; /*!\brief Codec context structure * * All codecs \ref MUST support this context structure fully. In general, * this data should be considered private to the codec algorithm, and * not be manipulated or examined by the calling application. Applications * may reference the 'name' member to get a printable description of the * algorithm. */ typedef struct vpx_codec_ctx { const char *name; /**< Printable interface name */ vpx_codec_iface_t *iface; /**< Interface pointers */ vpx_codec_err_t err; /**< Last returned error */ const char *err_detail; /**< Detailed info, if available */ vpx_codec_flags_t init_flags; /**< Flags passed at init time */ union { struct vpx_codec_dec_cfg *dec; /**< Decoder Configuration Pointer */ struct vpx_codec_enc_cfg *enc; /**< Encoder Configuration Pointer */ void *raw; } config; /**< Configuration pointer aliasing union */