Bluetooth: Move A2DP HAL 2.0 interface to opensource
- Moved A2DP HAL 2.0 interface to opensource. CRs-Fixed: 2467348 Change-Id: I57ff44907706b54c5d5a2a2a1f6ee274769498ef
This commit is contained in:
committed by
Gerrit - the friendly Code Review server
parent
6b55634529
commit
a01c238d7f
@@ -25,3 +25,8 @@ hidl_package_root {
|
|||||||
name: "vendor.qti.hardware.servicetracker",
|
name: "vendor.qti.hardware.servicetracker",
|
||||||
path: "vendor/qcom/opensource/interfaces/servicetracker",
|
path: "vendor/qcom/opensource/interfaces/servicetracker",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hidl_package_root {
|
||||||
|
name: "vendor.qti.hardware.bluetooth_audio",
|
||||||
|
path: "vendor/qcom/opensource/interfaces/bluetooth_audio",
|
||||||
|
}
|
||||||
|
|||||||
87
bluetooth_audio/2.0/IBluetoothAudioPort.hal
Normal file
87
bluetooth_audio/2.0/IBluetoothAudioPort.hal
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019 The Linux Foundation. All rights reserved.
|
||||||
|
* Not a contribution.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright 2018 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package vendor.qti.hardware.bluetooth_audio@2.0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* HAL interface from the Audio HAL to the Bluetooth stack
|
||||||
|
*
|
||||||
|
* The Audio HAL calls methods in this interface to start, suspend, and stop
|
||||||
|
* an audio stream. These calls return immediately and the results, if any,
|
||||||
|
* are sent over the IBluetoothAudioProvider interface.
|
||||||
|
*
|
||||||
|
* Moreover, the Audio HAL can also get the presentation position of the stream
|
||||||
|
* and provide stream metadata.
|
||||||
|
*
|
||||||
|
* Note: For HIDL APIs with a "generates" statement, the callback parameter used
|
||||||
|
* for return value must be invoked synchronously before the API call returns.
|
||||||
|
*/
|
||||||
|
interface IBluetoothAudioPort {
|
||||||
|
/**
|
||||||
|
* This indicates that the caller of this method has opened the data path
|
||||||
|
* and wants to start an audio stream. The caller must wait for a
|
||||||
|
* IBluetoothAudioProvider.streamStarted(Status) call.
|
||||||
|
*/
|
||||||
|
startStream();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This indicates that the caller of this method wants to suspend the audio
|
||||||
|
* stream. The caller must wait for the Bluetooth process to call
|
||||||
|
* IBluetoothAudioProvider.streamSuspended(Status). The caller still keeps
|
||||||
|
* the data path open.
|
||||||
|
*/
|
||||||
|
suspendStream();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This indicates that the caller of this method wants to stop the audio
|
||||||
|
* stream. The data path will be closed after this call. There is no
|
||||||
|
* callback from the IBluetoothAudioProvider interface even though the
|
||||||
|
* teardown is asynchronous.
|
||||||
|
*/
|
||||||
|
stopStream();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the audio presentation position.
|
||||||
|
*
|
||||||
|
* @return status the command status
|
||||||
|
* @return remoteDeviceAudioDelayNanos the audio delay from when the remote
|
||||||
|
* device (e.g. headset) receives audio data to when the device plays the
|
||||||
|
* sound. If the delay is unknown, the value is set to zero.
|
||||||
|
* @return transmittedOctets the number of audio data octets that were sent
|
||||||
|
* to a remote device. This excludes octets that have been written to the
|
||||||
|
* data path but have not been sent to the remote device. The count is
|
||||||
|
* not reset until stopStream() is called. If the software data path is
|
||||||
|
* unused (e.g. A2DP Hardware Offload), the value is set to 0.
|
||||||
|
* @return transmittedOctetsTimeStamp the value of CLOCK_MONOTONIC
|
||||||
|
* corresponding to transmittedOctets. If the software data path is
|
||||||
|
* unused (e.g., for A2DP Hardware Offload), the value is set to zero.
|
||||||
|
*/
|
||||||
|
getPresentationPosition() generates (Status status,
|
||||||
|
uint64_t remoteDeviceAudioDelayNanos, uint64_t transmittedOctets,
|
||||||
|
TimeSpec transmittedOctetsTimeStamp);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when Audio remorts Aptx Adaptive operating mode has changes
|
||||||
|
*
|
||||||
|
* @param aptxMode: Value of the current Aptx Adaptive Mode
|
||||||
|
*/
|
||||||
|
updateAptxMode(uint16_t aptxMode);
|
||||||
|
};
|
||||||
92
bluetooth_audio/2.0/IBluetoothAudioProvider.hal
Normal file
92
bluetooth_audio/2.0/IBluetoothAudioProvider.hal
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019 The Linux Foundation. All rights reserved.
|
||||||
|
* Not a contribution.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright 2018 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package vendor.qti.hardware.bluetooth_audio@2.0;
|
||||||
|
|
||||||
|
import IBluetoothAudioPort;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* HAL interface from the Bluetooth stack to the Audio HAL
|
||||||
|
*
|
||||||
|
* The Bluetooth stack calls methods in this interface to start and end audio
|
||||||
|
* sessions and sends callback events to the Audio HAL.
|
||||||
|
*
|
||||||
|
* Note: For HIDL APIs with a "generates" statement, the callback parameter used
|
||||||
|
* for return value must be invoked synchronously before the API call returns.
|
||||||
|
*/
|
||||||
|
interface IBluetoothAudioProvider {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method indicates that the Bluetooth stack is ready to stream audio.
|
||||||
|
* It registers an instance of IBluetoothAudioPort with and provides the
|
||||||
|
* current negotiated codec to the Audio HAL. After this method is called,
|
||||||
|
* the Audio HAL can invoke IBluetoothAudioPort.startStream().
|
||||||
|
*
|
||||||
|
* Note: endSession() must be called to unregister this IBluetoothAudioPort
|
||||||
|
*
|
||||||
|
* @param hostIf An instance of IBluetoothAudioPort for stream control
|
||||||
|
* @param audioConfig The audio configuration negotiated with the remote
|
||||||
|
* device. The PCM parameters are set if software based encoding,
|
||||||
|
* otherwise the correct codec configuration is used for hardware
|
||||||
|
* encoding.
|
||||||
|
*
|
||||||
|
* @return status One of the following
|
||||||
|
* SUCCESS if this IBluetoothAudioPort was successfully registered with
|
||||||
|
* the Audio HAL
|
||||||
|
* UNSUPPORTED_CODEC_CONFIGURATION if the Audio HAL cannot register this
|
||||||
|
* IBluetoothAudioPort with the given codec configuration
|
||||||
|
* FAILURE if the Audio HAL cannot register this IBluetoothAudioPort for
|
||||||
|
* any other reason
|
||||||
|
* @return dataMQ The fast message queue for audio data from this provider.
|
||||||
|
* Audio data will be in PCM format as specified by the
|
||||||
|
* audioConfig.pcmConfig parameter.
|
||||||
|
* Invalid if streaming is offloaded to hardware or on failure.
|
||||||
|
*/
|
||||||
|
startSession(IBluetoothAudioPort hostIf, AudioConfiguration audioConfig)
|
||||||
|
generates (Status status, fmq_sync<uint8_t> dataMQ);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Callback for IBluetoothAudioPort.startStream()
|
||||||
|
*
|
||||||
|
* @param status SUCCESS or FAILURE
|
||||||
|
*/
|
||||||
|
streamStarted(Status status);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Callback for IBluetoothAudioPort.suspendStream()
|
||||||
|
*
|
||||||
|
* @param status SUCCESS or FAILURE
|
||||||
|
*/
|
||||||
|
streamSuspended(Status status);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Call to update Sesion Parameters in runtime
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
updateSessionParams(SessionParams sessionParams);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ends the current session and unregisters the IBluetoothAudioPort
|
||||||
|
* interface.
|
||||||
|
*/
|
||||||
|
|
||||||
|
endSession();
|
||||||
|
};
|
||||||
76
bluetooth_audio/2.0/IBluetoothAudioProvidersFactory.hal
Normal file
76
bluetooth_audio/2.0/IBluetoothAudioProvidersFactory.hal
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019 The Linux Foundation. All rights reserved.
|
||||||
|
* Not a contribution.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright 2018 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package vendor.qti.hardware.bluetooth_audio@2.0;
|
||||||
|
|
||||||
|
import IBluetoothAudioProvider;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This factory allows a HAL implementation to be split into multiple
|
||||||
|
* independent providers.
|
||||||
|
*
|
||||||
|
* When the Bluetooth stack is ready to create an audio session, it must first
|
||||||
|
* obtain the IBluetoothAudioProvider for that session type by calling
|
||||||
|
* openProvider().
|
||||||
|
*
|
||||||
|
* Note: For HIDL APIs with a "generates" statement, the callback parameter used
|
||||||
|
* for return value must be invoked synchronously before the API call returns.
|
||||||
|
*/
|
||||||
|
interface IBluetoothAudioProvidersFactory {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Opens an audio provider for a session type. To close the provider, it is
|
||||||
|
* necessary to release references to the returned provider object.
|
||||||
|
*
|
||||||
|
* @param sessionType The session type (e.g.
|
||||||
|
* A2DP_SOFTWARE_ENCODING_DATAPATH).
|
||||||
|
*
|
||||||
|
* @return status One of the following
|
||||||
|
* SUCCESS if the Audio HAL successfully opens the provider with the
|
||||||
|
* given session type
|
||||||
|
* FAILURE if the Audio HAL cannot open the provider
|
||||||
|
* @return provider The provider of the specified session type
|
||||||
|
*/
|
||||||
|
openProvider(SessionType sessionType)
|
||||||
|
generates (Status status, IBluetoothAudioProvider provider);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets a list of audio capabilities for a session type.
|
||||||
|
*
|
||||||
|
* For software encoding, the PCM capabilities are returned.
|
||||||
|
* For hardware encoding, the supported codecs and their capabilities are
|
||||||
|
* returned.
|
||||||
|
*
|
||||||
|
* @param sessionType The session type (e.g.
|
||||||
|
* A2DP_SOFTWARE_ENCODING_DATAPATH).
|
||||||
|
* @return audioCapabilities A list containing all the capabilities
|
||||||
|
* supported by the sesson type. The capabilities is a list of
|
||||||
|
* available options when configuring the codec for the session.
|
||||||
|
* For software encoding it is the PCM data rate.
|
||||||
|
* For hardware encoding it is the list of supported codecs and their
|
||||||
|
* capabilities.
|
||||||
|
* If a provider isn't supported, an empty list should be returned.
|
||||||
|
* Note: Only one entry should exist per codec when using hardware
|
||||||
|
* encoding.
|
||||||
|
*/
|
||||||
|
getProviderCapabilities(SessionType sessionType)
|
||||||
|
generates (vec<AudioCapabilities> audioCapabilities);
|
||||||
|
};
|
||||||
384
bluetooth_audio/2.0/types.hal
Normal file
384
bluetooth_audio/2.0/types.hal
Normal file
@@ -0,0 +1,384 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019 The Linux Foundation. All rights reserved.
|
||||||
|
* Not a contribution.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright 2018 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package vendor.qti.hardware.bluetooth_audio@2.0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The different audio parameter structs are used to provide a method to list
|
||||||
|
* all the Capabilities of a codec as well as to configure the codecs. All
|
||||||
|
* fields are bitfields unless specified. If used as a configuration, only one
|
||||||
|
* bit may be enabled. If used for Capabilities, enable all bits corresponding to
|
||||||
|
* supported features.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* POSIX timespec.
|
||||||
|
*/
|
||||||
|
struct TimeSpec {
|
||||||
|
uint64_t tvSec; // seconds
|
||||||
|
uint64_t tvNSec; // nanoseconds
|
||||||
|
};
|
||||||
|
|
||||||
|
enum Status : uint8_t {
|
||||||
|
SUCCESS = 0x00,
|
||||||
|
/** Codec configuration not supported by the audio platform */
|
||||||
|
UNSUPPORTED_CODEC_CONFIGURATION,
|
||||||
|
/** Any other failure */
|
||||||
|
FAILURE,
|
||||||
|
/* Pending response from Sink*/
|
||||||
|
SINK_NOT_READY,
|
||||||
|
/* Telephony Call in progress*/
|
||||||
|
CALL_IN_PROGRESS,
|
||||||
|
/* Short wait error */
|
||||||
|
SW_ERROR,
|
||||||
|
/* Long wait error */
|
||||||
|
LW_ERROR,
|
||||||
|
/* disconnection in progress */
|
||||||
|
FAILURE_DISC_IN_PROGRESS,
|
||||||
|
/* No wait failure */
|
||||||
|
FAILURE_NO_WAIT
|
||||||
|
};
|
||||||
|
|
||||||
|
enum SessionType : uint8_t {
|
||||||
|
UNKNOWN,
|
||||||
|
/** A2DP legacy that AVDTP media is encoded by Bluetooth Stack */
|
||||||
|
A2DP_SOFTWARE_ENCODING_DATAPATH,
|
||||||
|
/** The encoding of AVDTP media is done by HW and there is control only */
|
||||||
|
A2DP_HARDWARE_OFFLOAD_DATAPATH,
|
||||||
|
/** Used when encoded by Bluetooth Stack and streaming to Hearing Aid */
|
||||||
|
HEARING_AID_SOFTWARE_ENCODING_DATAPATH,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum CodecType : uint32_t {
|
||||||
|
UNKNOWN = 0x00,
|
||||||
|
SBC = 0x01,
|
||||||
|
AAC = 0x02,
|
||||||
|
APTX = 0x04,
|
||||||
|
APTX_HD = 0x08,
|
||||||
|
LDAC = 0x10,
|
||||||
|
BA_CELT = 0x11,
|
||||||
|
APTX_ADAPTIVE = 0x12,
|
||||||
|
APTX_TWS = 0x14,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum SampleRate : uint32_t {
|
||||||
|
RATE_UNKNOWN = 0x00,
|
||||||
|
RATE_44100 = 0x01,
|
||||||
|
RATE_48000 = 0x02,
|
||||||
|
RATE_88200 = 0x04,
|
||||||
|
RATE_96000 = 0x08,
|
||||||
|
RATE_176400 = 0x10,
|
||||||
|
RATE_192000 = 0x20,
|
||||||
|
RATE_16000 = 0x40,
|
||||||
|
RATE_24000 = 0x60,
|
||||||
|
RATE_32000 = 0x80,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum BitsPerSample : uint8_t {
|
||||||
|
BITS_UNKNOWN = 0x00,
|
||||||
|
BITS_16 = 0x01,
|
||||||
|
BITS_24 = 0x02,
|
||||||
|
BITS_32 = 0x04,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum ChannelMode : uint8_t {
|
||||||
|
UNKNOWN = 0x00,
|
||||||
|
MONO = 0x01,
|
||||||
|
STEREO = 0x02,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum SbcChannelMode : uint8_t {
|
||||||
|
/** Channel Mode: 4 bits */
|
||||||
|
UNKNOWN = 0x00,
|
||||||
|
JOINT_STEREO = 0x01,
|
||||||
|
STEREO = 0x02,
|
||||||
|
DUAL = 0x04,
|
||||||
|
MONO = 0x08,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum SbcBlockLength : uint8_t {
|
||||||
|
BLOCKS_4 = 0x80,
|
||||||
|
BLOCKS_8 = 0x40,
|
||||||
|
BLOCKS_12 = 0x20,
|
||||||
|
BLOCKS_16 = 0x10,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum SbcNumSubbands : uint8_t {
|
||||||
|
SUBBAND_4 = 0x08,
|
||||||
|
SUBBAND_8 = 0x04,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum SbcAllocMethod : uint8_t {
|
||||||
|
/** SNR */
|
||||||
|
ALLOC_MD_S = 0x02,
|
||||||
|
/** Loudness */
|
||||||
|
ALLOC_MD_L = 0x01,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum AacObjectType : uint8_t {
|
||||||
|
/** MPEG-2 Low Complexity. Support is Mandatory. */
|
||||||
|
MPEG2_LC = 0x80,
|
||||||
|
/** MPEG-4 Low Complexity. Support is Optional. */
|
||||||
|
MPEG4_LC = 0x40,
|
||||||
|
/** MPEG-4 Long Term Prediction. Support is Optional. */
|
||||||
|
MPEG4_LTP = 0x20,
|
||||||
|
/** MPEG-4 Scalable. Support is Optional. */
|
||||||
|
MPEG4_SCALABLE = 0x10,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum AacVariableBitRate : uint8_t {
|
||||||
|
ENABLED = 0x80,
|
||||||
|
DISABLED = 0x00,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum AptxAdaptiveChannelMode : int32_t {
|
||||||
|
/** Channel Mode: 5 bits */
|
||||||
|
UNCHANGED = -1,
|
||||||
|
JOINT_STEREO = 0,
|
||||||
|
MONO = 1,
|
||||||
|
DUAL_MONO = 2,
|
||||||
|
TWS_STEREO = 4,
|
||||||
|
EARBUD = 8,
|
||||||
|
TWS_MONO = 10,
|
||||||
|
UNKNOWN = 0xFF,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum AptxMode : uint32_t {
|
||||||
|
/** Aptx Adaptive Mode: 32 bits */
|
||||||
|
UNKNOWN = 0x00,
|
||||||
|
HQ = 0x1000,
|
||||||
|
LL = 0x2000,
|
||||||
|
ULL = 0x4000,
|
||||||
|
SCAN_CONTROL = 0x8000,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum InputMode : uint32_t {
|
||||||
|
/** Aptx Adaptive Input Mode: 32 bits */
|
||||||
|
STEREO = 0x00,
|
||||||
|
DUAL_MONO = 0x01,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct AptxSinkBuffering {
|
||||||
|
uint8_t minSinkBuff_LL;
|
||||||
|
uint8_t maxSinkBuff_LL;
|
||||||
|
uint8_t minSinkBuff_HQ;
|
||||||
|
uint8_t maxSinkBuff_HQ;
|
||||||
|
uint8_t minSinkBuff_TWS;
|
||||||
|
uint8_t maxSinkBuff_TWS;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct AptxAdaptive_TTP {
|
||||||
|
uint8_t TTP_LL_low;
|
||||||
|
uint8_t TTP_LL_high;
|
||||||
|
uint8_t TTP_HQ_low;
|
||||||
|
uint8_t TTP_HQ_high;
|
||||||
|
uint8_t TTP_TWS_low;
|
||||||
|
uint8_t TTP_TWS_high;
|
||||||
|
};
|
||||||
|
|
||||||
|
enum LdacChannelMode : uint8_t {
|
||||||
|
/** Channel Mode: 3 bits */
|
||||||
|
UNKNOWN = 0x00,
|
||||||
|
STEREO = 0x01,
|
||||||
|
DUAL = 0x02,
|
||||||
|
MONO = 0x04,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum LdacQualityIndex : uint8_t {
|
||||||
|
// 990kbps
|
||||||
|
QUALITY_HIGH = 0x00,
|
||||||
|
// 660kbps
|
||||||
|
QUALITY_MID = 0x01,
|
||||||
|
// 330kbps
|
||||||
|
QUALITY_LOW = 0x02,
|
||||||
|
// Adaptive Bit Rate mode
|
||||||
|
QUALITY_ABR = 0x7F,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum SessionParamType : uint8_t {
|
||||||
|
UNKNOWN = 0x00,
|
||||||
|
MTU = 0x01,
|
||||||
|
BITRATE = 0x02,
|
||||||
|
SINK_LATENCY = 0x03,
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Used for Software Encoding audio feed parameters */
|
||||||
|
struct PcmParameters {
|
||||||
|
SampleRate sampleRate;
|
||||||
|
ChannelMode channelMode;
|
||||||
|
BitsPerSample bitsPerSample;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used for Hardware Encoding SBC codec parameters.
|
||||||
|
* minBitpool and maxBitpool are not bitfields.
|
||||||
|
*/
|
||||||
|
struct SbcParameters {
|
||||||
|
SampleRate sampleRate;
|
||||||
|
SbcChannelMode channelMode;
|
||||||
|
SbcBlockLength blockLength;
|
||||||
|
SbcNumSubbands numSubbands;
|
||||||
|
SbcAllocMethod allocMethod;
|
||||||
|
BitsPerSample bitsPerSample;
|
||||||
|
uint8_t minBitpool;
|
||||||
|
uint8_t maxBitpool;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Used for Hardware Encoding AAC codec parameters */
|
||||||
|
struct AacParameters {
|
||||||
|
AacObjectType objectType;
|
||||||
|
SampleRate sampleRate;
|
||||||
|
ChannelMode channelMode;
|
||||||
|
AacVariableBitRate variableBitRateEnabled;
|
||||||
|
BitsPerSample bitsPerSample;
|
||||||
|
bool frameControlEnabled;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used for Hardware Encoding LDAC codec parameters
|
||||||
|
* Only used when configuring the codec. When Capabilities are requested, this
|
||||||
|
* field is left empty since all qualities must be supported. Not a bitfield.
|
||||||
|
*/
|
||||||
|
struct LdacParameters {
|
||||||
|
SampleRate sampleRate;
|
||||||
|
LdacChannelMode channelMode;
|
||||||
|
LdacQualityIndex qualityIndex;
|
||||||
|
BitsPerSample bitsPerSample;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Used for Hardware Encoding AptX and AptX-HD codec parameters */
|
||||||
|
struct AptxParameters {
|
||||||
|
SampleRate sampleRate;
|
||||||
|
ChannelMode channelMode;
|
||||||
|
BitsPerSample bitsPerSample;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Used for Hardware Encoding AptX-Adaptive codec parameters */
|
||||||
|
struct AptxAdaptiveParameters {
|
||||||
|
SampleRate sampleRate;
|
||||||
|
AptxAdaptiveChannelMode channelMode;
|
||||||
|
BitsPerSample bitsPerSample;
|
||||||
|
AptxMode aptxMode;
|
||||||
|
AptxSinkBuffering sinkBuffering;
|
||||||
|
AptxAdaptive_TTP ttp;
|
||||||
|
InputMode inputMode;
|
||||||
|
uint32_t inputFadeDuration;
|
||||||
|
uint8_t[25] aptxAdaptiveConfigStream;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Used for Hardware Encoding AptX TWS codec parameters */
|
||||||
|
struct AptxTwsParameters {
|
||||||
|
SampleRate sampleRate;
|
||||||
|
ChannelMode channelMode;
|
||||||
|
uint8_t syncMode;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Used for Hardware Encoding BA CELT codec parameters */
|
||||||
|
struct BaCeltParameters {
|
||||||
|
SampleRate sampleRate;
|
||||||
|
ChannelMode channelMode;
|
||||||
|
uint16_t frameSize;
|
||||||
|
uint16_t complexity;
|
||||||
|
uint16_t predictionMode;
|
||||||
|
uint16_t vbrFlag;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used to specify the capabilities of the codecs supported by Hardware Encoding.
|
||||||
|
* AptX and AptX-HD both use the AptxParameters field.
|
||||||
|
*/
|
||||||
|
struct CodecCapabilities {
|
||||||
|
CodecType codecType;
|
||||||
|
|
||||||
|
union Capabilities {
|
||||||
|
SbcParameters sbcCapabilities;
|
||||||
|
AacParameters aacCapabilities;
|
||||||
|
LdacParameters ldacCapabilities;
|
||||||
|
AptxParameters aptxCapabilities;
|
||||||
|
AptxAdaptiveParameters aptxAdaptiveCapabilities;
|
||||||
|
AptxTwsParameters aptxTwsCapabilities;
|
||||||
|
BaCeltParameters baCeltCapabilities;
|
||||||
|
} capabilities;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct SinkLatency {
|
||||||
|
uint64_t remoteDeviceAudioDelay;
|
||||||
|
uint64_t transmittedOctets;
|
||||||
|
TimeSpec transmittedOctetsTimeStamp;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used for proactive update of Session Parameters to server
|
||||||
|
*/
|
||||||
|
struct SessionParams {
|
||||||
|
SessionParamType paramType;
|
||||||
|
|
||||||
|
union Param {
|
||||||
|
uint16_t mtu;
|
||||||
|
uint32_t encodedAudioBitrate;
|
||||||
|
SinkLatency sinkLatency;
|
||||||
|
} param;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Used to specify the capabilities of the different session types. */
|
||||||
|
union AudioCapabilities {
|
||||||
|
PcmParameters pcmCapabilities;
|
||||||
|
CodecCapabilities codecCapabilities;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used to configure a Hardware Encoding session.
|
||||||
|
* AptX and AptX-HD both use the AptxParameters field.
|
||||||
|
*/
|
||||||
|
struct CodecConfiguration {
|
||||||
|
CodecType codecType;
|
||||||
|
/**
|
||||||
|
* The encoded audio bitrate in bits / second.
|
||||||
|
* 0x00000000 - The audio bitrate is not specified / unused
|
||||||
|
* 0x00000001 - 0x00FFFFFF - Encoded audio bitrate in bits/second
|
||||||
|
* 0x01000000 - 0xFFFFFFFF - Reserved
|
||||||
|
*
|
||||||
|
* The HAL needs to support all legal bitrates for the selected codec.
|
||||||
|
*/
|
||||||
|
uint32_t encodedAudioBitrate;
|
||||||
|
/** Peer MTU (in octets) */
|
||||||
|
uint16_t peerMtu;
|
||||||
|
/** Content protection by SCMS-T */
|
||||||
|
bool isScmstEnabled;
|
||||||
|
/** Scrambling Requirement */
|
||||||
|
bool isScramblingEnabled;
|
||||||
|
union CodecSpecific {
|
||||||
|
SbcParameters sbcConfig;
|
||||||
|
AacParameters aacConfig;
|
||||||
|
LdacParameters ldacConfig;
|
||||||
|
AptxParameters aptxConfig;
|
||||||
|
AptxAdaptiveParameters aptxAdaptiveConfig;
|
||||||
|
AptxTwsParameters aptxTwsConfig;
|
||||||
|
BaCeltParameters baCeltConfig;
|
||||||
|
} config;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Used to configure either a Hardware or Software Encoding session based on session type */
|
||||||
|
union AudioConfiguration {
|
||||||
|
PcmParameters pcmConfig;
|
||||||
|
CodecConfiguration codecConfig;
|
||||||
|
};
|
||||||
33
bluetooth_audio/current.txt
Normal file
33
bluetooth_audio/current.txt
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
#Copyright (c) 2019, The Linux Foundation. All rights reserved.
|
||||||
|
|
||||||
|
#Redistribution and use in source and binary forms, with or without
|
||||||
|
#modification, are permitted provided that the following conditions are
|
||||||
|
#met:
|
||||||
|
# * Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# * Redistributions in binary form must reproduce the above
|
||||||
|
# copyright notice, this list of conditions and the following
|
||||||
|
# disclaimer in the documentation and/or other materials provided
|
||||||
|
# with the distribution.
|
||||||
|
# * Neither the name of The Linux Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
|
||||||
|
#THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||||
|
#WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
#MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
||||||
|
#ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||||
|
#BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
#CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
#SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||||
|
#BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
#WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||||
|
#OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||||
|
#IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
#HAL released in Android Q
|
||||||
|
#Bluetooth Audio
|
||||||
|
e318824d1eb40ba520316343fbbd3683b90c011e2c66338d8db7aa801da222e7 vendor.qti.hardware.bluetooth_audio@2.0::types
|
||||||
|
4efce82a613cd7e4886a8d75328d1476366a48a7d221b3238c5c0a084663bb9a vendor.qti.hardware.bluetooth_audio@2.0::IBluetoothAudioPort
|
||||||
|
80850a7fcdf4bcd89df865226d4e16862d9ca4a832b2e6677e0dd7bb9297e037 vendor.qti.hardware.bluetooth_audio@2.0::IBluetoothAudioProvider
|
||||||
|
95dfb82e79fc47813b8f4f773b1eb60f79ea7e42e12642356bdf14e144089758 vendor.qti.hardware.bluetooth_audio@2.0::IBluetoothAudioProvidersFactory
|
||||||
Reference in New Issue
Block a user