diff options
author | Frédéric Dalleau <frederic.dalleau@linux.intel.com> | 2013-04-08 15:24:13 +0200 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2013-04-15 11:04:57 +0300 |
commit | 09ff8b9b3146cb9597684402594d466960640db5 (patch) | |
tree | 1ca995a56bc8a44e5f977af98b785d5009cbe1fe | |
parent | 4686ca8af3e7a3fa3885be83e4d39c529db4f6d1 (diff) | |
download | sbc-09ff8b9b3146cb9597684402594d466960640db5.tar.gz |
sbc: Declare and implement sbc_init_msbc
-rw-r--r-- | sbc/sbc.c | 34 | ||||
-rw-r--r-- | sbc/sbc.h | 1 | ||||
-rw-r--r-- | sbc/sbc.sym | 1 |
3 files changed, 36 insertions, 0 deletions
@@ -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); @@ -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; |