diff options
author | Jean-Marc Valin <jmvalin@jmvalin.ca> | 2014-01-30 11:29:35 -0500 |
---|---|---|
committer | Jean-Marc Valin <jmvalin@jmvalin.ca> | 2014-01-30 11:29:35 -0500 |
commit | b347696a21ba26113e5a8d356347fdac1a02bced (patch) | |
tree | 4581e8f620f6a849611381ad4c2bb1f06e29c11d /src/opus.c | |
parent | ad7b28ff19f2074ddd171ddea07222db1414a5f0 (diff) | |
download | libopus-b347696a21ba26113e5a8d356347fdac1a02bced.tar.gz |
Moves opus_packet_get_samples_per_frame() to opus.c
Diffstat (limited to 'src/opus.c')
-rw-r--r-- | src/opus.c | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -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], |