History log of /system/bt/stack/a2dp/a2dp_aac_encoder.cc
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
7cff5f55bf30f305291c0827482f03f0b52fb990 28-Jul-2017 Pavlin Radoslavov <pavlin@google.com> Add interoperability mechanism to restrict the AVDTP MTU for AAC codec

Also, add an interoperability entry for devices that are known
to have AAC-related issues.

Test: A2DP streaming to Headsets
Bug: 63725151
Change-Id: Ic9b6640da44ebc28bfa63a19a87f0543d69bc576
(cherry picked from commit b866da0bc1254103146912077bcb49128963dee7)
/system/bt/stack/a2dp/a2dp_aac_encoder.cc
9434886ffbb5ce552d1172d98743323fa34e81f9 19-Apr-2017 Pavlin Radoslavov <pavlin@google.com> Fix/update the computation of the total dropped packets for LDAC and AAC

Also:
* Print the "LDAC transmission bitrate (Kbps)"
* Print the "LDAC adaptive bit rate encode quality mode index"
when the LDAC quality mode is ABR

A2DP LDAC State:
...
LDAC quality mode : ABR
LDAC transmission bitrate (Kbps) : 990
LDAC saved transmit queue length : 0
LDAC adaptive bit rate encode quality mode index : 0

Test: A2DP streaming to headsets that support LDAC
Bug: 37287785
Change-Id: I83b22090b087eb8a1e49d1853468b7dbbf9d9ad3
(cherry picked from commit 648ea508c95ade2d8cb8b2928c70ae123fab8334)
/system/bt/stack/a2dp/a2dp_aac_encoder.cc
67ae84fb7f01d8458bfc1dcb506f32e7d9350d17 07-Apr-2017 Pavlin Radoslavov <pavlin@google.com> Add A2DP codec-specific information to dumpsys output

Now we print the following information:
* Current codec name
* Info for each supported codec:
- Priority
- Encoder interval (ms)
- Codec Config: Sampling rate, Bits per sample, Channel mode (MONO/STEREO)
- Selectable codec configuration
- Codec's local capability
- Packet counts (expected/dropped)
- PCM read counts (expected/actual)
- PCM read bytes (expected/actual)
* LDAC codec-specific info:
- LDAC quality mode: HIGH/MID/LOW/ABR
- LDAC saved transmit queue length [used in ABR mode]
* SBC codec-specific info:
- Frames counts (expected/dropped)

Sample of the new format is below:

---
A2DP Codecs State:
Current Codec: LDAC

A2DP LDAC State:
Priority: 1000000
Encoder interval (ms): 20
Config: Rate=96000 Bits=32 Mode=STEREO
Selectable: Rate=44100|48000|88200|96000 Bits=16|24|32 Mode=MONO|STEREO
Local capability: Rate=44100|48000|88200|96000 Bits=16|24|32 Mode=MONO|STEREO
Packet counts (expected/dropped) : 596 / 161
PCM read counts (expected/actual) : 2488 / 2488
PCM read bytes (expected/actual) : 2547712 / 2547712
LDAC quality mode : ABR
LDAC saved transmit queue length : 0

A2DP aptX-HD State:
Priority: 4001
Encoder interval (ms): 0
Config: Invalid
Selectable: Invalid
Local capability: Rate=44100|48000 Bits=24 Mode=STEREO
Packet counts (expected/dropped) : 0 / 0
PCM read counts (expected/actual) : 0 / 0
PCM read bytes (expected/actual) : 0 / 0

A2DP aptX State:
Priority: 3001
Encoder interval (ms): 0
Config: Rate=44100 Bits=16 Mode=STEREO
Selectable: Rate=44100|48000 Bits=16 Mode=STEREO
Local capability: Rate=44100|48000 Bits=16 Mode=STEREO
Packet counts (expected/dropped) : 0 / 0
PCM read counts (expected/actual) : 0 / 0
PCM read bytes (expected/actual) : 0 / 0

A2DP AAC State:
Priority: 2001
Encoder interval (ms): 20
Config: Rate=44100 Bits=16 Mode=STEREO
Selectable: Rate=44100|48000 Bits=16 Mode=STEREO
Local capability: Rate=44100|48000|88200|96000 Bits=16 Mode=STEREO
Packet counts (expected/dropped) : 0 / 0
PCM read counts (expected/actual) : 0 / 0
PCM read bytes (expected/actual) : 0 / 0

