Index: src/opus_private.h |
diff --git a/src/opus_private.h b/src/opus_private.h |
index 52482bc18cd0a82d2cea59aaf3307c6daa84cca7..0e739ebb0b0ed5691425b9a73a78805a930b3e73 100644 |
--- a/src/opus_private.h |
+++ b/src/opus_private.h |
@@ -31,15 +31,29 @@ |
#include "arch.h" |
#include "opus.h" |
+#include "celt.h" |
struct OpusRepacketizer { |
unsigned char toc; |
int nb_frames; |
const unsigned char *frames[48]; |
- short len[48]; |
+ opus_int16 len[48]; |
int framesize; |
}; |
+typedef struct ChannelLayout { |
+ int nb_channels; |
+ int nb_streams; |
+ int nb_coupled_streams; |
+ unsigned char mapping[256]; |
+} ChannelLayout; |
+ |
+int validate_layout(const ChannelLayout *layout); |
+int get_left_channel(const ChannelLayout *layout, int stream_id, int prev); |
+int get_right_channel(const ChannelLayout *layout, int stream_id, int prev); |
+int get_mono_channel(const ChannelLayout *layout, int stream_id, int prev); |
+ |
+ |
#define MODE_SILK_ONLY 1000 |
#define MODE_HYBRID 1001 |
@@ -68,16 +82,34 @@ struct OpusRepacketizer { |
#define OPUS_SET_FORCE_MODE_REQUEST 11002 |
#define OPUS_SET_FORCE_MODE(x) OPUS_SET_FORCE_MODE_REQUEST, __opus_check_int(x) |
+typedef void (*downmix_func)(const void *, opus_val32 *, int, int, int, int, int); |
+void downmix_float(const void *_x, opus_val32 *sub, int subframe, int offset, int c1, int c2, int C); |
+void downmix_int(const void *_x, opus_val32 *sub, int subframe, int offset, int c1, int c2, int C); |
+ |
+int optimize_framesize(const opus_val16 *x, int len, int C, opus_int32 Fs, |
+ int bitrate, opus_val16 tonality, opus_val32 *mem, int buffering, |
+ downmix_func downmix); |
int encode_size(int size, unsigned char *data); |
+opus_int32 frame_size_select(opus_int32 frame_size, int variable_duration, opus_int32 Fs); |
+ |
+opus_int32 compute_frame_size(const void *analysis_pcm, int frame_size, |
+ int variable_duration, int C, opus_int32 Fs, int bitrate_bps, |
+ int delay_compensation, downmix_func downmix, opus_val32 *subframe_mem); |
+ |
+opus_int32 opus_encode_native(OpusEncoder *st, const opus_val16 *pcm, int frame_size, |
+ unsigned char *data, opus_int32 out_data_bytes, int lsb_depth, |
+ const void *analysis_pcm, opus_int32 analysis_size, int c1, int c2, int analysis_channels, downmix_func downmix); |
+ |
int opus_decode_native(OpusDecoder *st, const unsigned char *data, opus_int32 len, |
- opus_val16 *pcm, int frame_size, int decode_fec, int self_delimited, int *packet_offset); |
+ opus_val16 *pcm, int frame_size, int decode_fec, int self_delimited, |
+ int *packet_offset, int soft_clip); |
/* Make sure everything's aligned to sizeof(void *) bytes */ |
static inline int align(int i) |
{ |
- return (i+sizeof(void *)-1)&-((int)sizeof(void *)); |
+ return (i+(int)sizeof(void *)-1)&-(int)sizeof(void *); |
} |
opus_int32 opus_repacketizer_out_range_impl(OpusRepacketizer *rp, int begin, int end, unsigned char *data, opus_int32 maxlen, int self_delimited); |