mirror of
https://github.com/xiph/opus.git
synced 2025-05-28 06:09:15 +00:00
Support for Ambisonics.
Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
This commit is contained in:
parent
a4b5282f94
commit
9b092dd388
3 changed files with 193 additions and 0 deletions
|
@ -169,6 +169,9 @@ extern "C" {
|
|||
#define OPUS_SET_PHASE_INVERSION_DISABLED_REQUEST 4046
|
||||
#define OPUS_GET_PHASE_INVERSION_DISABLED_REQUEST 4047
|
||||
|
||||
/** Defines for the presence of extended APIs. */
|
||||
#define OPUS_HAVE_OPUS_PROJECTION_H
|
||||
|
||||
/* Macros to trigger compilation errors when the wrong types are provided to a CTL */
|
||||
#define __opus_check_int(x) (((void)((x) == (opus_int32)0)), (opus_int32)(x))
|
||||
#define __opus_check_int_ptr(ptr) ((ptr) + ((ptr) - (opus_int32*)(ptr)))
|
||||
|
|
|
@ -254,4 +254,105 @@ void opus_projection_decoder_destroy(OpusProjectionDecoder *st)
|
|||
opus_free(st);
|
||||
}
|
||||
|
||||
#else /* ENABLE_EXPERIMENTAL_AMBISONICS */
|
||||
|
||||
opus_int32 opus_projection_decoder_get_size(
|
||||
int channels,
|
||||
int streams,
|
||||
int coupled_streams)
|
||||
{
|
||||
(void)channels;
|
||||
(void)streams;
|
||||
(void)coupled_streams;
|
||||
return OPUS_UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
OpusProjectionDecoder *opus_projection_decoder_create(
|
||||
opus_int32 Fs,
|
||||
int channels,
|
||||
int streams,
|
||||
int coupled_streams,
|
||||
unsigned char *demixing_matrix,
|
||||
opus_int32 demixing_matrix_size,
|
||||
int *error)
|
||||
{
|
||||
(void)Fs;
|
||||
(void)channels;
|
||||
(void)streams;
|
||||
(void)coupled_streams;
|
||||
(void)demixing_matrix;
|
||||
(void)demixing_matrix_size;
|
||||
if (error) *error = OPUS_UNIMPLEMENTED;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int opus_projection_decoder_init(
|
||||
OpusProjectionDecoder *st,
|
||||
opus_int32 Fs,
|
||||
int channels,
|
||||
int streams,
|
||||
int coupled_streams,
|
||||
unsigned char *demixing_matrix,
|
||||
opus_int32 demixing_matrix_size)
|
||||
{
|
||||
(void)st;
|
||||
(void)Fs;
|
||||
(void)channels;
|
||||
(void)streams;
|
||||
(void)coupled_streams;
|
||||
(void)demixing_matrix;
|
||||
(void)demixing_matrix_size;
|
||||
return OPUS_UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
int opus_projection_decode(
|
||||
OpusProjectionDecoder *st,
|
||||
const unsigned char *data,
|
||||
opus_int32 len,
|
||||
opus_int16 *pcm,
|
||||
int frame_size,
|
||||
int decode_fec)
|
||||
{
|
||||
(void)st;
|
||||
(void)data;
|
||||
(void)len;
|
||||
(void)pcm;
|
||||
(void)frame_size;
|
||||
(void)decode_fec;
|
||||
return OPUS_UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
int opus_projection_decode_float(
|
||||
OpusProjectionDecoder *st,
|
||||
const unsigned char *data,
|
||||
opus_int32 len,
|
||||
float *pcm,
|
||||
int frame_size,
|
||||
int decode_fec)
|
||||
{
|
||||
(void)st;
|
||||
(void)data;
|
||||
(void)len;
|
||||
(void)pcm;
|
||||
(void)frame_size;
|
||||
(void)decode_fec;
|
||||
return OPUS_UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
int opus_projection_decoder_ctl(
|
||||
OpusProjectionDecoder *st,
|
||||
int request,
|
||||
...)
|
||||
{
|
||||
(void)st;
|
||||
(void)request;
|
||||
return OPUS_UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
void opus_projection_decoder_destroy(
|
||||
OpusProjectionDecoder *st)
|
||||
{
|
||||
(void)st;
|
||||
}
|
||||
|
||||
#endif /* ENABLE_EXPERIMENTAL_AMBISONICS */
|
||||
|
|
|
@ -459,4 +459,93 @@ bad_arg:
|
|||
return OPUS_BAD_ARG;
|
||||
}
|
||||
|
||||
#else /* ENABLE_EXPERIMENTAL_AMBISONICS */
|
||||
|
||||
opus_int32 opus_projection_ambisonics_encoder_get_size(
|
||||
int channels, int mapping_family)
|
||||
{
|
||||
(void)channels;
|
||||
(void)mapping_family;
|
||||
return OPUS_UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
OpusProjectionEncoder *opus_projection_ambisonics_encoder_create(
|
||||
opus_int32 Fs, int channels, int mapping_family, int *streams,
|
||||
int *coupled_streams, int application, int *error)
|
||||
{
|
||||
(void)Fs;
|
||||
(void)channels;
|
||||
(void)mapping_family;
|
||||
(void)streams;
|
||||
(void)coupled_streams;
|
||||
(void)application;
|
||||
if (error) *error = OPUS_UNIMPLEMENTED;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int opus_projection_ambisonics_encoder_init(
|
||||
OpusProjectionEncoder *st,
|
||||
opus_int32 Fs,
|
||||
int channels,
|
||||
int mapping_family,
|
||||
int *streams,
|
||||
int *coupled_streams,
|
||||
int application)
|
||||
{
|
||||
(void)st;
|
||||
(void)Fs;
|
||||
(void)channels;
|
||||
(void)mapping_family;
|
||||
(void)streams;
|
||||
(void)coupled_streams;
|
||||
(void)application;
|
||||
return OPUS_UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
int opus_projection_encode(
|
||||
OpusProjectionEncoder *st,
|
||||
const opus_int16 *pcm,
|
||||
int frame_size,
|
||||
unsigned char *data,
|
||||
opus_int32 max_data_bytes)
|
||||
{
|
||||
(void)st;
|
||||
(void)pcm;
|
||||
(void)frame_size;
|
||||
(void)data;
|
||||
(void)max_data_bytes;
|
||||
return OPUS_UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
int opus_projection_encode_float(
|
||||
OpusProjectionEncoder *st,
|
||||
const float *pcm,
|
||||
int frame_size,
|
||||
unsigned char *data,
|
||||
opus_int32 max_data_bytes)
|
||||
{
|
||||
(void)st;
|
||||
(void)pcm;
|
||||
(void)frame_size;
|
||||
(void)data;
|
||||
(void)max_data_bytes;
|
||||
return OPUS_UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
void opus_projection_encoder_destroy(
|
||||
OpusProjectionEncoder *st)
|
||||
{
|
||||
(void)st;
|
||||
}
|
||||
|
||||
int opus_projection_encoder_ctl(
|
||||
OpusProjectionEncoder *st,
|
||||
int request,
|
||||
...)
|
||||
{
|
||||
(void)st;
|
||||
(void)request;
|
||||
return OPUS_UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
#endif /* ENABLE_EXPERIMENTAL_AMBISONICS */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue