WebM VP8 Codec SDK
vpx_decoder.h
Go to the documentation of this file.
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 #ifndef VPX_DECODER_H
11 #define VPX_DECODER_H
12 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
32 #include "vpx_codec.h"
33 
42 #define VPX_DECODER_ABI_VERSION (2 + VPX_CODEC_ABI_VERSION)
52 #define VPX_CODEC_CAP_PUT_SLICE 0x10000
53 #define VPX_CODEC_CAP_PUT_FRAME 0x20000
54 #define VPX_CODEC_CAP_POSTPROC 0x40000
55 #define VPX_CODEC_CAP_ERROR_CONCEALMENT 0x80000
57 #define VPX_CODEC_CAP_INPUT_FRAGMENTS 0x100000
67 #define VPX_CODEC_CAP_FRAME_THREADING 0x200000
70 #define VPX_CODEC_USE_POSTPROC 0x10000
71 #define VPX_CODEC_USE_ERROR_CONCEALMENT 0x20000
73 #define VPX_CODEC_USE_INPUT_FRAGMENTS 0x40000
76 #define VPX_CODEC_USE_FRAME_THREADING 0x80000
85  typedef struct vpx_codec_stream_info {
86  unsigned int sz;
87  unsigned int w;
88  unsigned int h;
89  unsigned int is_kf;
91 
92  /* REQUIRED FUNCTIONS
93  *
94  * The following functions are required to be implemented for all decoders.
95  * They represent the base case functionality expected of all decoders.
96  */
97 
98 
104  typedef struct vpx_codec_dec_cfg {
105  unsigned int threads;
106  unsigned int w;
107  unsigned int h;
138  vpx_codec_iface_t *iface,
139  vpx_codec_dec_cfg_t *cfg,
140  vpx_codec_flags_t flags,
141  int ver);
142 
147 #define vpx_codec_dec_init(ctx, iface, cfg, flags) \
148  vpx_codec_dec_init_ver(ctx, iface, cfg, flags, VPX_DECODER_ABI_VERSION)
149 
150 
169  const uint8_t *data,
170  unsigned int data_sz,
172 
173 
189 
190 
222  const uint8_t *data,
223  unsigned int data_sz,
224  void *user_priv,
225  long deadline);
226 
227 
244  vpx_codec_iter_t *iter);
245 
246 
261  typedef void (*vpx_codec_put_frame_cb_fn_t)(void *user_priv,
262  const vpx_image_t *img);
263 
264 
282  void *user_priv);
283 
284 
301  typedef void (*vpx_codec_put_slice_cb_fn_t)(void *user_priv,
302  const vpx_image_t *img,
303  const vpx_image_rect_t *valid,
304  const vpx_image_rect_t *update);
305 
306 
324  void *user_priv);
325 
326 
330 #ifdef __cplusplus
331 }
332 #endif
333 #endif
334