summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrédéric Dalleau <frederic.dalleau@linux.intel.com>2013-04-08 15:24:13 +0200
committerJohan Hedberg <johan.hedberg@intel.com>2013-04-15 11:04:57 +0300
commit09ff8b9b3146cb9597684402594d466960640db5 (patch)
tree1ca995a56bc8a44e5f977af98b785d5009cbe1fe
parent4686ca8af3e7a3fa3885be83e4d39c529db4f6d1 (diff)
downloadsbc-09ff8b9b3146cb9597684402594d466960640db5.tar.gz
sbc: Declare and implement sbc_init_msbc
-rw-r--r--sbc/sbc.c34
-rw-r--r--sbc/sbc.h1
-rw-r--r--sbc/sbc.sym1
3 files changed, 36 insertions, 0 deletions
diff --git a/sbc/sbc.c b/sbc/sbc.c
index 5ba5eb3..cea2dd1 100644
--- a/sbc/sbc.c
+++ b/sbc/sbc.c
@@ -6,6 +6,7 @@
* Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
* Copyright (C) 2004-2005 Henryk Ploetz <henryk@ploetzli.ch>
* Copyright (C) 2005-2008 Brad Midgley <bmidgley@xmission.com>
+ * Copyright (C) 2012-2013 Intel Corporation
*
*
* This library is free software; you can redistribute it and/or
@@ -966,6 +967,39 @@ SBC_EXPORT int sbc_init(sbc_t *sbc, unsigned long flags)
return 0;
}
+SBC_EXPORT int sbc_init_msbc(sbc_t *sbc, unsigned long flags)
+{
+ struct sbc_priv *priv;
+
+ if (!sbc)
+ return -EIO;
+
+ memset(sbc, 0, sizeof(sbc_t));
+
+ sbc->priv_alloc_base = malloc(sizeof(struct sbc_priv) + SBC_ALIGN_MASK);
+ if (!sbc->priv_alloc_base)
+ return -ENOMEM;
+
+ sbc->priv = (void *) (((uintptr_t) sbc->priv_alloc_base +
+ SBC_ALIGN_MASK) & ~((uintptr_t) SBC_ALIGN_MASK));
+
+ memset(sbc->priv, 0, sizeof(struct sbc_priv));
+
+ priv = sbc->priv;
+ priv->msbc = true;
+
+ sbc_set_defaults(sbc, flags);
+
+ sbc->frequency = SBC_FREQ_16000;
+ sbc->blocks = MSBC_BLOCKS;
+ sbc->subbands = SBC_SB_8;
+ sbc->mode = SBC_MODE_MONO;
+ sbc->allocation = SBC_AM_LOUDNESS;
+ sbc->bitpool = 26;
+
+ return 0;
+}
+
SBC_EXPORT ssize_t sbc_parse(sbc_t *sbc, const void *input, size_t input_len)
{
return sbc_decode(sbc, input, input_len, NULL, 0, NULL);
diff --git a/sbc/sbc.h b/sbc/sbc.h
index bbd45da..5f8a1fc 100644
--- a/sbc/sbc.h
+++ b/sbc/sbc.h
@@ -83,6 +83,7 @@ typedef struct sbc_struct sbc_t;
int sbc_init(sbc_t *sbc, unsigned long flags);
int sbc_reinit(sbc_t *sbc, unsigned long flags);
+int sbc_init_msbc(sbc_t *sbc, unsigned long flags);
ssize_t sbc_parse(sbc_t *sbc, const void *input, size_t input_len);
diff --git a/sbc/sbc.sym b/sbc/sbc.sym
index 2cabcdd..3a47c12 100644
--- a/sbc/sbc.sym
+++ b/sbc/sbc.sym
@@ -1,6 +1,7 @@
SBC_1.0 {
global:
sbc_init;
+ sbc_init_msbc;
sbc_reinit;
sbc_finish;