00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00027 #ifdef __cplusplus
00028 extern "C" {
00029 #endif
00030
00031 #ifndef VPX_DECODER_H
00032 #define VPX_DECODER_H
00033 #include "vpx_codec.h"
00034
00043 #define VPX_DECODER_ABI_VERSION (2 + VPX_CODEC_ABI_VERSION)
00053 #define VPX_CODEC_CAP_PUT_SLICE 0x10000
00054 #define VPX_CODEC_CAP_PUT_FRAME 0x20000
00055 #define VPX_CODEC_CAP_POSTPROC 0x40000
00064 #define VPX_CODEC_USE_POSTPROC 0x10000
00072 typedef struct vpx_codec_stream_info
00073 {
00074 unsigned int sz;
00075 unsigned int w;
00076 unsigned int h;
00077 unsigned int is_kf;
00078 } vpx_codec_stream_info_t;
00079
00080
00081
00082
00083
00084
00085
00086
00092 typedef struct vpx_codec_dec_cfg
00093 {
00094 unsigned int threads;
00095 unsigned int w;
00096 unsigned int h;
00097 } vpx_codec_dec_cfg_t;
00122 vpx_codec_err_t vpx_codec_dec_init_ver(vpx_codec_ctx_t *ctx,
00123 vpx_codec_iface_t *iface,
00124 vpx_codec_dec_cfg_t *cfg,
00125 vpx_codec_flags_t flags,
00126 int ver);
00127
00132 #define vpx_codec_dec_init(ctx, iface, cfg, flags) \
00133 vpx_codec_dec_init_ver(ctx, iface, cfg, flags, VPX_DECODER_ABI_VERSION)
00134
00135
00153 vpx_codec_err_t vpx_codec_peek_stream_info(vpx_codec_iface_t *iface,
00154 const uint8_t *data,
00155 unsigned int data_sz,
00156 vpx_codec_stream_info_t *si);
00157
00158
00172 vpx_codec_err_t vpx_codec_get_stream_info(vpx_codec_ctx_t *ctx,
00173 vpx_codec_stream_info_t *si);
00174
00175
00199 vpx_codec_err_t vpx_codec_decode(vpx_codec_ctx_t *ctx,
00200 const uint8_t *data,
00201 unsigned int data_sz,
00202 void *user_priv,
00203 long deadline);
00204
00205
00221 vpx_image_t *vpx_codec_get_frame(vpx_codec_ctx_t *ctx,
00222 vpx_codec_iter_t *iter);
00223
00224
00239 typedef void (*vpx_codec_put_frame_cb_fn_t)(void *user_priv,
00240 const vpx_image_t *img);
00241
00242
00258 vpx_codec_err_t vpx_codec_register_put_frame_cb(vpx_codec_ctx_t *ctx,
00259 vpx_codec_put_frame_cb_fn_t cb,
00260 void *user_priv);
00261
00262
00279 typedef void (*vpx_codec_put_slice_cb_fn_t)(void *user_priv,
00280 const vpx_image_t *img,
00281 const vpx_image_rect_t *valid,
00282 const vpx_image_rect_t *update);
00283
00284
00300 vpx_codec_err_t vpx_codec_register_put_slice_cb(vpx_codec_ctx_t *ctx,
00301 vpx_codec_put_slice_cb_fn_t cb,
00302 void *user_priv);
00303
00304
00309 #endif
00310
00311 #ifdef __cplusplus
00312 }
00313 #endif
00314
00315 #if !defined(VPX_CODEC_DISABLE_COMPAT) || !VPX_CODEC_DISABLE_COMPAT
00316 #include "vpx_decoder_compat.h"
00317 #endif