Linux bluetooth development
 help / color / mirror / Atom feed
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



  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