| /* |
| * 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. |
| */ |
| |
| |
| #include "vp8.h" |
| |
| /*!\defgroup vp8_decoder WebM VP8 Decoder |
| * \ingroup vp8 |
| * |
| * @{ |
| */ |
| /*!\file |
| * \brief Provides definitions for using the VP8 algorithm within the vpx Decoder |
| * interface. |
| */ |
| #ifndef VP8DX_H |
| #define VP8DX_H |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /*!\name Algorithm interface for VP8 |
| * |
| * This interface provides the capability to decode raw VP8 streams, as would |
| * be found in AVI files and other non-Flash uses. |
| * @{ |
| */ |
| extern vpx_codec_iface_t vpx_codec_vp8_dx_algo; |
| extern vpx_codec_iface_t *vpx_codec_vp8_dx(void); |
| |
| /* TODO(jkoleszar): These move to VP9 in a later patch set. */ |
| extern vpx_codec_iface_t vpx_codec_vp9_dx_algo; |
| extern vpx_codec_iface_t *vpx_codec_vp9_dx(void); |
| /*!@} - end algorithm interface member group*/ |
| |
| /* Include controls common to both the encoder and decoder */ |
| #include "vp8.h" |
| |
| |
| /*!\brief VP8 decoder control functions |
| * |
| * This set of macros define the control functions available for the VP8 |
| * decoder interface. |
| * |
| * \sa #vpx_codec_control |
| */ |
| enum vp8_dec_control_id { |
| /** control function to get info on which reference frames were updated |
| * by the last decode |
| */ |
| VP8D_GET_LAST_REF_UPDATES = VP8_DECODER_CTRL_ID_START, |
| |
| /** check if the indicated frame is corrupted */ |
| VP8D_GET_FRAME_CORRUPTED, |
| |
| /** control function to get info on which reference frames were used |
| * by the last decode |
| */ |
| VP8D_GET_LAST_REF_USED, |
| |
| /** decryption function to decrypt encoded buffer data immediately |
| * before decoding. Takes a vp8_decrypt_init, which contains |
| * a callback function and opaque context pointer. |
| */ |
| VP8D_SET_DECRYPTOR, |
| |
| /** For testing. */ |
| VP9_INVERT_TILE_DECODE_ORDER, |
| |
| VP8_DECODER_CTRL_ID_MAX |
| }; |
| |
| typedef struct vp8_decrypt_init { |
| /** Decrypt n bytes of data from input -> output, using the decrypt_state |
| * passed in VP8D_SET_DECRYPTOR. |
| */ |
| void (*decrypt_cb)(void *decrypt_state, const unsigned char *input, |
| unsigned char *output, int count); |
| void *decrypt_state; |
| } vp8_decrypt_init; |
| |
| /*!\brief VP8 decoder control function parameter type |
| * |
| * Defines the data types that VP8D control functions take. Note that |
| * additional common controls are defined in vp8.h |
| * |
| */ |
| |
| |
| VPX_CTRL_USE_TYPE(VP8D_GET_LAST_REF_UPDATES, int *) |
| VPX_CTRL_USE_TYPE(VP8D_GET_FRAME_CORRUPTED, int *) |
| VPX_CTRL_USE_TYPE(VP8D_GET_LAST_REF_USED, int *) |
| VPX_CTRL_USE_TYPE(VP8D_SET_DECRYPTOR, vp8_decrypt_init *) |
| VPX_CTRL_USE_TYPE(VP9_INVERT_TILE_DECODE_ORDER, int) |
| |
| /*! @} - end defgroup vp8_decoder */ |
| |
| #ifdef __cplusplus |
| } // extern "C" |
| #endif |
| |
| #endif |