Support for Ambisonics.

Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
This commit is contained in:
Andrew Allen 2018-03-19 14:55:24 -07:00 committed by Jean-Marc Valin
parent a4b5282f94
commit 9b092dd388
No known key found for this signature in database
GPG key ID: 5E5DD9A36F9189C8
3 changed files with 193 additions and 0 deletions

View file

@ -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)))

View file

@ -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 */

View file

@ -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 */