1 /* 2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 12 #include "vp8.h" 13 14 /*!\defgroup vp8_decoder WebM VP8 Decoder 15 * \ingroup vp8 16 * 17 * @{ 18 */ 19 /*!\file 20 * \brief Provides definitions for using the VP8 algorithm within the vpx Decoder 21 * interface. 22 */ 23 #ifndef VP8DX_H 24 #define VP8DX_H 25 26 #ifdef __cplusplus 27 extern "C" { 28 #endif 29 30 /*!\name Algorithm interface for VP8 31 * 32 * This interface provides the capability to decode raw VP8 streams, as would 33 * be found in AVI files and other non-Flash uses. 34 * @{ 35 */ 36 extern vpx_codec_iface_t vpx_codec_vp8_dx_algo; 37 extern vpx_codec_iface_t *vpx_codec_vp8_dx(void); 38 39 /* TODO(jkoleszar): These move to VP9 in a later patch set. */ 40 extern vpx_codec_iface_t vpx_codec_vp9_dx_algo; 41 extern vpx_codec_iface_t *vpx_codec_vp9_dx(void); 42 /*!@} - end algorithm interface member group*/ 43 44 /* Include controls common to both the encoder and decoder */ 45 #include "vp8.h" 46 47 48 /*!\enum vp8_dec_control_id 49 * \brief VP8 decoder control functions 50 * 51 * This set of macros define the control functions available for the VP8 52 * decoder interface. 53 * 54 * \sa #vpx_codec_control 55 */ 56 enum vp8_dec_control_id { 57 /** control function to get info on which reference frames were updated 58 * by the last decode 59 */ 60 VP8D_GET_LAST_REF_UPDATES = VP8_DECODER_CTRL_ID_START, 61 62 /** check if the indicated frame is corrupted */ 63 VP8D_GET_FRAME_CORRUPTED, 64 65 /** control function to get info on which reference frames were used 66 * by the last decode 67 */ 68 VP8D_GET_LAST_REF_USED, 69 70 /** decryption function to decrypt encoded buffer data immediately 71 * before decoding. Takes a vp8_decrypt_init, which contains 72 * a callback function and opaque context pointer. 73 */ 74 VP8D_SET_DECRYPTOR, 75 76 /** For testing. */ 77 VP9_INVERT_TILE_DECODE_ORDER, 78 79 VP8_DECODER_CTRL_ID_MAX 80 }; 81 82 /*!\brief Structure to hold decryption state 83 * 84 * Defines a structure to hold the decryption state and access function. 85 */ 86 typedef struct vp8_decrypt_init { 87 /** Decrypt n bytes of data from input -> output, using the decrypt_state 88 * passed in VP8D_SET_DECRYPTOR. 89 */ 90 void (*decrypt_cb)(void *decrypt_state, const unsigned char *input, 91 unsigned char *output, int count); 92 /*! Decryption state. */ 93 void *decrypt_state; 94 } vp8_decrypt_init; 95 96 /*!\brief VP8 decoder control function parameter type 97 * 98 * Defines the data types that VP8D control functions take. Note that 99 * additional common controls are defined in vp8.h 100 * 101 */ 102 103 104 VPX_CTRL_USE_TYPE(VP8D_GET_LAST_REF_UPDATES, int *) 105 VPX_CTRL_USE_TYPE(VP8D_GET_FRAME_CORRUPTED, int *) 106 VPX_CTRL_USE_TYPE(VP8D_GET_LAST_REF_USED, int *) 107 VPX_CTRL_USE_TYPE(VP8D_SET_DECRYPTOR, vp8_decrypt_init *) 108 VPX_CTRL_USE_TYPE(VP9_INVERT_TILE_DECODE_ORDER, int) 109 110 /*! @} - end defgroup vp8_decoder */ 111 112 #ifdef __cplusplus 113 } // extern "C" 114 #endif 115 116 #endif 117