summaryrefslogtreecommitdiff
path: root/drivers/opus/opus.c
diff options
context:
space:
mode:
authorRémi Verschelde <remi@verschelde.fr>2016-05-03 19:14:24 +0200
committerRémi Verschelde <remi@verschelde.fr>2016-05-03 19:14:24 +0200
commitc90bc695447b5d74227ed7c0d0bc19b7141dc835 (patch)
tree808af09d82e51698b9b7ba18795ba3a210a1d8f0 /drivers/opus/opus.c
parent4e23ba5f37e21021c47e3aecf544afc9485e311b (diff)
parent7c59d819a7ebb936d51ca032e66a2489e4080d08 (diff)
Merge pull request #4532 from vnen/pr-update-opus-1.1.2
Update Opus driver to 1.1.2
Diffstat (limited to 'drivers/opus/opus.c')
-rw-r--r--drivers/opus/opus.c24
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],