diff options
author | Juan Linietsky <reduzio@gmail.com> | 2016-05-03 22:32:38 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2016-05-03 22:32:38 -0300 |
commit | dd69aeceac3d1798d0869d8adfb44af883b5fb93 (patch) | |
tree | 717e9b909ada0661940f6f3d2bd5349c6424bbf1 /drivers/opus/opus.c | |
parent | 567cb691ec49844101247bb9dc34bc2722f6af4f (diff) | |
parent | b81d9e6d614a67fd58e2256e90055589205bfa30 (diff) |
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'drivers/opus/opus.c')
-rw-r--r-- | drivers/opus/opus.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/drivers/opus/opus.c b/drivers/opus/opus.c index 5af71b478d..762a9d7469 100644 --- a/drivers/opus/opus.c +++ b/drivers/opus/opus.c @@ -24,10 +24,7 @@ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#ifdef OPUS_ENABLED #include "opus/opus_config.h" -#endif #include "opus/opus.h" #include "opus/opus_private.h" @@ -166,6 +163,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], |