Loading system/stack/a2dp/a2dp_aac.cc +4 −2 Original line number Diff line number Diff line Loading @@ -529,7 +529,7 @@ bool A2DP_BuildCodecHeaderAac(UNUSED_ATTR const uint8_t* p_codec_info, return true; } void A2DP_DumpCodecInfoAac(const uint8_t* p_codec_info) { bool A2DP_DumpCodecInfoAac(const uint8_t* p_codec_info) { tA2DP_STATUS a2dp_status; tA2DP_AAC_CIE aac_cie; Loading @@ -538,7 +538,7 @@ void A2DP_DumpCodecInfoAac(const uint8_t* p_codec_info) { a2dp_status = A2DP_ParseInfoAac(&aac_cie, p_codec_info, true); if (a2dp_status != A2DP_SUCCESS) { LOG_ERROR(LOG_TAG, "%s: A2DP_ParseInfoAac fail:%d", __func__, a2dp_status); return; return false; } LOG_DEBUG(LOG_TAG, "\tobjectType: 0x%x", aac_cie.objectType); Loading Loading @@ -605,6 +605,8 @@ void A2DP_DumpCodecInfoAac(const uint8_t* p_codec_info) { (aac_cie.variableBitRateSupport != 0) ? "true" : "false"); LOG_DEBUG(LOG_TAG, "\tbitRate: %u", aac_cie.bitRate); return true; } const tA2DP_ENCODER_INTERFACE* A2DP_GetEncoderInterfaceAac( Loading system/stack/a2dp/a2dp_codec_config.cc +20 −0 Original line number Diff line number Diff line Loading @@ -1258,3 +1258,23 @@ bool A2DP_InitCodecConfig(btav_a2dp_codec_index_t codec_index, return false; } bool A2DP_DumpCodecInfo(const uint8_t* p_codec_info) { tA2DP_CODEC_TYPE codec_type = A2DP_GetCodecType(p_codec_info); LOG_VERBOSE(LOG_TAG, "%s: codec_type = 0x%x", __func__, codec_type); switch (codec_type) { case A2DP_MEDIA_CT_SBC: return A2DP_DumpCodecInfoSbc(p_codec_info); case A2DP_MEDIA_CT_AAC: return A2DP_DumpCodecInfoAac(p_codec_info); case A2DP_MEDIA_CT_NON_A2DP: return A2DP_VendorDumpCodecInfo(p_codec_info); default: break; } LOG_ERROR(LOG_TAG, "%s: unsupported codec type 0x%x", __func__, codec_type); return false; } system/stack/a2dp/a2dp_sbc.cc +4 −2 Original line number Diff line number Diff line Loading @@ -867,7 +867,7 @@ bool A2DP_BuildCodecHeaderSbc(UNUSED_ATTR const uint8_t* p_codec_info, return true; } void A2DP_DumpCodecInfoSbc(const uint8_t* p_codec_info) { bool A2DP_DumpCodecInfoSbc(const uint8_t* p_codec_info) { tA2DP_STATUS a2dp_status; tA2DP_SBC_CIE sbc_cie; Loading @@ -876,7 +876,7 @@ void A2DP_DumpCodecInfoSbc(const uint8_t* p_codec_info) { a2dp_status = A2DP_ParseInfoSbc(&sbc_cie, p_codec_info, true); if (a2dp_status != A2DP_SUCCESS) { LOG_ERROR(LOG_TAG, "%s: A2DP_ParseInfoSbc fail:%d", __func__, a2dp_status); return; return false; } LOG_DEBUG(LOG_TAG, "\tsamp_freq: 0x%x", sbc_cie.samp_freq); Loading Loading @@ -939,6 +939,8 @@ void A2DP_DumpCodecInfoSbc(const uint8_t* p_codec_info) { LOG_DEBUG(LOG_TAG, "\tBit pool Min:%d Max:%d", sbc_cie.min_bitpool, sbc_cie.max_bitpool); return true; } const tA2DP_ENCODER_INTERFACE* A2DP_GetEncoderInterfaceSbc( Loading system/stack/a2dp/a2dp_vendor.cc +26 −0 Original line number Diff line number Diff line Loading @@ -543,3 +543,29 @@ bool A2DP_VendorInitCodecConfig(btav_a2dp_codec_index_t codec_index, return false; } bool A2DP_VendorDumpCodecInfo(const uint8_t* p_codec_info) { uint32_t vendor_id = A2DP_VendorCodecGetVendorId(p_codec_info); uint16_t codec_id = A2DP_VendorCodecGetCodecId(p_codec_info); // Check for aptX if (vendor_id == A2DP_APTX_VENDOR_ID && codec_id == A2DP_APTX_CODEC_ID_BLUETOOTH) { return A2DP_VendorDumpCodecInfoAptx(p_codec_info); } // Check for aptX-HD if (vendor_id == A2DP_APTX_HD_VENDOR_ID && codec_id == A2DP_APTX_HD_CODEC_ID_BLUETOOTH) { return A2DP_VendorDumpCodecInfoAptxHd(p_codec_info); } // Check for LDAC if (vendor_id == A2DP_LDAC_VENDOR_ID && codec_id == A2DP_LDAC_CODEC_ID) { return A2DP_VendorDumpCodecInfoLdac(p_codec_info); } // Add checks based on <vendor_id, codec_id> return false; } system/stack/a2dp/a2dp_vendor_aptx.cc +4 −2 Original line number Diff line number Diff line Loading @@ -332,7 +332,7 @@ bool A2DP_VendorBuildCodecHeaderAptx(UNUSED_ATTR const uint8_t* p_codec_info, return true; } void A2DP_VendorDumpCodecInfoAptx(const uint8_t* p_codec_info) { bool A2DP_VendorDumpCodecInfoAptx(const uint8_t* p_codec_info) { tA2DP_STATUS a2dp_status; tA2DP_APTX_CIE aptx_cie; Loading @@ -341,7 +341,7 @@ void A2DP_VendorDumpCodecInfoAptx(const uint8_t* p_codec_info) { a2dp_status = A2DP_ParseInfoAptx(&aptx_cie, p_codec_info, true); if (a2dp_status != A2DP_SUCCESS) { LOG_ERROR(LOG_TAG, "%s: A2DP_ParseInfoAptx fail:%d", __func__, a2dp_status); return; return false; } LOG_DEBUG(LOG_TAG, "\tsamp_freq: 0x%x", aptx_cie.sampleRate); Loading @@ -359,6 +359,8 @@ void A2DP_VendorDumpCodecInfoAptx(const uint8_t* p_codec_info) { if (aptx_cie.channelMode & A2DP_APTX_CHANNELS_STEREO) { LOG_DEBUG(LOG_TAG, "\tch_mode: (Stereo)"); } return true; } const tA2DP_ENCODER_INTERFACE* A2DP_VendorGetEncoderInterfaceAptx( Loading Loading
system/stack/a2dp/a2dp_aac.cc +4 −2 Original line number Diff line number Diff line Loading @@ -529,7 +529,7 @@ bool A2DP_BuildCodecHeaderAac(UNUSED_ATTR const uint8_t* p_codec_info, return true; } void A2DP_DumpCodecInfoAac(const uint8_t* p_codec_info) { bool A2DP_DumpCodecInfoAac(const uint8_t* p_codec_info) { tA2DP_STATUS a2dp_status; tA2DP_AAC_CIE aac_cie; Loading @@ -538,7 +538,7 @@ void A2DP_DumpCodecInfoAac(const uint8_t* p_codec_info) { a2dp_status = A2DP_ParseInfoAac(&aac_cie, p_codec_info, true); if (a2dp_status != A2DP_SUCCESS) { LOG_ERROR(LOG_TAG, "%s: A2DP_ParseInfoAac fail:%d", __func__, a2dp_status); return; return false; } LOG_DEBUG(LOG_TAG, "\tobjectType: 0x%x", aac_cie.objectType); Loading Loading @@ -605,6 +605,8 @@ void A2DP_DumpCodecInfoAac(const uint8_t* p_codec_info) { (aac_cie.variableBitRateSupport != 0) ? "true" : "false"); LOG_DEBUG(LOG_TAG, "\tbitRate: %u", aac_cie.bitRate); return true; } const tA2DP_ENCODER_INTERFACE* A2DP_GetEncoderInterfaceAac( Loading
system/stack/a2dp/a2dp_codec_config.cc +20 −0 Original line number Diff line number Diff line Loading @@ -1258,3 +1258,23 @@ bool A2DP_InitCodecConfig(btav_a2dp_codec_index_t codec_index, return false; } bool A2DP_DumpCodecInfo(const uint8_t* p_codec_info) { tA2DP_CODEC_TYPE codec_type = A2DP_GetCodecType(p_codec_info); LOG_VERBOSE(LOG_TAG, "%s: codec_type = 0x%x", __func__, codec_type); switch (codec_type) { case A2DP_MEDIA_CT_SBC: return A2DP_DumpCodecInfoSbc(p_codec_info); case A2DP_MEDIA_CT_AAC: return A2DP_DumpCodecInfoAac(p_codec_info); case A2DP_MEDIA_CT_NON_A2DP: return A2DP_VendorDumpCodecInfo(p_codec_info); default: break; } LOG_ERROR(LOG_TAG, "%s: unsupported codec type 0x%x", __func__, codec_type); return false; }
system/stack/a2dp/a2dp_sbc.cc +4 −2 Original line number Diff line number Diff line Loading @@ -867,7 +867,7 @@ bool A2DP_BuildCodecHeaderSbc(UNUSED_ATTR const uint8_t* p_codec_info, return true; } void A2DP_DumpCodecInfoSbc(const uint8_t* p_codec_info) { bool A2DP_DumpCodecInfoSbc(const uint8_t* p_codec_info) { tA2DP_STATUS a2dp_status; tA2DP_SBC_CIE sbc_cie; Loading @@ -876,7 +876,7 @@ void A2DP_DumpCodecInfoSbc(const uint8_t* p_codec_info) { a2dp_status = A2DP_ParseInfoSbc(&sbc_cie, p_codec_info, true); if (a2dp_status != A2DP_SUCCESS) { LOG_ERROR(LOG_TAG, "%s: A2DP_ParseInfoSbc fail:%d", __func__, a2dp_status); return; return false; } LOG_DEBUG(LOG_TAG, "\tsamp_freq: 0x%x", sbc_cie.samp_freq); Loading Loading @@ -939,6 +939,8 @@ void A2DP_DumpCodecInfoSbc(const uint8_t* p_codec_info) { LOG_DEBUG(LOG_TAG, "\tBit pool Min:%d Max:%d", sbc_cie.min_bitpool, sbc_cie.max_bitpool); return true; } const tA2DP_ENCODER_INTERFACE* A2DP_GetEncoderInterfaceSbc( Loading
system/stack/a2dp/a2dp_vendor.cc +26 −0 Original line number Diff line number Diff line Loading @@ -543,3 +543,29 @@ bool A2DP_VendorInitCodecConfig(btav_a2dp_codec_index_t codec_index, return false; } bool A2DP_VendorDumpCodecInfo(const uint8_t* p_codec_info) { uint32_t vendor_id = A2DP_VendorCodecGetVendorId(p_codec_info); uint16_t codec_id = A2DP_VendorCodecGetCodecId(p_codec_info); // Check for aptX if (vendor_id == A2DP_APTX_VENDOR_ID && codec_id == A2DP_APTX_CODEC_ID_BLUETOOTH) { return A2DP_VendorDumpCodecInfoAptx(p_codec_info); } // Check for aptX-HD if (vendor_id == A2DP_APTX_HD_VENDOR_ID && codec_id == A2DP_APTX_HD_CODEC_ID_BLUETOOTH) { return A2DP_VendorDumpCodecInfoAptxHd(p_codec_info); } // Check for LDAC if (vendor_id == A2DP_LDAC_VENDOR_ID && codec_id == A2DP_LDAC_CODEC_ID) { return A2DP_VendorDumpCodecInfoLdac(p_codec_info); } // Add checks based on <vendor_id, codec_id> return false; }
system/stack/a2dp/a2dp_vendor_aptx.cc +4 −2 Original line number Diff line number Diff line Loading @@ -332,7 +332,7 @@ bool A2DP_VendorBuildCodecHeaderAptx(UNUSED_ATTR const uint8_t* p_codec_info, return true; } void A2DP_VendorDumpCodecInfoAptx(const uint8_t* p_codec_info) { bool A2DP_VendorDumpCodecInfoAptx(const uint8_t* p_codec_info) { tA2DP_STATUS a2dp_status; tA2DP_APTX_CIE aptx_cie; Loading @@ -341,7 +341,7 @@ void A2DP_VendorDumpCodecInfoAptx(const uint8_t* p_codec_info) { a2dp_status = A2DP_ParseInfoAptx(&aptx_cie, p_codec_info, true); if (a2dp_status != A2DP_SUCCESS) { LOG_ERROR(LOG_TAG, "%s: A2DP_ParseInfoAptx fail:%d", __func__, a2dp_status); return; return false; } LOG_DEBUG(LOG_TAG, "\tsamp_freq: 0x%x", aptx_cie.sampleRate); Loading @@ -359,6 +359,8 @@ void A2DP_VendorDumpCodecInfoAptx(const uint8_t* p_codec_info) { if (aptx_cie.channelMode & A2DP_APTX_CHANNELS_STEREO) { LOG_DEBUG(LOG_TAG, "\tch_mode: (Stereo)"); } return true; } const tA2DP_ENCODER_INTERFACE* A2DP_VendorGetEncoderInterfaceAptx( Loading