add msbc supprot

This commit is contained in:
Milanka Ringwald 2016-06-29 17:10:13 +02:00
parent d7b6902fc1
commit 08b456cdc6
9 changed files with 26 additions and 2 deletions

View File

@ -24,6 +24,11 @@
$Revision: #1 $ $Revision: #1 $
***********************************************************************************/ ***********************************************************************************/
PRIVATE OI_STATUS OI_CODEC_SBC_Alloc(OI_CODEC_SBC_COMMON_CONTEXT *common,
OI_UINT32 *codecDataAligned,
OI_UINT32 codecDataBytes,
OI_UINT8 maxChannels,
OI_UINT8 pcmStride);
PRIVATE OI_STATUS OI_CODEC_SBC_Alloc(OI_CODEC_SBC_COMMON_CONTEXT *common, PRIVATE OI_STATUS OI_CODEC_SBC_Alloc(OI_CODEC_SBC_COMMON_CONTEXT *common,
OI_UINT32 *codecDataAligned, OI_UINT32 *codecDataAligned,
OI_UINT32 codecDataBytes, OI_UINT32 codecDataBytes,

View File

@ -95,7 +95,6 @@ static const BIT_ALLOC balloc[] = {
stereoBitAllocation /* SBC_JOINT_STEREO */ stereoBitAllocation /* SBC_JOINT_STEREO */
}; };
PRIVATE void OI_SBC_ComputeBitAllocation(OI_CODEC_SBC_COMMON_CONTEXT *common) PRIVATE void OI_SBC_ComputeBitAllocation(OI_CODEC_SBC_COMMON_CONTEXT *common)
{ {
OI_ASSERT(common->frameInfo.bitpool <= OI_SBC_MaxBitpool(&common->frameInfo)); OI_ASSERT(common->frameInfo.bitpool <= OI_SBC_MaxBitpool(&common->frameInfo));
@ -116,6 +115,7 @@ OI_UINT32 OI_CODEC_SBC_CalculateBitrate(OI_CODEC_SBC_FRAME_INFO *frame)
/* /*
* Return the current maximum bitneed and clear it. * Return the current maximum bitneed and clear it.
*/ */
#if 0
OI_UINT8 OI_CODEC_SBC_GetMaxBitneed(OI_CODEC_SBC_COMMON_CONTEXT *common) OI_UINT8 OI_CODEC_SBC_GetMaxBitneed(OI_CODEC_SBC_COMMON_CONTEXT *common)
{ {
OI_UINT8 max = common->maxBitneed; OI_UINT8 max = common->maxBitneed;
@ -123,7 +123,7 @@ OI_UINT8 OI_CODEC_SBC_GetMaxBitneed(OI_CODEC_SBC_COMMON_CONTEXT *common)
common->maxBitneed = 0; common->maxBitneed = 0;
return max; return max;
} }
#endif
/* /*
* Calculates the bitpool size for a given frame length * Calculates the bitpool size for a given frame length
*/ */

View File

@ -56,6 +56,7 @@ OI_UINT32 OI_SBC_MaxBitpool(OI_CODEC_SBC_FRAME_INFO *frame)
} }
PRIVATE OI_UINT16 internal_CalculateFramelen(OI_CODEC_SBC_FRAME_INFO *frame);
PRIVATE OI_UINT16 internal_CalculateFramelen(OI_CODEC_SBC_FRAME_INFO *frame) PRIVATE OI_UINT16 internal_CalculateFramelen(OI_CODEC_SBC_FRAME_INFO *frame)
{ {
OI_UINT16 nbits = frame->nrof_blocks * frame->bitpool; OI_UINT16 nbits = frame->nrof_blocks * frame->bitpool;
@ -72,6 +73,7 @@ PRIVATE OI_UINT16 internal_CalculateFramelen(OI_CODEC_SBC_FRAME_INFO *frame)
} }
PRIVATE OI_UINT32 internal_CalculateBitrate(OI_CODEC_SBC_FRAME_INFO *frame);
PRIVATE OI_UINT32 internal_CalculateBitrate(OI_CODEC_SBC_FRAME_INFO *frame) PRIVATE OI_UINT32 internal_CalculateBitrate(OI_CODEC_SBC_FRAME_INFO *frame)
{ {
OI_UINT blocksbands; OI_UINT blocksbands;

View File

@ -38,6 +38,9 @@
* set for enhanced operation using OI_CODEC_SBC_DecoderReset(), it will search * set for enhanced operation using OI_CODEC_SBC_DecoderReset(), it will search
* for both a standard and an enhanced syncword. * for both a standard and an enhanced syncword.
*/ */
PRIVATE OI_STATUS FindSyncword(OI_CODEC_SBC_DECODER_CONTEXT *context,
const OI_BYTE **frameData,
OI_UINT32 *frameBytes);
PRIVATE OI_STATUS FindSyncword(OI_CODEC_SBC_DECODER_CONTEXT *context, PRIVATE OI_STATUS FindSyncword(OI_CODEC_SBC_DECODER_CONTEXT *context,
const OI_BYTE **frameData, const OI_BYTE **frameData,
OI_UINT32 *frameBytes) OI_UINT32 *frameBytes)
@ -445,6 +448,7 @@ OI_UINT8 OI_CODEC_SBC_FrameCount(OI_BYTE *frameData,
#ifdef SPECIALIZE_READ_SAMPLES_JOINT #ifdef SPECIALIZE_READ_SAMPLES_JOINT
PRIVATE void OI_SBC_ReadSamplesJoint4(OI_CODEC_SBC_DECODER_CONTEXT *context, OI_BITSTREAM *global_bs);
PRIVATE void OI_SBC_ReadSamplesJoint4(OI_CODEC_SBC_DECODER_CONTEXT *context, OI_BITSTREAM *global_bs) PRIVATE void OI_SBC_ReadSamplesJoint4(OI_CODEC_SBC_DECODER_CONTEXT *context, OI_BITSTREAM *global_bs)
{ {
#define NROF_SUBBANDS 4 #define NROF_SUBBANDS 4
@ -452,6 +456,7 @@ PRIVATE void OI_SBC_ReadSamplesJoint4(OI_CODEC_SBC_DECODER_CONTEXT *context, OI_
#undef NROF_SUBBANDS #undef NROF_SUBBANDS
} }
PRIVATE void OI_SBC_ReadSamplesJoint8(OI_CODEC_SBC_DECODER_CONTEXT *context, OI_BITSTREAM *global_bs);
PRIVATE void OI_SBC_ReadSamplesJoint8(OI_CODEC_SBC_DECODER_CONTEXT *context, OI_BITSTREAM *global_bs) PRIVATE void OI_SBC_ReadSamplesJoint8(OI_CODEC_SBC_DECODER_CONTEXT *context, OI_BITSTREAM *global_bs)
{ {
#define NROF_SUBBANDS 8 #define NROF_SUBBANDS 8

View File

@ -180,6 +180,7 @@ INLINE OI_INT32 OI_SBC_Dequant(OI_UINT32 raw, OI_UINT scale_factor, OI_UINT bits
* the encoder is conformant) the result will fit a 24 bit fixed point signed * the encoder is conformant) the result will fit a 24 bit fixed point signed
* value.*/ * value.*/
INLINE OI_INT32 OI_SBC_Dequant_Unscaled(OI_UINT32 raw, OI_UINT scale_factor, OI_UINT bits);
INLINE OI_INT32 OI_SBC_Dequant_Unscaled(OI_UINT32 raw, OI_UINT scale_factor, OI_UINT bits) INLINE OI_INT32 OI_SBC_Dequant_Unscaled(OI_UINT32 raw, OI_UINT scale_factor, OI_UINT bits)
{ {
OI_UINT32 d; OI_UINT32 d;

View File

@ -108,6 +108,7 @@ const OI_UINT32 dequant_long_unscaled[17] = {
#endif #endif
#ifdef USE_WIDE_CRC #ifdef USE_WIDE_CRC
INLINE OI_CHAR crc_iterate(OI_UINT8 oldcrc, OI_UINT8 next);
INLINE OI_CHAR crc_iterate(OI_UINT8 oldcrc, OI_UINT8 next) INLINE OI_CHAR crc_iterate(OI_UINT8 oldcrc, OI_UINT8 next)
{ {
OI_UINT crc; OI_UINT crc;
@ -123,6 +124,7 @@ INLINE OI_CHAR crc_iterate(OI_UINT8 oldcrc, OI_UINT8 next)
return crc; return crc;
} }
INLINE OI_CHAR crc_iterate_top4(OI_UINT8 oldcrc, OI_UINT8 next);
INLINE OI_CHAR crc_iterate_top4(OI_UINT8 oldcrc, OI_UINT8 next) INLINE OI_CHAR crc_iterate_top4(OI_UINT8 oldcrc, OI_UINT8 next)
{ {
OI_UINT crc; OI_UINT crc;
@ -140,12 +142,14 @@ INLINE OI_CHAR crc_iterate_top4(OI_UINT8 oldcrc, OI_UINT8 next)
#else // USE_WIDE_CRC #else // USE_WIDE_CRC
INLINE OI_UINT8 crc_iterate_top4(OI_UINT8 oldcrc, OI_UINT8 next);
INLINE OI_UINT8 crc_iterate_top4(OI_UINT8 oldcrc, OI_UINT8 next) INLINE OI_UINT8 crc_iterate_top4(OI_UINT8 oldcrc, OI_UINT8 next)
{ {
return (oldcrc << 4) ^ crc8_narrow[(oldcrc^next) >> 4]; return (oldcrc << 4) ^ crc8_narrow[(oldcrc^next) >> 4];
} }
#ifdef USE_NIBBLEWISE_CRC #ifdef USE_NIBBLEWISE_CRC
INLINE OI_UINT8 crc_iterate(OI_UINT8 crc, OI_UINT8 next);
INLINE OI_UINT8 crc_iterate(OI_UINT8 crc, OI_UINT8 next) INLINE OI_UINT8 crc_iterate(OI_UINT8 crc, OI_UINT8 next)
{ {
crc = (crc << 4) ^ crc8_narrow[(crc^next) >> 4]; crc = (crc << 4) ^ crc8_narrow[(crc^next) >> 4];
@ -155,6 +159,7 @@ INLINE OI_UINT8 crc_iterate(OI_UINT8 crc, OI_UINT8 next)
} }
#else // USE_NIBBLEWISE_CRC #else // USE_NIBBLEWISE_CRC
INLINE OI_UINT8 crc_iterate(OI_UINT8 crc, OI_UINT8 next);
INLINE OI_UINT8 crc_iterate(OI_UINT8 crc, OI_UINT8 next) INLINE OI_UINT8 crc_iterate(OI_UINT8 crc, OI_UINT8 next)
{ {
return crc8_narrow[crc^next]; return crc8_narrow[crc^next];

View File

@ -39,6 +39,7 @@
#define MUL_16S_16S(_x, _y) ((_x) * (_y)) #define MUL_16S_16S(_x, _y) ((_x) * (_y))
PRIVATE void SynthWindow80_generated(OI_INT16 *pcm, SBC_BUFFER_T const * RESTRICT buffer, OI_UINT strideShift);
PRIVATE void SynthWindow80_generated(OI_INT16 *pcm, SBC_BUFFER_T const * RESTRICT buffer, OI_UINT strideShift) PRIVATE void SynthWindow80_generated(OI_INT16 *pcm, SBC_BUFFER_T const * RESTRICT buffer, OI_UINT strideShift)
{ {
OI_INT32 pcm_a, pcm_b; OI_INT32 pcm_a, pcm_b;

View File

@ -60,6 +60,7 @@
* @return A signed 32-bit value corresponding to the 32 most significant bits * @return A signed 32-bit value corresponding to the 32 most significant bits
* of the 64-bit product of u and v. * of the 64-bit product of u and v.
*/ */
INLINE OI_INT32 default_mul_32s_32s_hi(OI_INT32 u, OI_INT32 v);
INLINE OI_INT32 default_mul_32s_32s_hi(OI_INT32 u, OI_INT32 v) INLINE OI_INT32 default_mul_32s_32s_hi(OI_INT32 u, OI_INT32 v)
{ {
OI_UINT32 u0, v0; OI_UINT32 u0, v0;
@ -206,6 +207,7 @@ PRIVATE void float_dct2_8(float * RESTRICT out, OI_INT32 const *RESTRICT in)
* [ 0 0 0 0 0 0 1 2 ] * [ 0 0 0 0 0 0 1 2 ]
* *
*/ */
PRIVATE void dct2_8(SBC_BUFFER_T * RESTRICT out, OI_INT32 const *RESTRICT in);
PRIVATE void dct2_8(SBC_BUFFER_T * RESTRICT out, OI_INT32 const *RESTRICT in) PRIVATE void dct2_8(SBC_BUFFER_T * RESTRICT out, OI_INT32 const *RESTRICT in)
{ {
#define BUTTERFLY(x,y) x += y; y = x - (y<<1); #define BUTTERFLY(x,y) x += y; y = x - (y<<1);

View File

@ -213,6 +213,7 @@ const OI_INT32 dec_window_4[21] = {
* @return A signed 32-bit value corresponding to the 32 most significant bits * @return A signed 32-bit value corresponding to the 32 most significant bits
* of the 48-bit product of u and v. * of the 48-bit product of u and v.
*/ */
INLINE OI_INT32 default_mul_16s_32s_hi(OI_INT16 u, OI_INT32 v);
INLINE OI_INT32 default_mul_16s_32s_hi(OI_INT16 u, OI_INT32 v) INLINE OI_INT32 default_mul_16s_32s_hi(OI_INT16 u, OI_INT32 v)
{ {
OI_UINT16 v0; OI_UINT16 v0;
@ -255,6 +256,7 @@ typedef void (*SYNTH_FRAME)(OI_CODEC_SBC_DECODER_CONTEXT *context, OI_INT16 *pcm
#define SYNTH112 SynthWindow112_generated #define SYNTH112 SynthWindow112_generated
#endif #endif
PRIVATE void OI_SBC_SynthFrame_80(OI_CODEC_SBC_DECODER_CONTEXT *context, OI_INT16 *pcm, OI_UINT blkstart, OI_UINT blkcount);
PRIVATE void OI_SBC_SynthFrame_80(OI_CODEC_SBC_DECODER_CONTEXT *context, OI_INT16 *pcm, OI_UINT blkstart, OI_UINT blkcount) PRIVATE void OI_SBC_SynthFrame_80(OI_CODEC_SBC_DECODER_CONTEXT *context, OI_INT16 *pcm, OI_UINT blkstart, OI_UINT blkcount)
{ {
OI_UINT blk; OI_UINT blk;
@ -286,6 +288,7 @@ PRIVATE void OI_SBC_SynthFrame_80(OI_CODEC_SBC_DECODER_CONTEXT *context, OI_INT1
context->common.filterBufferOffset = offset; context->common.filterBufferOffset = offset;
} }
PRIVATE void OI_SBC_SynthFrame_4SB(OI_CODEC_SBC_DECODER_CONTEXT *context, OI_INT16 *pcm, OI_UINT blkstart, OI_UINT blkcount);
PRIVATE void OI_SBC_SynthFrame_4SB(OI_CODEC_SBC_DECODER_CONTEXT *context, OI_INT16 *pcm, OI_UINT blkstart, OI_UINT blkcount) PRIVATE void OI_SBC_SynthFrame_4SB(OI_CODEC_SBC_DECODER_CONTEXT *context, OI_INT16 *pcm, OI_UINT blkstart, OI_UINT blkcount)
{ {
OI_UINT blk; OI_UINT blk;