84 lines
No EOL
3.2 KiB
C
84 lines
No EOL
3.2 KiB
C
/***************************************************************************
|
|
*
|
|
* Copyright 2015-2019 BES.
|
|
* All rights reserved. All unpublished rights reserved.
|
|
*
|
|
* No part of this work may be used or reproduced in any form or by any
|
|
* means, or stored in a database or retrieval system, without prior written
|
|
* permission of BES.
|
|
*
|
|
* Use of this work is governed by a license granted by BES.
|
|
* This work contains confidential and proprietary information of
|
|
* BES. which is protected by copyright, trade secret,
|
|
* trademark and other intellectual property rights.
|
|
*
|
|
****************************************************************************/
|
|
#ifndef __CODEC_LHDC_H__
|
|
#define __CODEC_LHDC_H__
|
|
|
|
#define A2DP_LHDC_OCTET_NUMBER (9)
|
|
#define A2DP_LHDC_VENDOR_ID 0x0000053a
|
|
#if defined(A2DP_LHDC_V3)
|
|
#define A2DP_LHDC_CODEC_ID 0x4C33
|
|
#else
|
|
#define A2DP_LHDC_CODEC_ID 0x4C32
|
|
#endif
|
|
//To indicate Sampling Rate.
|
|
#define A2DP_LHDC_SR_96000 0x01
|
|
#define A2DP_LHDC_SR_88200 0x02
|
|
#define A2DP_LHDC_SR_48000 0x04
|
|
#define A2DP_LHDC_SR_44100 0x08
|
|
#define A2DP_LHDC_SR_DATA(X) (X & (A2DP_LHDC_SR_96000 | A2DP_LHDC_SR_88200 | A2DP_LHDC_SR_48000 | A2DP_LHDC_SR_44100))
|
|
|
|
//To indicate bits per sample.
|
|
#define A2DP_LHDC_FMT_24 0x10
|
|
#define A2DP_LHDC_FMT_16 0x20
|
|
#define A2DP_LHDC_FMT_DATA(X) (X & (A2DP_LHDC_FMT_24 | A2DP_LHDC_FMT_16))
|
|
|
|
#if defined(A2DP_LHDC_V3)
|
|
#define A2DP_LHDC_VERSION_NUM 0x01
|
|
#else
|
|
#define A2DP_LHDC_VERSION_NUM 0x00
|
|
#endif
|
|
#define A2DP_LHDC_MAX_SR_900 0x00
|
|
#define A2DP_LHDC_MAX_SR_500 0x10
|
|
#define A2DP_LHDC_MAX_SR_400 0x20
|
|
#define A2DP_LHDC_MAX_SR_RESERVED 0x30
|
|
#define A2DP_LHDC_LLC_ENABLE 0x40
|
|
|
|
#define A2DP_LHDC_COF_CSC_DISABLE 0x01
|
|
#define A2DP_LHDC_COF_CSC 0x02 //
|
|
#define A2DP_LHDC_COF_CSC_PRE 0x04
|
|
#define A2DP_LHDC_COF_CSC_RESERVED 0x08
|
|
#define A2DP_LHDC_COF_DATA(X) (X & (A2DP_LHDC_COF_CSC_DISABLE | A2DP_LHDC_COF_CSC | A2DP_LHDC_COF_CSC_PRE))
|
|
|
|
typedef enum {
|
|
LHDC_CHANNEL_SPLIT_DISABLE = 0,
|
|
LHDC_CHANNEL_SPLIT, //For forwarding type TWS used
|
|
LHDC_CHANNEL_SPLIT_FROM_ENCODER, // Pre-split left/right frame at encode side.
|
|
LHDC_CHANNEL_SPLIT_INVALID,
|
|
} compressor_output_format_t;
|
|
|
|
typedef struct {
|
|
uint32_t vendor_id;
|
|
uint16_t codec_id;
|
|
uint8_t bits;
|
|
uint8_t sample_rater; //uint:K
|
|
uint8_t version_num;
|
|
uint16_t max_sample_rate; //uint:K
|
|
bool llc_enable; //low latency control
|
|
compressor_output_format_t compress_output_format;
|
|
} lhdc_info_t;
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* */
|
|
|
|
void lhdc_info_parse(uint8_t * elements, lhdc_info_t * info);
|
|
uint8_t a2dp_lhdc_get_sample_rate(uint8_t * elements);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __CODEC_LHDC_H__ */ |