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 #include "vpx_codec_impl_top.h" 26 27 /*!\name Algorithm interface for VP8 28 * 29 * This interface provides the capability to decode raw VP8 streams, as would 30 * be found in AVI files and other non-Flash uses. 31 * @{ 32 */ 33 extern vpx_codec_iface_t vpx_codec_vp8_dx_algo; 34 extern vpx_codec_iface_t *vpx_codec_vp8_dx(void); 35 36 /* TODO(jkoleszar): These move to VP9 in a later patch set. */ 37 extern vpx_codec_iface_t vpx_codec_vp9_dx_algo; 38 extern vpx_codec_iface_t *vpx_codec_vp9_dx(void); 39 /*!@} - end algorithm interface member group*/ 40 41 /* Include controls common to both the encoder and decoder */ 42 #include "vp8.h" 43 44 45 /*!\brief VP8 decoder control functions 46 * 47 * This set of macros define the control functions available for the VP8 48 * decoder interface. 49 * 50 * \sa #vpx_codec_control 51 */ 52 enum vp8_dec_control_id { 53 /** control function to get info on which reference frames were updated 54 * by the last decode 55 */ 56 VP8D_GET_LAST_REF_UPDATES = VP8_DECODER_CTRL_ID_START, 57 58 /** check if the indicated frame is corrupted */ 59 VP8D_GET_FRAME_CORRUPTED, 60 61 /** control function to get info on which reference frames were used 62 * by the last decode 63 */ 64 VP8D_GET_LAST_REF_USED, 65 66 /** decryption function to decrypt encoded buffer data immediately 67 * before decoding. Takes a vp8_decrypt_init, which contains 68 * a callback function and opaque context pointer. 69 */ 70 VP8D_SET_DECRYPTOR, 71 72 /** For testing. */ 73 VP9_INVERT_TILE_DECODE_ORDER, 74 75 VP8_DECODER_CTRL_ID_MAX 76 }; 77 78 typedef struct vp8_decrypt_init { 79 /** Decrypt n bytes of data from input -> output, using the decrypt_state 80 * passed in VP8D_SET_DECRYPTOR. 81 */ 82 void (*decrypt_cb)(void *decrypt_state, const unsigned char *input, 83 unsigned char *output, int count); 84 void *decrypt_state; 85 } vp8_decrypt_init; 86 87 /*!\brief VP8 decoder control function parameter type 88 * 89 * Defines the data types that VP8D control functions take. Note that 90 * additional common controls are defined in vp8.h 91 * 92 */ 93 94 95 VPX_CTRL_USE_TYPE(VP8D_GET_LAST_REF_UPDATES, int *) 96 VPX_CTRL_USE_TYPE(VP8D_GET_FRAME_CORRUPTED, int *) 97 VPX_CTRL_USE_TYPE(VP8D_GET_LAST_REF_USED, int *) 98 VPX_CTRL_USE_TYPE(VP8D_SET_DECRYPTOR, vp8_decrypt_init *) 99 VPX_CTRL_USE_TYPE(VP9_INVERT_TILE_DECODE_ORDER, int) 100 101 /*! @} - end defgroup vp8_decoder */ 102 103 104 #include "vpx_codec_impl_bottom.h" 105 #endif 106