diff --git a/opus_headers.txt b/opus_headers.txt index 3c315a05..2b03c0d7 100644 --- a/opus_headers.txt +++ b/opus_headers.txt @@ -1,4 +1,2 @@ OPUS_HEAD = \ -src/opus_decoder.h \ -src/opus_encoder.h \ src/opus.h diff --git a/src/opus_decoder.c b/src/opus_decoder.c index 1c77555d..dea50e29 100644 --- a/src/opus_decoder.c +++ b/src/opus_decoder.c @@ -34,7 +34,7 @@ #include #include #include "celt.h" -#include "opus_decoder.h" +#include "opus.h" #include "entdec.h" #include "modes.h" #include "silk_API.h" @@ -47,6 +47,29 @@ #define celt_decode_native celt_decode_float #endif +struct OpusDecoder { + int celt_dec_offset; + int silk_dec_offset; + int channels; + int stream_channels; + + int bandwidth; + /* Sampling rate (at the API level) */ + int Fs; + int mode; + int prev_mode; + int frame_size; + int prev_redundancy; + + int rangeFinal; +}; + +#ifdef FIXED_POINT +static inline opus_int16 SAT16(opus_int32 x) { + return x > 32767 ? 32767 : x < -32768 ? -32768 : (opus_int16)x; +}; +#endif + /* Make sure everything's aligned to 4 bytes (this may need to be increased on really weird architectures) */ static inline int align(int i) @@ -161,6 +184,7 @@ static int opus_decode_frame(OpusDecoder *st, const unsigned char *data, opus_int32 silk_frame_size; VARDECL(opus_int16, pcm_silk); VARDECL(opus_val16, pcm_transition); + VARDECL(opus_val16, redundant_audio); int audiosize; int mode; diff --git a/src/opus_decoder.h b/src/opus_decoder.h deleted file mode 100644 index d91e781d..00000000 --- a/src/opus_decoder.h +++ /dev/null @@ -1,56 +0,0 @@ -/* Copyright (c) 2010 Xiph.Org Foundation - Written by Jean-Marc Valin */ -/* - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifndef OPUS_DECODER_H -#define OPUS_DECODER_H - -#include "celt.h" -#include "opus.h" - -struct OpusDecoder { - int celt_dec_offset; - int silk_dec_offset; - int channels; - int stream_channels; - - int bandwidth; - /* Sampling rate (at the API level) */ - int Fs; - int mode; - int prev_mode; - int frame_size; - int prev_redundancy; - - int rangeFinal; -}; - -static inline opus_int16 SAT16(opus_int32 x) { - return x > 32767 ? 32767 : x < -32768 ? -32768 : (opus_int16)x; -}; - -#endif /* OPUS_DECODER_H */ - diff --git a/src/opus_encoder.c b/src/opus_encoder.c index 6cd9d262..0d4d78bf 100644 --- a/src/opus_encoder.c +++ b/src/opus_encoder.c @@ -34,12 +34,13 @@ #include #include #include "celt.h" -#include "opus_encoder.h" #include "entenc.h" #include "modes.h" #include "silk_API.h" #include "stack_alloc.h" #include "float_cast.h" +#include "opus.h" +#include "arch.h" #ifdef FIXED_POINT #define celt_encode_native celt_encode @@ -47,6 +48,38 @@ #define celt_encode_native celt_encode_float #endif +#define MAX_ENCODER_BUFFER 480 + +struct OpusEncoder { + int celt_enc_offset; + int silk_enc_offset; + silk_EncControlStruct silk_mode; + int hybrid_stereo_width_Q14; + int channels; + int stream_channels; + int force_mono; + + int mode; + int application; + int prev_mode; + int signal_type; + int bandwidth; + int user_bandwidth; + int voice_ratio; + /* Sampling rate (at the API level) */ + int Fs; + int use_vbr; + int vbr_constraint; + int bitrate_bps; + int user_bitrate_bps; + int encoder_buffer; + int delay_compensation; + int first; + opus_val16 delay_buffer[MAX_ENCODER_BUFFER*2]; + + int rangeFinal; +}; + /* Transition tables for the voice and audio modes. First column is the middle (memoriless) threshold. The second column is the hysteresis (difference with the middle) */ diff --git a/src/opus_encoder.h b/src/opus_encoder.h deleted file mode 100644 index 6769dc65..00000000 --- a/src/opus_encoder.h +++ /dev/null @@ -1,69 +0,0 @@ -/* Copyright (c) 2010 Xiph.Org Foundation - Written by Jean-Marc Valin */ -/* - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifndef OPUS_ENCODER_H -#define OPUS_ENCODER_H - -#include "celt.h" -#include "opus.h" -#include "silk_API.h" -#include "arch.h" - -#define MAX_ENCODER_BUFFER 480 - -struct OpusEncoder { - int celt_enc_offset; - int silk_enc_offset; - silk_EncControlStruct silk_mode; - int hybrid_stereo_width_Q14; - int channels; - int stream_channels; - int force_mono; - - int mode; - int application; - int prev_mode; - int signal_type; - int bandwidth; - int user_bandwidth; - int voice_ratio; - /* Sampling rate (at the API level) */ - int Fs; - int use_vbr; - int vbr_constraint; - int bitrate_bps; - int user_bitrate_bps; - int encoder_buffer; - int delay_compensation; - int first; - opus_val16 delay_buffer[MAX_ENCODER_BUFFER*2]; - - int rangeFinal; -}; - - -#endif /* OPUS_ENCODER_H */