From: Marcel Holtmann <marcel@holtmann.org>
To: "Frédéric Dalleau" <frederic.dalleau@linux.intel.com>
Cc: linux-bluetooth@vger.kernel.org
Subject: Re: [PATCH 04/11] Add msbc encoding and decoding flag
Date: Thu, 18 Oct 2012 09:47:00 -0700 [thread overview]
Message-ID: <1350578820.2026.4.camel@aeonflux> (raw)
In-Reply-To: <1350576911-14678-5-git-send-email-frederic.dalleau@linux.intel.com>
Hi Fred,
> sbc/sbc.c | 16 ++++++++++++++++
> sbc/sbc.h | 3 +++
> 2 files changed, 19 insertions(+)
>
> diff --git a/sbc/sbc.c b/sbc/sbc.c
> index 6fff132..c40aa15 100644
> --- a/sbc/sbc.c
> +++ b/sbc/sbc.c
> @@ -52,6 +52,9 @@
>
> #define SBC_SYNCWORD 0x9C
>
> +#define MSBC_SYNCWORD 0xAD
> +#define MSBC_BLOCKS 15
> +
> /* This structure contains an unpacked SBC frame.
> Yes, there is probably quite some unused space herein */
> struct sbc_frame {
> @@ -920,6 +923,7 @@ struct sbc_priv {
>
> static void sbc_set_defaults(sbc_t *sbc, unsigned long flags)
> {
> + sbc->flags = flags;
> sbc->frequency = SBC_FREQ_44100;
> sbc->mode = SBC_MODE_STEREO;
> sbc->subbands = SBC_SB_8;
> @@ -982,6 +986,8 @@ SBC_EXPORT ssize_t sbc_decode(sbc_t *sbc, const void *input, size_t input_len,
> sbc->mode = priv->frame.mode;
> sbc->subbands = priv->frame.subband_mode;
> sbc->blocks = priv->frame.block_mode;
> + if (sbc->flags & SBC_MSBC)
> + sbc->blocks = MSBC_BLOCKS;
Why are we doing this for every single call of sbc_decode.
And even we wanted to do that, why do we first assign it to
priv->frame.block_mode so we overwrite it one line later.
> sbc->allocation = priv->frame.allocation;
> sbc->bitpool = priv->frame.bitpool;
>
> @@ -1056,6 +1062,8 @@ SBC_EXPORT ssize_t sbc_encode(sbc_t *sbc, const void *input, size_t input_len,
> priv->frame.subbands = sbc->subbands ? 8 : 4;
> priv->frame.block_mode = sbc->blocks;
> priv->frame.blocks = 4 + (sbc->blocks * 4);
> + if (sbc->flags & SBC_MSBC)
> + priv->frame.blocks = MSBC_BLOCKS;
Same here.
> priv->frame.bitpool = sbc->bitpool;
> priv->frame.codesize = sbc_get_codesize(sbc);
> priv->frame.length = sbc_get_frame_length(sbc);
> @@ -1140,6 +1148,8 @@ SBC_EXPORT size_t sbc_get_frame_length(sbc_t *sbc)
>
> subbands = sbc->subbands ? 8 : 4;
> blocks = 4 + (sbc->blocks * 4);
> + if (sbc->flags & SBC_MSBC)
> + blocks = MSBC_BLOCKS;
And here again.
> channels = sbc->mode == SBC_MODE_MONO ? 1 : 2;
> joint = sbc->mode == SBC_MODE_JOINT_STEREO ? 1 : 0;
> bitpool = sbc->bitpool;
> @@ -1169,6 +1179,9 @@ SBC_EXPORT unsigned sbc_get_frame_duration(sbc_t *sbc)
> blocks = priv->frame.blocks;
> }
>
> + if (sbc->flags & SBC_MSBC)
> + blocks = MSBC_BLOCKS;
> +
> switch (sbc->frequency) {
> case SBC_FREQ_16000:
> frequency = 16000;
> @@ -1208,6 +1221,9 @@ SBC_EXPORT size_t sbc_get_codesize(sbc_t *sbc)
> channels = priv->frame.channels;
> }
>
> + if (sbc->flags & SBC_MSBC)
> + blocks = MSBC_BLOCKS;
> +
> return subbands * blocks * channels * 2;
> }
>
> diff --git a/sbc/sbc.h b/sbc/sbc.h
> index bbd45da..3511119 100644
> --- a/sbc/sbc.h
> +++ b/sbc/sbc.h
> @@ -64,6 +64,9 @@ extern "C" {
> #define SBC_LE 0x00
> #define SBC_BE 0x01
>
> +/* Additional features */
> +#define SBC_MSBC 0x01
> +
> struct sbc_struct {
> unsigned long flags;
>
I think you get the idea. Just corrected an already assigned value in
case of mSBC is a bad idea. It is either an if clause or we assign the
proper value once in the private structure.
Regards
Marcel
next prev parent reply other threads:[~2012-10-18 16:47 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-18 16:15 [PATCH 00/11] mSBC tests Frédéric Dalleau
2012-10-18 16:15 ` [PATCH 01/11] Pass encoder_state to process input functions Frédéric Dalleau
2012-10-18 16:50 ` Marcel Holtmann
2012-10-18 16:15 ` [PATCH 02/11] Add encoder_state parameter to analysis functions Frédéric Dalleau
2012-10-18 16:49 ` Marcel Holtmann
2012-10-18 16:15 ` [PATCH 03/11] Make increment variable Frédéric Dalleau
2012-10-18 16:48 ` Marcel Holtmann
2012-10-18 16:15 ` [PATCH 04/11] Add msbc encoding and decoding flag Frédéric Dalleau
2012-10-18 16:47 ` Marcel Holtmann [this message]
2012-10-18 16:15 ` [PATCH 05/11] Add simd primitive for 1b 8s analyse Frédéric Dalleau
2012-10-18 16:43 ` Marcel Holtmann
2012-10-18 16:15 ` [PATCH 06/11] Add support for mSBC frame header Frédéric Dalleau
2012-10-18 16:56 ` Marcel Holtmann
2012-10-18 16:15 ` [PATCH 07/11] Add mmx primitive for 1b 8s analyse Frédéric Dalleau
2012-10-18 16:15 ` [PATCH 08/11] update sbcdec for msbc Frédéric Dalleau
2012-10-18 16:15 ` [PATCH 09/11] update sbcenc " Frédéric Dalleau
2012-10-18 16:15 ` [PATCH 10/11] update sbcinfo " Frédéric Dalleau
2012-10-18 16:59 ` Marcel Holtmann
2012-10-18 16:15 ` [PATCH 11/11] Update copyrights Frédéric Dalleau
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1350578820.2026.4.camel@aeonflux \
--to=marcel@holtmann.org \
--cc=frederic.dalleau@linux.intel.com \
--cc=linux-bluetooth@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox