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

Commit 9cd13df0 authored by Jakub Pawlowski's avatar Jakub Pawlowski Committed by Automerger Merge Worker
Browse files

Add Hardware Offloaded provider parameters for LC3 am: e5611aa5 am:...

Add Hardware Offloaded provider parameters for LC3 am: e5611aa5 am: 3d79c11c am: faf5896a am: 7fc89deb

Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/1490526

Change-Id: Ie5c2b1b5e5ac4f450c2cdebf409f1b38b790fef4
parents b240eb98 7fc89deb
Loading
Loading
Loading
Loading
+57 −9
Original line number Diff line number Diff line
@@ -16,13 +16,14 @@

package android.hardware.bluetooth.audio@2.1;

import @2.0::PcmParameters;
import @2.0::SessionType;
import @2.0::SampleRate;
import @2.0::ChannelMode;
import @2.0::BitsPerSample;
import @2.0::CodecConfiguration;
import @2.0::ChannelMode;
import @2.0::CodecCapabilities;
import @2.0::CodecConfiguration;
import @2.0::CodecType;
import @2.0::PcmParameters;
import @2.0::SampleRate;
import @2.0::SessionType;

enum SessionType : @2.0::SessionType {
    /** Used when encoded by Bluetooth Stack and streaming to LE Audio device */
@@ -35,6 +36,10 @@ enum SessionType : @2.0::SessionType {
    LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH,
};

enum CodecType : @2.0::CodecType {
    LC3 = 0x20,
};

enum SampleRate : @2.0::SampleRate {
    RATE_8000 = 0x100,
    RATE_32000 = 0x200,
@@ -49,14 +54,57 @@ struct PcmParameters {
    uint32_t dataIntervalUs;
};

/** Used to configure either a Hardware or Software Encoding session based on session type */
safe_union AudioConfiguration {
    PcmParameters pcmConfig;
    CodecConfiguration codecConfig;
enum Lc3FrameDuration : uint8_t {
    DURATION_10000US = 0x00,
    DURATION_7500US = 0x01,
};

/**
 * Used for Hardware Encoding/Decoding LC3 codec parameters.
 */
struct Lc3Parameters {
    /* PCM is Input for encoder, Output for decoder */
    BitsPerSample pcmBitDepth;

    /* codec-specific parameters */
    SampleRate samplingFrequency;
    Lc3FrameDuration frameDuration;
    /* length in octets of a codec frame */
    uint32_t octetsPerFrame;
    /* Number of blocks of codec frames per single SDU (Service Data Unit) */
    uint8_t blocksPerSdu;
};

/**
 * Used to specify the capabilities of the LC3 codecs supported by Hardware Encoding.
 */
struct Lc3CodecCapabilities {
    /* This is bitfield, if bit N is set, HW Offloader supports N+1 channels at the same time.
     * Example: 0x27 = 0b00100111: One, two, three or six channels supported.*/
    uint8_t supportedChannelCounts;
    Lc3Parameters lc3Capabilities;
};

/** Used to specify the capabilities of the different session types */
safe_union AudioCapabilities {
    PcmParameters pcmCapabilities;
    CodecCapabilities codecCapabilities;
    Lc3CodecCapabilities leAudioCapabilities;
};

/**
 * Used to configure a LC3 Hardware Encoding session.
 */
struct Lc3CodecConfiguration {
    /* This is also bitfield, specifying how the channels are ordered in the outgoing media packet.
     * Bit meaning is defined in Bluetooth Assigned Numbers. */
    uint32_t audioChannelAllocation;
    Lc3Parameters lc3Config;
};

/** Used to configure either a Hardware or Software Encoding session based on session type */
safe_union AudioConfiguration {
    PcmParameters pcmConfig;
    CodecConfiguration codecConfig;
    Lc3CodecConfiguration leAudioCodecConfig;
};
 No newline at end of file