WebM 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_VPX_DECODER_H_
11 #define VPX_VPX_DECODER_H_
12 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
32 #include "./vpx_codec.h"
33 #include "./vpx_frame_buffer.h"
34 
43 #define VPX_DECODER_ABI_VERSION \
44  (3 + VPX_CODEC_ABI_VERSION)
54 #define VPX_CODEC_CAP_PUT_SLICE 0x10000
55 #define VPX_CODEC_CAP_PUT_FRAME 0x20000
56 #define VPX_CODEC_CAP_POSTPROC 0x40000
58 #define VPX_CODEC_CAP_ERROR_CONCEALMENT 0x80000
59 
60 #define VPX_CODEC_CAP_INPUT_FRAGMENTS 0x100000
61 
70 #define VPX_CODEC_CAP_FRAME_THREADING 0x200000
71 
72 #define VPX_CODEC_CAP_EXTERNAL_FRAME_BUFFER 0x400000
73 
74 #define VPX_CODEC_USE_POSTPROC 0x10000
76 #define VPX_CODEC_USE_ERROR_CONCEALMENT 0x20000
77 
79 #define VPX_CODEC_USE_INPUT_FRAGMENTS 0x40000
80 
81 #define VPX_CODEC_USE_FRAME_THREADING 0x80000
82 
89 typedef struct vpx_codec_stream_info {
90  unsigned int sz;
91  unsigned int w;
92  unsigned int h;
93  unsigned int is_kf;
95 
96 /* REQUIRED FUNCTIONS
97  *
98  * The following functions are required to be implemented for all decoders.
99  * They represent the base case functionality expected of all decoders.
100  */
101 
107 typedef struct vpx_codec_dec_cfg {
108  unsigned int threads;
109  unsigned int w;
110  unsigned int h;
136  vpx_codec_iface_t *iface,
137  const vpx_codec_dec_cfg_t *cfg,
138  vpx_codec_flags_t flags, int ver);
139 
144 #define vpx_codec_dec_init(ctx, iface, cfg, flags) \
145  vpx_codec_dec_init_ver(ctx, iface, cfg, flags, VPX_DECODER_ABI_VERSION)
146 
165  const uint8_t *data,
166  unsigned int data_sz,
168 
184 
215 vpx_codec_err_t vpx_codec_decode(vpx_codec_ctx_t *ctx, const uint8_t *data,
216  unsigned int data_sz, void *user_priv,
217  long deadline);
218 
236 
252 typedef void (*vpx_codec_put_frame_cb_fn_t)(void *user_priv,
253  const vpx_image_t *img);
254 
272  void *user_priv);
273 
291 typedef void (*vpx_codec_put_slice_cb_fn_t)(void *user_priv,
292  const vpx_image_t *img,
293  const vpx_image_rect_t *valid,
294  const vpx_image_rect_t *update);
295 
313  void *user_priv);
314 
357  vpx_release_frame_buffer_cb_fn_t cb_release, void *cb_priv);
358 
362 #ifdef __cplusplus
363 }
364 #endif
365 #endif // VPX_VPX_DECODER_H_
Image Descriptor.
Definition: vpx_image.h:88
void(* vpx_codec_put_slice_cb_fn_t)(void *user_priv, const vpx_image_t *img, const vpx_image_rect_t *valid, const vpx_image_rect_t *update)
put slice callback prototype
Definition: vpx_decoder.h:291
unsigned int threads
Definition: vpx_decoder.h:108
unsigned int sz
Definition: vpx_decoder.h:90
Stream properties.
Definition: vpx_decoder.h:89
unsigned int w
Definition: vpx_decoder.h:109
vpx_codec_err_t vpx_codec_register_put_frame_cb(vpx_codec_ctx_t *ctx, vpx_codec_put_frame_cb_fn_t cb, void *user_priv)
Register for notification of frame completion.
Describes the decoder external frame buffer interface.
vpx_codec_err_t vpx_codec_peek_stream_info(vpx_codec_iface_t *iface, const uint8_t *data, unsigned int data_sz, vpx_codec_stream_info_t *si)
Parse stream info from a buffer.
vpx_codec_err_t vpx_codec_register_put_slice_cb(vpx_codec_ctx_t *ctx, vpx_codec_put_slice_cb_fn_t cb, void *user_priv)
Register for notification of slice completion.
int(* vpx_get_frame_buffer_cb_fn_t)(void *priv, size_t min_size, vpx_codec_frame_buffer_t *fb)
get frame buffer callback prototype
Definition: vpx_frame_buffer.h:63
Representation of a rectangle on a surface.
Definition: vpx_image.h:135
unsigned int is_kf
Definition: vpx_decoder.h:93
unsigned int h
Definition: vpx_decoder.h:110
vpx_codec_err_t vpx_codec_decode(vpx_codec_ctx_t *ctx, const uint8_t *data, unsigned int data_sz, void *user_priv, long deadline)
Decode data.
const struct vpx_codec_iface vpx_codec_iface_t
Codec interface structure.
Definition: vpx_codec.h:174
long vpx_codec_flags_t
Initialization-time Feature Enabling.
Definition: vpx_codec.h:167
vpx_codec_err_t
Algorithm return codes.
Definition: vpx_codec.h:90
struct vpx_codec_stream_info vpx_codec_stream_info_t
Stream properties.
void(* vpx_codec_put_frame_cb_fn_t)(void *user_priv, const vpx_image_t *img)
put frame callback prototype
Definition: vpx_decoder.h:252
unsigned int w
Definition: vpx_decoder.h:91
vpx_codec_err_t vpx_codec_dec_init_ver(vpx_codec_ctx_t *ctx, vpx_codec_iface_t *iface, const vpx_codec_dec_cfg_t *cfg, vpx_codec_flags_t flags, int ver)
Initialize a decoder instance.
int(* vpx_release_frame_buffer_cb_fn_t)(void *priv, vpx_codec_frame_buffer_t *fb)
release frame buffer callback prototype
Definition: vpx_frame_buffer.h:76
vpx_codec_err_t vpx_codec_get_stream_info(vpx_codec_ctx_t *ctx, vpx_codec_stream_info_t *si)
Return information about the current stream.
Describes the codec algorithm interface to applications.
vpx_codec_err_t vpx_codec_set_frame_buffer_functions(vpx_codec_ctx_t *ctx, vpx_get_frame_buffer_cb_fn_t cb_get, vpx_release_frame_buffer_cb_fn_t cb_release, void *cb_priv)
Pass in external frame buffers for the decoder to use.
unsigned int h
Definition: vpx_decoder.h:92
Initialization Configurations.
Definition: vpx_decoder.h:107
const void * vpx_codec_iter_t
Iterator.
Definition: vpx_codec.h:187
vpx_image_t * vpx_codec_get_frame(vpx_codec_ctx_t *ctx, vpx_codec_iter_t *iter)
Decoded frames iterator.
struct vpx_codec_dec_cfg vpx_codec_dec_cfg_t
Initialization Configurations.
Codec context structure.
Definition: vpx_codec.h:197