A2DP SBC State:
Priority: 1001
Encoder interval (ms): 20
Config: Rate=44100 Bits=16 Mode=STEREO
Selectable: Rate=44100 Bits=16 Mode=STEREO
Local capability: Rate=44100 Bits=16 Mode=STEREO
Packet counts (expected/dropped) : 580 / 0
PCM read counts (expected/actual) : 2900 / 2900
PCM read bytes (expected/actual) : 1484800 / 1484800
Frames counts (expected/dropped) : 3724 / 0
---

Bug: 36567128
Test: Stream A2DP and "adb shell dumpsys bluetooth_manager"
Change-Id: Idd86005b842a4e569b7df91b8bbaf0632ed7f7c9

(cherry picked from commit 302113d4e44f06e90f90a5903e33ae830edb58a3)
/system/bt/stack/a2dp/a2dp_aac_encoder.cc
1ba312d994f30b27f6dccd75c437e7b63dbebf23 23-Feb-2017 Pavlin Radoslavov <pavlin@google.com> Set the AAC audioMuxVersion to "2"

This change is needed, because there are Sink devices that
expect a fixed latmBufferFullness value.

Bug: 35715579
Test: A2DP streaming to various devices
Change-Id: Ia27490920cda273cee15bfd7e643b85a5c5e428d
/system/bt/stack/a2dp/a2dp_aac_encoder.cc
07ceaa497006b51e463f82565e602210a6731275 23-Feb-2017 Pavlin Radoslavov <pavlin@google.com> Update the AAC bitrate settings

Use AACENC_PEAK_BITRATE to limit the maximum bitrate as limited by
the MTU, and use AACENC_BITRATE to set the encoder bitrate.

Previously, both were set to the same value. That was disabling
the AAC bitreservoir, and eventually affecting the audio quality.

Bug: 35715570
Test: A2DP streaming to various devices
Change-Id: I6adac4889f9b2d7509182df8961ddfada02ee8ac
/system/bt/stack/a2dp/a2dp_aac_encoder.cc
3b8f12614fd2a97332104230cb98a4c13bda93c7 09-Feb-2017 Kenmochi, Chisato <Chisato.Kenmochi@sony.com> Fix AAC bitrate computation and add missing parameters

* Compute the AAC codec bitrate based on the MTU and the AAC
object type such that the AAC frames are not fragmented.
The spec recommendation is to avoid fragmentation, and
some sink devices cannot process fragmented frames.

* Setup/assign AACENC_PEAK_BITRATE as the peak bitrate to
make sure we never go over the MTU frame size.

* Add missing AAC parameter setup for AACENC_AUDIOMUXVER
and AACENC_SIGNALING_MODE

* Add a fix for selecting the bitrate if the sink device reports
capability with zero bitrate - for such devices we negotiate
our bitrate. For the actual AAC codec bitrate we still compute
it based on the MTU and the AAC object type.

Test: Tested with numerous AAC sink devices
Bug: 34953385
Change-Id: I9ca6353b0e1ee107f1242803de4e82d568a3394b
/system/bt/stack/a2dp/a2dp_aac_encoder.cc
d5f4960b425ac84cc7a9fd699f39c06869ce2666 04-Jan-2017 Pavlin Radoslavov <pavlin@google.com> Integration of the AAC codec for A2DP source

Also:
- Implemented data fragmentation inside bta_av_data_path()
that is RTP compatible.
- Do not use the codec_type when composing the RTP payload type
per RFC 3016, Section 4.2. That value doesn't have actual meaning
in the context of the Bluetooth supported codecs, and is ambiguous:
all vendor codecs map to the same value 0xFF.
- Updated support function A2DP_BitsSet() so it works for
up to 64-bit integers.
- Updated a log message inside l2c_data_write() to print
packet length and peer MTU on error.

Test: A2DP streaming to AAC headsets
Bug: 30958229
Change-Id: I1b530f1c5c495b8231fd68bed788d4567096683d
/system/bt/stack/a2dp/a2dp_aac_encoder.cc