14#include "ws_symbol_export.h"
15#include "ws_attributes.h"
54WS_DLL_PUBLIC
void codecs_init(
const char* app_env_var_prefix);
145 const void *inputBytes,
size_t inputBytesSize,
146 void *outputSamples,
size_t *outputSamplesSize);
188WS_DLL_PUBLIC codec_handle_t
find_codec(
const char *name);
249 const void *inputBytes,
size_t inputBytesSize,
250 void *outputSamples,
size_t *outputSamplesSize);
WS_DLL_PUBLIC size_t codec_decode(codec_handle_t codec, codec_context_t *context, const void *inputBytes, size_t inputBytesSize, void *outputSamples, size_t *outputSamplesSize)
Decode input bytes into audio samples.
Definition codecs.c:177
void(* codec_release_fn)(codec_context_t *context)
Destroy context of codec.
Definition codecs.h:104
WS_DLL_PUBLIC bool register_codec(const char *name, codec_init_fn init_fn, codec_release_fn release_fn, codec_get_channels_fn channels_fn, codec_get_frequency_fn frequency_fn, codec_decode_fn decode_fn)
Register a new codec implementation.
Definition codecs.c:104
WS_DLL_PUBLIC void codecs_cleanup(void)
Clean up all registered codecs.
Definition codecs.c:64
WS_DLL_PUBLIC unsigned codec_get_channels(codec_handle_t codec, codec_context_t *context)
Query the number of audio channels for a codec.
Definition codecs.c:165
WS_DLL_PUBLIC unsigned codec_get_frequency(codec_handle_t codec, codec_context_t *context)
Query the sample rate for a codec.
Definition codecs.c:171
WS_DLL_PUBLIC codec_handle_t find_codec(const char *name)
Find a registered codec by name.
Definition codecs.c:92
struct _codec_context_t codec_context_t
Context structure for audio codec configuration and state.
size_t(* codec_decode_fn)(codec_context_t *context, const void *inputBytes, size_t inputBytesSize, void *outputSamples, size_t *outputSamplesSize)
Decode one frame of payload.
Definition codecs.h:144
WS_DLL_PUBLIC void codecs_init(const char *app_env_var_prefix)
Initialize all built-in and plugin-based codecs.
unsigned(* codec_get_frequency_fn)(codec_context_t *context)
Get frequency/rate provided by the codec.
Definition codecs.h:120
WS_DLL_PUBLIC void codecs_register_plugin(const codecs_plugin *plug)
Register a codec plugin with the system.
void *(* codec_init_fn)(codec_context_t *context)
Initialize context of codec. Context can contain any information required by codec to pass between ca...
Definition codecs.h:97
unsigned(* codec_get_channels_fn)(codec_context_t *context)
Get count of channels provided by the codec.
Definition codecs.h:112
WS_DLL_PUBLIC void * codec_init(codec_handle_t codec, codec_context_t *context)
Initialize codec-specific state.
Definition codecs.c:153
WS_DLL_PUBLIC bool deregister_codec(const char *name)
Deregister a previously registered codec.
Definition codecs.c:141
WS_DLL_PUBLIC void codec_release(codec_handle_t codec, codec_context_t *context)
Release codec-specific resources.
Definition codecs.c:159
struct _wmem_map_t wmem_map_t
Opaque type representing a wmem-managed hash map.
Definition wmem_map.h:46
Context structure for audio codec configuration and state.
Definition codecs.h:75
unsigned channels
Definition codecs.h:77
unsigned sample_rate
Definition codecs.h:76
wmem_map_t * fmtp_map
Definition codecs.h:78
void * priv
Definition codecs.h:79
Plugin descriptor for a codec module, providing the registration entry point.
Definition codecs.h:28
void(* register_codec_module)(void)
Definition codecs.h:29