aboutsummaryrefslogtreecommitdiff
path: root/src/opus.c
diff options
context:
space:
mode:
authorJean-Marc Valin <jmvalin@jmvalin.ca>2014-01-30 11:29:35 -0500
committerJean-Marc Valin <jmvalin@jmvalin.ca>2014-01-30 11:29:35 -0500
commitb347696a21ba26113e5a8d356347fdac1a02bced (patch)
tree4581e8f620f6a849611381ad4c2bb1f06e29c11d /src/opus.c
parentad7b28ff19f2074ddd171ddea07222db1414a5f0 (diff)
downloadlibopus-b347696a21ba26113e5a8d356347fdac1a02bced.tar.gz
Moves opus_packet_get_samples_per_frame() to opus.c
Diffstat (limited to 'src/opus.c')
-rw-r--r--src/opus.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/opus.c b/src/opus.c
index 30890b9c..e9ce93b3 100644
--- a/src/opus.c
+++ b/src/opus.c
@@ -166,6 +166,27 @@ static int parse_size(const unsigned char *data, opus_int32 len, opus_int16 *siz
}
}
+int opus_packet_get_samples_per_frame(const unsigned char *data,
+ opus_int32 Fs)
+{
+ int audiosize;
+ if (data[0]&0x80)
+ {
+ audiosize = ((data[0]>>3)&0x3);
+ audiosize = (Fs<<audiosize)/400;
+ } else if ((data[0]&0x60) == 0x60)
+ {
+ audiosize = (data[0]&0x08) ? Fs/50 : Fs/100;
+ } else {
+ audiosize = ((data[0]>>3)&0x3);
+ if (audiosize == 3)
+ audiosize = Fs*60/1000;
+ else
+ audiosize = (Fs<<audiosize)/100;
+ }
+ return audiosize;
+}
+
int opus_packet_parse_impl(const unsigned char *data, opus_int32 len,
int self_delimited, unsigned char *out_toc,
const unsigned char *frames[48], opus_int16 size[48],