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_VPX_DECODER_H_
11#define VPX_VPX_VPX_DECODER_H_
12
20
28#ifdef __cplusplus
29 extern "C" {
30#endif
31
32#include "./vpx_codec.h" // IWYU pragma: export
33#include "./vpx_frame_buffer.h"
34
43#define VPX_DECODER_ABI_VERSION \
44 (3 + VPX_CODEC_ABI_VERSION)
45
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
60#define VPX_CODEC_CAP_INPUT_FRAGMENTS 0x100000
62#define VPX_CODEC_CAP_FRAME_THREADING 0x200000
64#define VPX_CODEC_CAP_EXTERNAL_FRAME_BUFFER 0x400000
65
73#define VPX_CODEC_USE_POSTPROC 0x10000
75#define VPX_CODEC_USE_ERROR_CONCEALMENT 0x20000
78#define VPX_CODEC_USE_INPUT_FRAGMENTS 0x40000
80#define VPX_CODEC_USE_FRAME_THREADING 0x80000
81
88 typedef struct vpx_codec_stream_info {
89 unsigned int sz;
90 unsigned int w;
91 unsigned int h;
92 unsigned int is_kf;
93} vpx_codec_stream_info_t;
94
95/* REQUIRED FUNCTIONS
96 *
97 * The following functions are required to be implemented for all decoders.
98 * They represent the base case functionality expected of all decoders.
99 */
100
106 typedef struct vpx_codec_dec_cfg {
107 unsigned int threads;
108 unsigned int w;
109 unsigned int h;
110} vpx_codec_dec_cfg_t;
111
134 vpx_codec_err_t vpx_codec_dec_init_ver(vpx_codec_ctx_t *ctx,
135 vpx_codec_iface_t *iface,
136 const vpx_codec_dec_cfg_t *cfg,
137 vpx_codec_flags_t flags, int ver);
138
143#define vpx_codec_dec_init(ctx, iface, cfg, flags) \
144 vpx_codec_dec_init_ver(ctx, iface, cfg, flags, VPX_DECODER_ABI_VERSION)
145
163 vpx_codec_err_t vpx_codec_peek_stream_info(vpx_codec_iface_t *iface,
164 const uint8_t *data,
165 unsigned int data_sz,
166 vpx_codec_stream_info_t *si);
167
181 vpx_codec_err_t vpx_codec_get_stream_info(vpx_codec_ctx_t *ctx,
182 vpx_codec_stream_info_t *si);
183
216 vpx_codec_err_t vpx_codec_decode(vpx_codec_ctx_t *ctx, const uint8_t *data,
217 unsigned int data_sz, void *user_priv,
218 long deadline);
219
236 vpx_image_t *vpx_codec_get_frame(vpx_codec_ctx_t *ctx, vpx_codec_iter_t *iter);
237
246
252 typedef void (*vpx_codec_put_frame_cb_fn_t)(void *user_priv,
253 const vpx_image_t *img);
254
271 vpx_codec_err_t vpx_codec_register_put_frame_cb(vpx_codec_ctx_t *ctx,
272 vpx_codec_put_frame_cb_fn_t cb,
273 void *user_priv);
274
276
285
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
312 vpx_codec_err_t vpx_codec_register_put_slice_cb(vpx_codec_ctx_t *ctx,
313 vpx_codec_put_slice_cb_fn_t cb,
314 void *user_priv);
315
317
329
357 vpx_codec_err_t vpx_codec_set_frame_buffer_functions(
358 vpx_codec_ctx_t *ctx, vpx_get_frame_buffer_cb_fn_t cb_get,
359 vpx_release_frame_buffer_cb_fn_t cb_release, void *cb_priv);
360
362
364#ifdef __cplusplus
365}
366#endif
367#endif // VPX_VPX_VPX_DECODER_H_
vpx_codec_set_frame_buffer_functions
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.
vpx_codec_register_put_frame_cb
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.
vpx_codec_put_frame_cb_fn_t
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
vpx_codec_put_slice_cb_fn_t
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
vpx_codec_register_put_slice_cb
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.
vpx_codec_flags_t
long vpx_codec_flags_t
Initialization-time Feature Enabling.
Definition vpx_codec.h:170
vpx_codec_ctx_t
struct vpx_codec_ctx vpx_codec_ctx_t
Codec context structure.
vpx_codec_iter_t
const void * vpx_codec_iter_t
Iterator.
Definition vpx_codec.h:190
vpx_codec_err_t
vpx_codec_err_t
Algorithm return codes.
Definition vpx_codec.h:93
vpx_codec_iface_t
const struct vpx_codec_iface vpx_codec_iface_t
Codec interface structure.
Definition vpx_codec.h:177
vpx_codec_decode
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.
vpx_codec_get_stream_info
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.
vpx_codec_dec_init_ver
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.
vpx_codec_dec_cfg_t
struct vpx_codec_dec_cfg vpx_codec_dec_cfg_t
Initialization Configurations.
vpx_codec_get_frame
vpx_image_t * vpx_codec_get_frame(vpx_codec_ctx_t *ctx, vpx_codec_iter_t *iter)
Decoded frames iterator.
vpx_codec_stream_info_t
struct vpx_codec_stream_info vpx_codec_stream_info_t
Stream properties.
vpx_codec_peek_stream_info
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_dec_cfg
Initialization Configurations.
Definition vpx_decoder.h:106
vpx_codec_dec_cfg::h
unsigned int h
Definition vpx_decoder.h:109
vpx_codec_dec_cfg::w
unsigned int w
Definition vpx_decoder.h:108
vpx_codec_dec_cfg::threads
unsigned int threads
Definition vpx_decoder.h:107
vpx_codec_stream_info
Stream properties.
Definition vpx_decoder.h:88
vpx_codec_stream_info::is_kf
unsigned int is_kf
Definition vpx_decoder.h:92
vpx_codec_stream_info::sz
unsigned int sz
Definition vpx_decoder.h:89
vpx_codec_stream_info::w
unsigned int w
Definition vpx_decoder.h:90
vpx_codec_stream_info::h
unsigned int h
Definition vpx_decoder.h:91
vpx_codec.h
Describes the codec algorithm interface to applications.
vpx_frame_buffer.h
Describes the decoder external frame buffer interface.
vpx_get_frame_buffer_cb_fn_t
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
vpx_release_frame_buffer_cb_fn_t
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_image_rect_t
struct vpx_image_rect vpx_image_rect_t
Representation of a rectangle on a surface.
vpx_image_t
struct vpx_image vpx_image_t
Image Descriptor.