29 #ifndef OPUS_PRIVATE_H
30 #define OPUS_PRIVATE_H
38 struct OpusRepacketizer {
41 const unsigned char *frames[48];
46 typedef struct ChannelLayout {
49 int nb_coupled_streams;
50 unsigned char mapping[256];
53 int validate_layout(
const ChannelLayout *layout);
54 int get_left_channel(
const ChannelLayout *layout,
int stream_id,
int prev);
55 int get_right_channel(
const ChannelLayout *layout,
int stream_id,
int prev);
56 int get_mono_channel(
const ChannelLayout *layout,
int stream_id,
int prev);
60 #define MODE_SILK_ONLY 1000
61 #define MODE_HYBRID 1001
62 #define MODE_CELT_ONLY 1002
64 #define OPUS_SET_VOICE_RATIO_REQUEST 11018
65 #define OPUS_GET_VOICE_RATIO_REQUEST 11019
76 #define OPUS_SET_VOICE_RATIO(x) OPUS_SET_VOICE_RATIO_REQUEST, __opus_check_int(x)
81 #define OPUS_GET_VOICE_RATIO(x) OPUS_GET_VOICE_RATIO_REQUEST, __opus_check_int_ptr(x)
84 #define OPUS_SET_FORCE_MODE_REQUEST 11002
85 #define OPUS_SET_FORCE_MODE(x) OPUS_SET_FORCE_MODE_REQUEST, __opus_check_int(x)
87 typedef void (*downmix_func)(
const void *, opus_val32 *, int, int, int, int, int);
88 void downmix_float(
const void *_x, opus_val32 *sub,
int subframe,
int offset,
int c1,
int c2,
int C);
89 void downmix_int(
const void *_x, opus_val32 *sub,
int subframe,
int offset,
int c1,
int c2,
int C);
91 int encode_size(
int size,
unsigned char *data);
93 opus_int32 frame_size_select(opus_int32 frame_size,
int variable_duration, opus_int32 Fs);
95 opus_int32 opus_encode_native(
OpusEncoder *st,
const opus_val16 *pcm,
int frame_size,
96 unsigned char *data, opus_int32 out_data_bytes,
int lsb_depth,
97 const void *analysis_pcm, opus_int32 analysis_size,
int c1,
int c2,
98 int analysis_channels, downmix_func downmix,
int float_api);
100 int opus_decode_native(
OpusDecoder *st,
const unsigned char *data, opus_int32 len,
101 opus_val16 *pcm,
int frame_size,
int decode_fec,
int self_delimited,
102 opus_int32 *packet_offset,
int soft_clip);
105 static OPUS_INLINE
int align(
int i)
107 struct foo {
char c;
union {
void* p; opus_int32 i; opus_val32 v; } u;};
109 unsigned int alignment = offsetof(
struct foo, u);
113 return ((i + alignment - 1) / alignment) * alignment;
116 int opus_packet_parse_impl(
const unsigned char *data, opus_int32 len,
117 int self_delimited,
unsigned char *out_toc,
118 const unsigned char *frames[48], opus_int16 size[48],
119 int *payload_offset, opus_int32 *packet_offset);
121 opus_int32 opus_repacketizer_out_range_impl(OpusRepacketizer *rp,
int begin,
int end,
122 unsigned char *data, opus_int32 maxlen,
int self_delimited,
int pad);
124 int pad_frame(
unsigned char *data, opus_int32 len, opus_int32 new_len);