Loading android/app/jni/com_android_bluetooth_le_audio.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -131,8 +131,8 @@ static LeAudioClientCallbacksImpl sLeAudioClientCallbacks; static void classInitNative(JNIEnv* env, jclass clazz) { jclass jniBluetoothLeAudioCodecConfigClass = env->FindClass("android/bluetooth/BluetoothLeAudioCodecConfig"); android_bluetooth_BluetoothLeAudioCodecConfig.constructor = env->GetMethodID(jniBluetoothLeAudioCodecConfigClass, "<init>", "(I)V"); android_bluetooth_BluetoothLeAudioCodecConfig.constructor = env->GetMethodID( jniBluetoothLeAudioCodecConfigClass, "<init>", "(IIIIIII)V"); android_bluetooth_BluetoothLeAudioCodecConfig.getCodecType = env->GetMethodID( jniBluetoothLeAudioCodecConfigClass, "getCodecType", "()I"); Loading framework/java/android/bluetooth/BluetoothLeAudioCodecConfig.java +337 −5 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ package android.bluetooth; import android.annotation.IntDef; import android.annotation.NonNull; import android.os.Parcel; import android.os.Parcelable; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; Loading @@ -30,7 +32,7 @@ import java.lang.annotation.RetentionPolicy; * * {@see BluetoothLeAudioCodecConfig} */ public final class BluetoothLeAudioCodecConfig { public final class BluetoothLeAudioCodecConfig implements Parcelable { // Add an entry for each source codec here. /** @hide */ Loading @@ -50,20 +52,221 @@ public final class BluetoothLeAudioCodecConfig { */ private static final int SOURCE_CODEC_TYPE_MAX = 1; /** @hide */ @IntDef(prefix = "CODEC_PRIORITY_", value = {CODEC_PRIORITY_DISABLED, CODEC_PRIORITY_DEFAULT, CODEC_PRIORITY_HIGHEST}) @Retention(RetentionPolicy.SOURCE) public @interface CodecPriority {} /** * Codec priority disabled. * Used to indicate that this codec is disabled and should not be used. */ public static final int CODEC_PRIORITY_DISABLED = -1; /** * Codec priority default. * Default value used for codec priority. */ public static final int CODEC_PRIORITY_DEFAULT = 0; /** * Codec priority highest. * Used to indicate the highest priority a codec can have. */ public static final int CODEC_PRIORITY_HIGHEST = 1000 * 1000; /** @hide */ @IntDef(prefix = "SAMPLE_RATE_", value = {SAMPLE_RATE_NONE, SAMPLE_RATE_8000, SAMPLE_RATE_16000, SAMPLE_RATE_24000, SAMPLE_RATE_32000, SAMPLE_RATE_44100, SAMPLE_RATE_48000}) @Retention(RetentionPolicy.SOURCE) public @interface SampleRate {} /** * Codec sample rate 0 Hz. Default value used for * codec sample rate. */ public static final int SAMPLE_RATE_NONE = 0; /** * Codec sample rate 8000 Hz. */ public static final int SAMPLE_RATE_8000 = 1; /** * Codec sample rate 16000 Hz. */ public static final int SAMPLE_RATE_16000 = 2; /** * Codec sample rate 24000 Hz. */ public static final int SAMPLE_RATE_24000 = 3; /** * Codec sample rate 32000 Hz. */ public static final int SAMPLE_RATE_32000 = 4; /** * Codec sample rate 44100 Hz. */ public static final int SAMPLE_RATE_44100 = 5; /** * Codec sample rate 48000 Hz. */ public static final int SAMPLE_RATE_48000 = 6; /** @hide */ @IntDef(prefix = "BITS_PER_SAMPLE_", value = {BITS_PER_SAMPLE_NONE, BITS_PER_SAMPLE_16, BITS_PER_SAMPLE_24, BITS_PER_SAMPLE_32}) @Retention(RetentionPolicy.SOURCE) public @interface BitsPerSample {} /** * Codec bits per sample 0. Default value of the codec * bits per sample. */ public static final int BITS_PER_SAMPLE_NONE = 0; /** * Codec bits per sample 16. */ public static final int BITS_PER_SAMPLE_16 = 1; /** * Codec bits per sample 24. */ public static final int BITS_PER_SAMPLE_24 = 2; /** * Codec bits per sample 32. */ public static final int BITS_PER_SAMPLE_32 = 3; /** @hide */ @IntDef(prefix = "CHANNEL_MODE_", value = {CHANNEL_MODE_NONE, CHANNEL_MODE_MONO, CHANNEL_MODE_STEREO}) @Retention(RetentionPolicy.SOURCE) public @interface ChannelMode {} /** * Codec channel mode NONE. Default value of the * codec channel mode. */ public static final int CHANNEL_MODE_NONE = 0; /** * Codec channel mode MONO. */ public static final int CHANNEL_MODE_MONO = 1; /** * Codec channel mode STEREO. */ public static final int CHANNEL_MODE_STEREO = 2; /** @hide */ @IntDef(prefix = "FRAME_DURATION_", value = {FRAME_DURATION_NONE, FRAME_DURATION_7500, FRAME_DURATION_10000}) @Retention(RetentionPolicy.SOURCE) public @interface FrameDuration {} /** * Frame duration 0. Default value of the frame duration. */ public static final int FRAME_DURATION_NONE = 0; /** * Frame duration 7500 us. */ public static final int FRAME_DURATION_7500 = 1; /** * Frame duration 10000 us. */ public static final int FRAME_DURATION_10000 = 2; private final @SourceCodecType int mCodecType; private final @CodecPriority int mCodecPriority; private final @SampleRate int mSampleRate; private final @BitsPerSample int mBitsPerSample; private final @ChannelMode int mChannelMode; private final @FrameDuration int mFrameDuration; private final int mOctetsPerFrame; /** * Creates a new BluetoothLeAudioCodecConfig. * * @param codecType the source codec type * @param codecPriority the priority of this codec * @param sampleRate the codec sample rate * @param bitsPerSample the bits per sample of this codec * @param channelMode the channel mode of this codec * @param frameDuration the frame duration of this codec * @param octetsPerFrame the octets per frame of this codec */ private BluetoothLeAudioCodecConfig(@SourceCodecType int codecType) { private BluetoothLeAudioCodecConfig(@SourceCodecType int codecType, @CodecPriority int codecPriority, @SampleRate int sampleRate, @BitsPerSample int bitsPerSample, @ChannelMode int channelMode, @FrameDuration int frameDuration, int octetsPerFrame) { mCodecType = codecType; mCodecPriority = codecPriority; mSampleRate = sampleRate; mBitsPerSample = bitsPerSample; mChannelMode = channelMode; mFrameDuration = frameDuration; mOctetsPerFrame = octetsPerFrame; } @Override public int describeContents() { return 0; } /** * {@link Parcelable.Creator} interface implementation. */ public static final @android.annotation.NonNull Parcelable.Creator<BluetoothLeAudioCodecConfig> CREATOR = new Parcelable.Creator<BluetoothLeAudioCodecConfig>() { public BluetoothLeAudioCodecConfig createFromParcel(Parcel in) { int codecType = in.readInt(); int codecPriority = in.readInt(); int sampleRate = in.readInt(); int bitsPerSample = in.readInt(); int channelMode = in.readInt(); int frameDuration = in.readInt(); int octetsPerFrame = in.readInt(); return new BluetoothLeAudioCodecConfig(codecType, codecPriority, sampleRate, bitsPerSample, channelMode, frameDuration, octetsPerFrame); } public BluetoothLeAudioCodecConfig[] newArray(int size) { return new BluetoothLeAudioCodecConfig[size]; } }; @Override public void writeToParcel(@NonNull Parcel out, int flags) { out.writeInt(mCodecType); out.writeInt(mCodecPriority); out.writeInt(mSampleRate); out.writeInt(mBitsPerSample); out.writeInt(mChannelMode); out.writeInt(mFrameDuration); out.writeInt(mOctetsPerFrame); } @Override public String toString() { return "{codecName:" + getCodecName() + "}"; return "{codecName:" + getCodecName() + ",mCodecType:" + mCodecType + ",mCodecPriority:" + mCodecPriority + ",mSampleRate:" + mSampleRate + ",mBitsPerSample:" + mBitsPerSample + ",mChannelMode:" + mChannelMode + ",mFrameDuration:" + mFrameDuration + ",mOctetsPerFrame:" + mOctetsPerFrame + "}"; } /** Loading Loading @@ -99,6 +302,50 @@ public final class BluetoothLeAudioCodecConfig { return "UNKNOWN CODEC(" + mCodecType + ")"; } /** * Returns the codec selection priority. * <p>The codec selection priority is relative to other codecs: larger value * means higher priority. */ public @CodecPriority int getCodecPriority() { return mCodecPriority; } /** * Returns the codec sample rate. */ public @SampleRate int getSampleRate() { return mSampleRate; } /** * Returns the codec bits per sample. */ public @BitsPerSample int getBitsPerSample() { return mBitsPerSample; } /** * Returns the codec channel mode. */ public @ChannelMode int getChannelMode() { return mChannelMode; } /** * Returns the frame duration. */ public @ChannelMode int getFrameDuration() { return mFrameDuration; } /** * Returns the octets per frame */ public @ChannelMode int getOctetsPerFrame() { return mOctetsPerFrame; } /** * Builder for {@link BluetoothLeAudioCodecConfig}. * <p> By default, the codec type will be set to Loading @@ -106,9 +353,27 @@ public final class BluetoothLeAudioCodecConfig { */ public static final class Builder { private int mCodecType = BluetoothLeAudioCodecConfig.SOURCE_CODEC_TYPE_INVALID; private int mCodecPriority = BluetoothLeAudioCodecConfig.CODEC_PRIORITY_DEFAULT; private int mSampleRate = BluetoothLeAudioCodecConfig.SAMPLE_RATE_NONE; private int mBitsPerSample = BluetoothLeAudioCodecConfig.BITS_PER_SAMPLE_NONE; private int mChannelMode = BluetoothLeAudioCodecConfig.CHANNEL_MODE_NONE; private int mFrameDuration = BluetoothLeAudioCodecConfig.FRAME_DURATION_NONE; private int mOctetsPerFrame = 0; public Builder() {} public Builder(@NonNull BluetoothLeAudioCodecConfig config) { mCodecType = config.getCodecType(); mCodecPriority = config.getCodecPriority(); mSampleRate = config.getSampleRate(); mBitsPerSample = config.getBitsPerSample(); mChannelMode = config.getChannelMode(); mFrameDuration = config.getFrameDuration(); mOctetsPerFrame = config.getOctetsPerFrame(); } /** * Set codec type for Bluetooth codec config. * Set codec type for Bluetooth LE audio codec config. * * @param codecType of this codec * @return the same Builder instance Loading @@ -118,12 +383,79 @@ public final class BluetoothLeAudioCodecConfig { return this; } /** * Set codec priority for Bluetooth LE audio codec config. * * @param codecPriority of this codec * @return the same Builder instance */ public @NonNull Builder setCodecPriority(@CodecPriority int codecPriority) { mCodecPriority = codecPriority; return this; } /** * Set sample rate for Bluetooth LE audio codec config. * * @param sampleRate of this codec * @return the same Builder instance */ public @NonNull Builder setSampleRate(@SampleRate int sampleRate) { mSampleRate = sampleRate; return this; } /** * Set the bits per sample for LE audio codec config. * * @param bitsPerSample of this codec * @return the same Builder instance */ public @NonNull Builder setBitsPerSample(@BitsPerSample int bitsPerSample) { mBitsPerSample = bitsPerSample; return this; } /** * Set the channel mode for Bluetooth LE audio codec config. * * @param channelMode of this codec * @return the same Builder instance */ public @NonNull Builder setChannelMode(@ChannelMode int channelMode) { mChannelMode = channelMode; return this; } /** * Set the frame duration for Bluetooth LE audio codec config. * * @param frameDuration of this codec * @return the same Builder instance */ public @NonNull Builder setFrameDuration(@FrameDuration int frameDuration) { mFrameDuration = frameDuration; return this; } /** * Set the octets per frame for Bluetooth LE audio codec config. * * @param octetsPerFrame of this codec * @return the same Builder instance */ public @NonNull Builder setOctetsPerFrame(int octetsPerFrame) { mOctetsPerFrame = octetsPerFrame; return this; } /** * Build {@link BluetoothLeAudioCodecConfig}. * @return new BluetoothLeAudioCodecConfig built */ public @NonNull BluetoothLeAudioCodecConfig build() { return new BluetoothLeAudioCodecConfig(mCodecType); return new BluetoothLeAudioCodecConfig(mCodecType, mCodecPriority, mSampleRate, mBitsPerSample, mChannelMode, mFrameDuration, mOctetsPerFrame); } } } Loading
android/app/jni/com_android_bluetooth_le_audio.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -131,8 +131,8 @@ static LeAudioClientCallbacksImpl sLeAudioClientCallbacks; static void classInitNative(JNIEnv* env, jclass clazz) { jclass jniBluetoothLeAudioCodecConfigClass = env->FindClass("android/bluetooth/BluetoothLeAudioCodecConfig"); android_bluetooth_BluetoothLeAudioCodecConfig.constructor = env->GetMethodID(jniBluetoothLeAudioCodecConfigClass, "<init>", "(I)V"); android_bluetooth_BluetoothLeAudioCodecConfig.constructor = env->GetMethodID( jniBluetoothLeAudioCodecConfigClass, "<init>", "(IIIIIII)V"); android_bluetooth_BluetoothLeAudioCodecConfig.getCodecType = env->GetMethodID( jniBluetoothLeAudioCodecConfigClass, "getCodecType", "()I"); Loading
framework/java/android/bluetooth/BluetoothLeAudioCodecConfig.java +337 −5 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ package android.bluetooth; import android.annotation.IntDef; import android.annotation.NonNull; import android.os.Parcel; import android.os.Parcelable; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; Loading @@ -30,7 +32,7 @@ import java.lang.annotation.RetentionPolicy; * * {@see BluetoothLeAudioCodecConfig} */ public final class BluetoothLeAudioCodecConfig { public final class BluetoothLeAudioCodecConfig implements Parcelable { // Add an entry for each source codec here. /** @hide */ Loading @@ -50,20 +52,221 @@ public final class BluetoothLeAudioCodecConfig { */ private static final int SOURCE_CODEC_TYPE_MAX = 1; /** @hide */ @IntDef(prefix = "CODEC_PRIORITY_", value = {CODEC_PRIORITY_DISABLED, CODEC_PRIORITY_DEFAULT, CODEC_PRIORITY_HIGHEST}) @Retention(RetentionPolicy.SOURCE) public @interface CodecPriority {} /** * Codec priority disabled. * Used to indicate that this codec is disabled and should not be used. */ public static final int CODEC_PRIORITY_DISABLED = -1; /** * Codec priority default. * Default value used for codec priority. */ public static final int CODEC_PRIORITY_DEFAULT = 0; /** * Codec priority highest. * Used to indicate the highest priority a codec can have. */ public static final int CODEC_PRIORITY_HIGHEST = 1000 * 1000; /** @hide */ @IntDef(prefix = "SAMPLE_RATE_", value = {SAMPLE_RATE_NONE, SAMPLE_RATE_8000, SAMPLE_RATE_16000, SAMPLE_RATE_24000, SAMPLE_RATE_32000, SAMPLE_RATE_44100, SAMPLE_RATE_48000}) @Retention(RetentionPolicy.SOURCE) public @interface SampleRate {} /** * Codec sample rate 0 Hz. Default value used for * codec sample rate. */ public static final int SAMPLE_RATE_NONE = 0; /** * Codec sample rate 8000 Hz. */ public static final int SAMPLE_RATE_8000 = 1; /** * Codec sample rate 16000 Hz. */ public static final int SAMPLE_RATE_16000 = 2; /** * Codec sample rate 24000 Hz. */ public static final int SAMPLE_RATE_24000 = 3; /** * Codec sample rate 32000 Hz. */ public static final int SAMPLE_RATE_32000 = 4; /** * Codec sample rate 44100 Hz. */ public static final int SAMPLE_RATE_44100 = 5; /** * Codec sample rate 48000 Hz. */ public static final int SAMPLE_RATE_48000 = 6; /** @hide */ @IntDef(prefix = "BITS_PER_SAMPLE_", value = {BITS_PER_SAMPLE_NONE, BITS_PER_SAMPLE_16, BITS_PER_SAMPLE_24, BITS_PER_SAMPLE_32}) @Retention(RetentionPolicy.SOURCE) public @interface BitsPerSample {} /** * Codec bits per sample 0. Default value of the codec * bits per sample. */ public static final int BITS_PER_SAMPLE_NONE = 0; /** * Codec bits per sample 16. */ public static final int BITS_PER_SAMPLE_16 = 1; /** * Codec bits per sample 24. */ public static final int BITS_PER_SAMPLE_24 = 2; /** * Codec bits per sample 32. */ public static final int BITS_PER_SAMPLE_32 = 3; /** @hide */ @IntDef(prefix = "CHANNEL_MODE_", value = {CHANNEL_MODE_NONE, CHANNEL_MODE_MONO, CHANNEL_MODE_STEREO}) @Retention(RetentionPolicy.SOURCE) public @interface ChannelMode {} /** * Codec channel mode NONE. Default value of the * codec channel mode. */ public static final int CHANNEL_MODE_NONE = 0; /** * Codec channel mode MONO. */ public static final int CHANNEL_MODE_MONO = 1; /** * Codec channel mode STEREO. */ public static final int CHANNEL_MODE_STEREO = 2; /** @hide */ @IntDef(prefix = "FRAME_DURATION_", value = {FRAME_DURATION_NONE, FRAME_DURATION_7500, FRAME_DURATION_10000}) @Retention(RetentionPolicy.SOURCE) public @interface FrameDuration {} /** * Frame duration 0. Default value of the frame duration. */ public static final int FRAME_DURATION_NONE = 0; /** * Frame duration 7500 us. */ public static final int FRAME_DURATION_7500 = 1; /** * Frame duration 10000 us. */ public static final int FRAME_DURATION_10000 = 2; private final @SourceCodecType int mCodecType; private final @CodecPriority int mCodecPriority; private final @SampleRate int mSampleRate; private final @BitsPerSample int mBitsPerSample; private final @ChannelMode int mChannelMode; private final @FrameDuration int mFrameDuration; private final int mOctetsPerFrame; /** * Creates a new BluetoothLeAudioCodecConfig. * * @param codecType the source codec type * @param codecPriority the priority of this codec * @param sampleRate the codec sample rate * @param bitsPerSample the bits per sample of this codec * @param channelMode the channel mode of this codec * @param frameDuration the frame duration of this codec * @param octetsPerFrame the octets per frame of this codec */ private BluetoothLeAudioCodecConfig(@SourceCodecType int codecType) { private BluetoothLeAudioCodecConfig(@SourceCodecType int codecType, @CodecPriority int codecPriority, @SampleRate int sampleRate, @BitsPerSample int bitsPerSample, @ChannelMode int channelMode, @FrameDuration int frameDuration, int octetsPerFrame) { mCodecType = codecType; mCodecPriority = codecPriority; mSampleRate = sampleRate; mBitsPerSample = bitsPerSample; mChannelMode = channelMode; mFrameDuration = frameDuration; mOctetsPerFrame = octetsPerFrame; } @Override public int describeContents() { return 0; } /** * {@link Parcelable.Creator} interface implementation. */ public static final @android.annotation.NonNull Parcelable.Creator<BluetoothLeAudioCodecConfig> CREATOR = new Parcelable.Creator<BluetoothLeAudioCodecConfig>() { public BluetoothLeAudioCodecConfig createFromParcel(Parcel in) { int codecType = in.readInt(); int codecPriority = in.readInt(); int sampleRate = in.readInt(); int bitsPerSample = in.readInt(); int channelMode = in.readInt(); int frameDuration = in.readInt(); int octetsPerFrame = in.readInt(); return new BluetoothLeAudioCodecConfig(codecType, codecPriority, sampleRate, bitsPerSample, channelMode, frameDuration, octetsPerFrame); } public BluetoothLeAudioCodecConfig[] newArray(int size) { return new BluetoothLeAudioCodecConfig[size]; } }; @Override public void writeToParcel(@NonNull Parcel out, int flags) { out.writeInt(mCodecType); out.writeInt(mCodecPriority); out.writeInt(mSampleRate); out.writeInt(mBitsPerSample); out.writeInt(mChannelMode); out.writeInt(mFrameDuration); out.writeInt(mOctetsPerFrame); } @Override public String toString() { return "{codecName:" + getCodecName() + "}"; return "{codecName:" + getCodecName() + ",mCodecType:" + mCodecType + ",mCodecPriority:" + mCodecPriority + ",mSampleRate:" + mSampleRate + ",mBitsPerSample:" + mBitsPerSample + ",mChannelMode:" + mChannelMode + ",mFrameDuration:" + mFrameDuration + ",mOctetsPerFrame:" + mOctetsPerFrame + "}"; } /** Loading Loading @@ -99,6 +302,50 @@ public final class BluetoothLeAudioCodecConfig { return "UNKNOWN CODEC(" + mCodecType + ")"; } /** * Returns the codec selection priority. * <p>The codec selection priority is relative to other codecs: larger value * means higher priority. */ public @CodecPriority int getCodecPriority() { return mCodecPriority; } /** * Returns the codec sample rate. */ public @SampleRate int getSampleRate() { return mSampleRate; } /** * Returns the codec bits per sample. */ public @BitsPerSample int getBitsPerSample() { return mBitsPerSample; } /** * Returns the codec channel mode. */ public @ChannelMode int getChannelMode() { return mChannelMode; } /** * Returns the frame duration. */ public @ChannelMode int getFrameDuration() { return mFrameDuration; } /** * Returns the octets per frame */ public @ChannelMode int getOctetsPerFrame() { return mOctetsPerFrame; } /** * Builder for {@link BluetoothLeAudioCodecConfig}. * <p> By default, the codec type will be set to Loading @@ -106,9 +353,27 @@ public final class BluetoothLeAudioCodecConfig { */ public static final class Builder { private int mCodecType = BluetoothLeAudioCodecConfig.SOURCE_CODEC_TYPE_INVALID; private int mCodecPriority = BluetoothLeAudioCodecConfig.CODEC_PRIORITY_DEFAULT; private int mSampleRate = BluetoothLeAudioCodecConfig.SAMPLE_RATE_NONE; private int mBitsPerSample = BluetoothLeAudioCodecConfig.BITS_PER_SAMPLE_NONE; private int mChannelMode = BluetoothLeAudioCodecConfig.CHANNEL_MODE_NONE; private int mFrameDuration = BluetoothLeAudioCodecConfig.FRAME_DURATION_NONE; private int mOctetsPerFrame = 0; public Builder() {} public Builder(@NonNull BluetoothLeAudioCodecConfig config) { mCodecType = config.getCodecType(); mCodecPriority = config.getCodecPriority(); mSampleRate = config.getSampleRate(); mBitsPerSample = config.getBitsPerSample(); mChannelMode = config.getChannelMode(); mFrameDuration = config.getFrameDuration(); mOctetsPerFrame = config.getOctetsPerFrame(); } /** * Set codec type for Bluetooth codec config. * Set codec type for Bluetooth LE audio codec config. * * @param codecType of this codec * @return the same Builder instance Loading @@ -118,12 +383,79 @@ public final class BluetoothLeAudioCodecConfig { return this; } /** * Set codec priority for Bluetooth LE audio codec config. * * @param codecPriority of this codec * @return the same Builder instance */ public @NonNull Builder setCodecPriority(@CodecPriority int codecPriority) { mCodecPriority = codecPriority; return this; } /** * Set sample rate for Bluetooth LE audio codec config. * * @param sampleRate of this codec * @return the same Builder instance */ public @NonNull Builder setSampleRate(@SampleRate int sampleRate) { mSampleRate = sampleRate; return this; } /** * Set the bits per sample for LE audio codec config. * * @param bitsPerSample of this codec * @return the same Builder instance */ public @NonNull Builder setBitsPerSample(@BitsPerSample int bitsPerSample) { mBitsPerSample = bitsPerSample; return this; } /** * Set the channel mode for Bluetooth LE audio codec config. * * @param channelMode of this codec * @return the same Builder instance */ public @NonNull Builder setChannelMode(@ChannelMode int channelMode) { mChannelMode = channelMode; return this; } /** * Set the frame duration for Bluetooth LE audio codec config. * * @param frameDuration of this codec * @return the same Builder instance */ public @NonNull Builder setFrameDuration(@FrameDuration int frameDuration) { mFrameDuration = frameDuration; return this; } /** * Set the octets per frame for Bluetooth LE audio codec config. * * @param octetsPerFrame of this codec * @return the same Builder instance */ public @NonNull Builder setOctetsPerFrame(int octetsPerFrame) { mOctetsPerFrame = octetsPerFrame; return this; } /** * Build {@link BluetoothLeAudioCodecConfig}. * @return new BluetoothLeAudioCodecConfig built */ public @NonNull BluetoothLeAudioCodecConfig build() { return new BluetoothLeAudioCodecConfig(mCodecType); return new BluetoothLeAudioCodecConfig(mCodecType, mCodecPriority, mSampleRate, mBitsPerSample, mChannelMode, mFrameDuration, mOctetsPerFrame); } } }