summaryrefslogtreecommitdiff
path: root/drivers/opus/opus_private.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/opus/opus_private.h')
-rw-r--r--drivers/opus/opus_private.h19
1 files changed, 12 insertions, 7 deletions
diff --git a/drivers/opus/opus_private.h b/drivers/opus/opus_private.h
index d63ed4f051..129977ed11 100644
--- a/drivers/opus/opus_private.h
+++ b/drivers/opus/opus_private.h
@@ -33,6 +33,8 @@
#include "opus/opus.h"
#include "opus/celt/celt.h"
+#include <stddef.h> /* offsetof */
+
struct OpusRepacketizer {
unsigned char toc;
int nb_frames;
@@ -86,10 +88,6 @@ 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, float *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);
@@ -104,16 +102,23 @@ opus_int32 compute_frame_size(const void *analysis_pcm, int frame_size,
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);
+ const void *analysis_pcm, opus_int32 analysis_size, int c1, int c2,
+ int analysis_channels, downmix_func downmix, int float_api);
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,
opus_int32 *packet_offset, int soft_clip);
-/* Make sure everything's aligned to sizeof(void *) bytes */
+/* Make sure everything is properly aligned. */
static OPUS_INLINE int align(int i)
{
- return (i+(int)sizeof(void *)-1)&-(int)sizeof(void *);
+ struct foo {char c; union { void* p; opus_int32 i; opus_val32 v; } u;};
+
+ unsigned int alignment = offsetof(struct foo, u);
+
+ /* Optimizing compilers should optimize div and multiply into and
+ for all sensible alignment values. */
+ return ((i + alignment - 1) / alignment) * alignment;
}
int opus_packet_parse_impl(const unsigned char *data, opus_int32 len,