Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ede3f24c authored by Dean Wheatley's avatar Dean Wheatley Committed by Jean-Michel Trivi
Browse files

Default compressed audio bytes per sample to 1

To support AudioTrack builder for compressed audio (e.g. AC3) without
specifiying setBufferSizeInBytes, default the bytesPerSample to 1, and
handle the possible getBytesPerSample exception.

Test: atest AudioTrackTest#testAc3BuilderNoBufferSize
Bug: 169875806
Change-Id: I1b28d94c4dbf3a72e807ef445163e1dd84e4553b
parent 34a1b9c9
Loading
Loading
Loading
Loading
+13 −7
Original line number Diff line number Diff line
@@ -1261,14 +1261,20 @@ public class AudioTrack extends PlayerBase

            // TODO: Check mEncapsulationMode compatibility with MODE_STATIC, etc?

            try {
            // If the buffer size is not specified in streaming mode,
            // use a single frame for the buffer size and let the
            // native code figure out the minimum buffer size.
            if (mMode == MODE_STREAM && mBufferSizeInBytes == 0) {
                    mBufferSizeInBytes = mFormat.getChannelCount()
                            * mFormat.getBytesPerSample(mFormat.getEncoding());
                int bytesPerSample = 1;
                try {
                    bytesPerSample = mFormat.getBytesPerSample(mFormat.getEncoding());
                } catch (IllegalArgumentException e) {
                    // do nothing
                }
                mBufferSizeInBytes = mFormat.getChannelCount() * bytesPerSample;
            }

            try {
                final AudioTrack track = new AudioTrack(
                        mAttributes, mFormat, mBufferSizeInBytes, mMode, mSessionId, mOffload,
                        mEncapsulationMode, mTunerConfiguration);