Add getter functions for the interface data symbols
Having these symbols be available as functions rather than data is occasionally more convenient. Implemented this way rather than a get-codec-by-id style to avoid creating a link-time dependency between the encoder and the decoder. Fixes issue #169 Change-Id: I319f281277033a5e7e3ee3b092b9a87cce2f463d
This commit is contained in:
parent
12651b3c2b
commit
fa7a55bb04
@ -1 +1,2 @@
|
||||
data vpx_codec_vp8_dx_algo
|
||||
text vpx_codec_vp8_dx
|
||||
|
@ -1 +1,2 @@
|
||||
data vpx_codec_vp8_cx_algo
|
||||
text vpx_codec_vp8_cx
|
||||
|
@ -1079,7 +1079,7 @@ static vpx_codec_enc_cfg_map_t vp8e_usage_cfg_map[] =
|
||||
#ifndef VERSION_STRING
|
||||
#define VERSION_STRING
|
||||
#endif
|
||||
vpx_codec_iface_t vpx_codec_vp8_cx_algo =
|
||||
CODEC_INTERFACE(vpx_codec_vp8_cx) =
|
||||
{
|
||||
"WebM Project VP8 Encoder" VERSION_STRING,
|
||||
VPX_CODEC_INTERNAL_ABI_VERSION,
|
||||
|
@ -653,7 +653,7 @@ vpx_codec_ctrl_fn_map_t vp8_ctf_maps[] =
|
||||
#ifndef VERSION_STRING
|
||||
#define VERSION_STRING
|
||||
#endif
|
||||
vpx_codec_iface_t vpx_codec_vp8_dx_algo =
|
||||
CODEC_INTERFACE(vpx_codec_vp8_dx) =
|
||||
{
|
||||
"WebM Project VP8 Decoder" VERSION_STRING,
|
||||
VPX_CODEC_INTERNAL_ABI_VERSION,
|
||||
|
@ -389,6 +389,20 @@ struct vpx_codec_priv
|
||||
#define RECAST(id, x) id##__convert(x)
|
||||
|
||||
|
||||
/* CODEC_INTERFACE convenience macro
|
||||
*
|
||||
* By convention, each codec interface is a struct with extern linkage, where
|
||||
* the symbol is suffixed with _algo. A getter function is also defined to
|
||||
* return a pointer to the struct, since in some cases it's easier to work
|
||||
* with text symbols than data symbols (see issue #169). This function has
|
||||
* the same name as the struct, less the _algo suffix. The CODEC_INTERFACE
|
||||
* macro is provided to define this getter function automatically.
|
||||
*/
|
||||
#define CODEC_INTERFACE(id)\
|
||||
vpx_codec_iface_t* id(void) { return &id##_algo; }\
|
||||
vpx_codec_iface_t id##_algo
|
||||
|
||||
|
||||
/* Internal Utility Functions
|
||||
*
|
||||
* The following functions are indended to be used inside algorithms as
|
||||
|
@ -30,6 +30,7 @@
|
||||
* be found in AVI files.
|
||||
*/
|
||||
extern vpx_codec_iface_t vpx_codec_vp8_cx_algo;
|
||||
extern vpx_codec_iface_t* vpx_codec_vp8_cx(void);
|
||||
|
||||
|
||||
/*
|
||||
|
@ -30,6 +30,7 @@
|
||||
* be found in AVI files and other non-Flash uses.
|
||||
*/
|
||||
extern vpx_codec_iface_t vpx_codec_vp8_dx_algo;
|
||||
extern vpx_codec_iface_t* vpx_codec_vp8_dx(void);
|
||||
|
||||
/* Include controls common to both the encoder and decoder */
|
||||
#include "vp8.h"
|
||||
|
Loading…
Reference in New Issue
Block a user