Effect AIDL: Refactor effect capability with Range am: 376dbd96d3 am: 31280e9f2c

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

Change-Id: I90ee6efdacd73f6517fa013cb65aef692ded4b32
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Shunkai Yao
2023-02-15 01:27:13 +00:00
committed by Automerger Merge Worker
35 changed files with 416 additions and 640 deletions

View File

@@ -42,10 +42,4 @@ union AcousticEchoCanceler {
int vendorExtensionTag;
android.hardware.audio.effect.AcousticEchoCanceler.Tag commonTag;
}
@VintfStability
parcelable Capability {
ParcelableHolder extension;
int maxEchoDelayUs;
boolean supportMobileMode;
}
}

View File

@@ -43,12 +43,6 @@ union AutomaticGainControl {
int vendorExtensionTag;
android.hardware.audio.effect.AutomaticGainControl.Tag commonTag;
}
@VintfStability
parcelable Capability {
ParcelableHolder extension;
int maxFixedDigitalGainMb;
int maxSaturationMarginMb;
}
@Backing(type="int") @VintfStability
enum LevelEstimator {
RMS = 0,

View File

@@ -43,9 +43,4 @@ union AutomaticGainControlV1 {
int vendorExtensionTag;
android.hardware.audio.effect.AutomaticGainControlV1.Tag commonTag;
}
@VintfStability
parcelable Capability {
ParcelableHolder extension;
android.hardware.audio.effect.Range[] ranges;
}
}

View File

@@ -41,10 +41,4 @@ union BassBoost {
int vendorExtensionTag;
android.hardware.audio.effect.BassBoost.Tag commonTag;
}
@VintfStability
parcelable Capability {
ParcelableHolder extension;
int maxStrengthPm;
boolean strengthSupported;
}
}

View File

@@ -33,20 +33,7 @@
package android.hardware.audio.effect;
@VintfStability
union Capability {
parcelable Capability {
android.hardware.audio.effect.VendorExtension vendorExtension;
android.hardware.audio.effect.AcousticEchoCanceler.Capability acousticEchoCanceler;
android.hardware.audio.effect.AutomaticGainControl.Capability automaticGainControl;
android.hardware.audio.effect.BassBoost.Capability bassBoost;
android.hardware.audio.effect.Downmix.Capability downmix;
android.hardware.audio.effect.DynamicsProcessing.Capability dynamicsProcessing;
android.hardware.audio.effect.EnvironmentalReverb.Capability environmentalReverb;
android.hardware.audio.effect.Equalizer.Capability equalizer;
android.hardware.audio.effect.HapticGenerator.Capability hapticGenerator;
android.hardware.audio.effect.LoudnessEnhancer.Capability loudnessEnhancer;
android.hardware.audio.effect.NoiseSuppression.Capability noiseSuppression;
android.hardware.audio.effect.PresetReverb.Capability presetReverb;
android.hardware.audio.effect.Virtualizer.Capability virtualizer;
android.hardware.audio.effect.Visualizer.Capability visualizer;
android.hardware.audio.effect.Volume.Capability volume;
android.hardware.audio.effect.Range range;
}

View File

@@ -42,10 +42,6 @@ union Downmix {
android.hardware.audio.effect.Downmix.Tag commonTag;
}
@VintfStability
parcelable Capability {
ParcelableHolder extension;
}
@VintfStability
enum Type {
STRIP,
FOLD,

View File

@@ -49,12 +49,6 @@ union DynamicsProcessing {
int vendorExtensionTag;
android.hardware.audio.effect.DynamicsProcessing.Tag commonTag;
}
@VintfStability
parcelable Capability {
ParcelableHolder extension;
float minCutOffFreq;
float maxCutOffFreq;
}
enum ResolutionPreference {
FAVOR_FREQUENCY_RESOLUTION,
FAVOR_TIME_RESOLUTION,

View File

@@ -49,20 +49,4 @@ union EnvironmentalReverb {
int vendorExtensionTag;
android.hardware.audio.effect.EnvironmentalReverb.Tag commonTag;
}
@VintfStability
parcelable Capability {
android.hardware.audio.effect.VendorExtension extension;
int minRoomLevelMb;
int maxRoomLevelMb;
int minRoomHfLevelMb;
int maxRoomHfLevelMb;
int maxDecayTimeMs;
int minDecayHfRatioPm;
int maxDecayHfRatioPm;
int minLevelMb;
int maxLevelMb;
int maxDelayMs;
int maxDiffusionPm;
int maxDensityPm;
}
}

View File

@@ -38,18 +38,14 @@ union Equalizer {
android.hardware.audio.effect.Equalizer.BandLevel[] bandLevels;
int preset;
int[] centerFreqMh;
android.hardware.audio.effect.Equalizer.BandFrequency[] bandFrequencies;
android.hardware.audio.effect.Equalizer.Preset[] presets;
@VintfStability
union Id {
int vendorExtensionTag;
android.hardware.audio.effect.Equalizer.Tag commonTag;
}
@VintfStability
parcelable Capability {
ParcelableHolder extension;
android.hardware.audio.effect.Equalizer.BandFrequency[] bandFrequencies;
android.hardware.audio.effect.Equalizer.Preset[] presets;
}
@VintfStability
parcelable BandLevel {
int index;
int levelMb;

View File

@@ -42,10 +42,6 @@ union HapticGenerator {
int vendorExtensionTag;
android.hardware.audio.effect.HapticGenerator.Tag commonTag;
}
@VintfStability
parcelable Capability {
android.hardware.audio.effect.VendorExtension extension;
}
@Backing(type="int") @VintfStability
enum VibratorScale {
MUTE = (-100) /* -100 */,

View File

@@ -41,8 +41,4 @@ union LoudnessEnhancer {
int vendorExtensionTag;
android.hardware.audio.effect.LoudnessEnhancer.Tag commonTag;
}
@VintfStability
parcelable Capability {
android.hardware.audio.effect.VendorExtension extension;
}
}

View File

@@ -42,10 +42,6 @@ union NoiseSuppression {
int vendorExtensionTag;
android.hardware.audio.effect.NoiseSuppression.Tag commonTag;
}
@VintfStability
parcelable Capability {
ParcelableHolder extension;
}
@Backing(type="int") @VintfStability
enum Level {
LOW,

View File

@@ -35,6 +35,7 @@ package android.hardware.audio.effect;
@VintfStability
union PresetReverb {
android.hardware.audio.effect.VendorExtension vendor;
android.hardware.audio.effect.PresetReverb.Presets[] supportedPresets;
android.hardware.audio.effect.PresetReverb.Presets preset;
@Backing(type="int") @VintfStability
enum Presets {
@@ -51,9 +52,4 @@ union PresetReverb {
int vendorExtensionTag;
android.hardware.audio.effect.PresetReverb.Tag commonTag;
}
@VintfStability
parcelable Capability {
android.hardware.audio.effect.VendorExtension extension;
android.hardware.audio.effect.PresetReverb.Presets[] supportedPresets;
}
}

View File

@@ -33,34 +33,101 @@
package android.hardware.audio.effect;
@VintfStability
parcelable Range {
int tag;
android.hardware.audio.effect.Range.Types types;
union Range {
android.hardware.audio.effect.Range.VendorExtensionRange[] vendorExtension = {};
android.hardware.audio.effect.Range.AcousticEchoCancelerRange[] acousticEchoCanceler;
android.hardware.audio.effect.Range.AutomaticGainControlRange[] automaticGainControl;
android.hardware.audio.effect.Range.AutomaticGainControlV1Range[] automaticGainControlV1;
android.hardware.audio.effect.Range.BassBoostRange[] bassBoost;
android.hardware.audio.effect.Range.DownmixRange[] downmix;
android.hardware.audio.effect.Range.DynamicsProcessingRange[] dynamicsProcessing;
android.hardware.audio.effect.Range.EnvironmentalReverbRange[] environmentalReverb;
android.hardware.audio.effect.Range.EqualizerRange[] equalizer;
android.hardware.audio.effect.Range.HapticGeneratorRange[] hapticGenerator;
android.hardware.audio.effect.Range.LoudnessEnhancerRange[] loudnessEnhancer;
android.hardware.audio.effect.Range.NoiseSuppressionRange[] noiseSuppression;
android.hardware.audio.effect.Range.PresetReverbRange[] presetReverb;
android.hardware.audio.effect.Range.VirtualizerRange[] virtualizer;
android.hardware.audio.effect.Range.VisualizerRange[] visualizer;
android.hardware.audio.effect.Range.VolumeRange[] volume;
@VintfStability
parcelable Int {
int min;
int max;
parcelable AcousticEchoCancelerRange {
android.hardware.audio.effect.AcousticEchoCanceler min;
android.hardware.audio.effect.AcousticEchoCanceler max;
}
@VintfStability
parcelable Float {
float min;
float max;
parcelable AutomaticGainControlRange {
android.hardware.audio.effect.AutomaticGainControl min;
android.hardware.audio.effect.AutomaticGainControl max;
}
@VintfStability
parcelable Long {
long min;
long max;
parcelable AutomaticGainControlV1Range {
android.hardware.audio.effect.AutomaticGainControlV1 min;
android.hardware.audio.effect.AutomaticGainControlV1 max;
}
@VintfStability
parcelable Byte {
byte min;
byte max;
parcelable BassBoostRange {
android.hardware.audio.effect.BassBoost min;
android.hardware.audio.effect.BassBoost max;
}
@VintfStability
union Types {
android.hardware.audio.effect.Range.Int rangeInt;
android.hardware.audio.effect.Range.Float rangeFloat;
android.hardware.audio.effect.Range.Long rangeLong;
android.hardware.audio.effect.Range.Byte rangeByte;
parcelable DownmixRange {
android.hardware.audio.effect.Downmix min;
android.hardware.audio.effect.Downmix max;
}
@VintfStability
parcelable DynamicsProcessingRange {
android.hardware.audio.effect.DynamicsProcessing min;
android.hardware.audio.effect.DynamicsProcessing max;
}
@VintfStability
parcelable EnvironmentalReverbRange {
android.hardware.audio.effect.EnvironmentalReverb min;
android.hardware.audio.effect.EnvironmentalReverb max;
}
@VintfStability
parcelable EqualizerRange {
android.hardware.audio.effect.Equalizer min;
android.hardware.audio.effect.Equalizer max;
}
@VintfStability
parcelable HapticGeneratorRange {
android.hardware.audio.effect.HapticGenerator min;
android.hardware.audio.effect.HapticGenerator max;
}
@VintfStability
parcelable LoudnessEnhancerRange {
android.hardware.audio.effect.LoudnessEnhancer min;
android.hardware.audio.effect.LoudnessEnhancer max;
}
@VintfStability
parcelable NoiseSuppressionRange {
android.hardware.audio.effect.NoiseSuppression min;
android.hardware.audio.effect.NoiseSuppression max;
}
@VintfStability
parcelable PresetReverbRange {
android.hardware.audio.effect.PresetReverb min;
android.hardware.audio.effect.PresetReverb max;
}
@VintfStability
parcelable VendorExtensionRange {
android.hardware.audio.effect.VendorExtension min;
android.hardware.audio.effect.VendorExtension max;
}
@VintfStability
parcelable VirtualizerRange {
android.hardware.audio.effect.Virtualizer min;
android.hardware.audio.effect.Virtualizer max;
}
@VintfStability
parcelable VisualizerRange {
android.hardware.audio.effect.Visualizer min;
android.hardware.audio.effect.Visualizer max;
}
@VintfStability
parcelable VolumeRange {
android.hardware.audio.effect.Volume min;
android.hardware.audio.effect.Volume max;
}
}

View File

@@ -50,12 +50,6 @@ union Virtualizer {
android.media.audio.common.AudioDeviceDescription device;
}
@VintfStability
parcelable Capability {
android.hardware.audio.effect.VendorExtension extension;
int maxStrengthPm;
boolean strengthSupported;
}
@VintfStability
parcelable ChannelAngle {
int channel;
int azimuthDegree;

View File

@@ -36,30 +36,18 @@ package android.hardware.audio.effect;
union Visualizer {
android.hardware.audio.effect.Visualizer.Id id;
android.hardware.audio.effect.VendorExtension vendor;
android.hardware.audio.effect.Visualizer.GetOnlyParameters getOnlyParameters;
android.hardware.audio.effect.Visualizer.SetOnlyParameters setOnlyParameters;
android.hardware.audio.effect.Visualizer.Measurement measurement;
byte[] captureSampleBuffer;
int latencyMs;
int captureSamples;
android.hardware.audio.effect.Visualizer.ScalingMode scalingMode;
android.hardware.audio.effect.Visualizer.MeasurementMode measurementMode;
@VintfStability
union Id {
int vendorExtensionTag;
android.hardware.audio.effect.Visualizer.GetOnlyParameters.Tag getOnlyParamTag;
android.hardware.audio.effect.Visualizer.SetOnlyParameters.Tag setOnlyParamTag;
android.hardware.audio.effect.Visualizer.Tag commonTag;
}
@VintfStability
parcelable Capability {
android.hardware.audio.effect.VendorExtension extension;
int maxLatencyMs;
android.hardware.audio.effect.Visualizer.CaptureSamplesRange captureSampleRange;
}
@VintfStability
parcelable CaptureSamplesRange {
int min;
int max;
}
@VintfStability
enum ScalingMode {
NORMALIZED = 0,
AS_PLAYED,
@@ -70,17 +58,8 @@ union Visualizer {
PEAK_RMS,
}
@VintfStability
union GetOnlyParameters {
android.hardware.audio.effect.Visualizer.GetOnlyParameters.Measurement measurement;
byte[] captureSampleBuffer;
@VintfStability
parcelable Measurement {
int rms;
int peak;
}
}
@VintfStability
union SetOnlyParameters {
int latencyMs;
parcelable Measurement {
int rms;
int peak;
}
}

View File

@@ -42,10 +42,4 @@ union Volume {
int vendorExtensionTag;
android.hardware.audio.effect.Volume.Tag commonTag;
}
@VintfStability
parcelable Capability {
android.hardware.audio.effect.VendorExtension extension;
int minLevelDb;
int maxLevelDb;
}
}

View File

@@ -22,9 +22,9 @@ import android.hardware.audio.effect.VendorExtension;
* Acoustic Echo Canceler (AEC) is an audio pre-processor which removes the contribution of the
* signal received from the remote party from the captured audio signal.
*
* All parameters defined in union AcousticEchoCanceler must be gettable and settable. The
* capabilities defined in AcousticEchoCanceler.Capability can only acquired with
* IEffect.getDescriptor() and not settable.
* All parameter settings must be inside the range of Capability.Range.acousticEchoCanceler
* definition if the definition for the corresponding parameter tag exist. See more detals about
* Range in Range.aidl.
*/
@VintfStability
union AcousticEchoCanceler {
@@ -42,36 +42,21 @@ union AcousticEchoCanceler {
*/
VendorExtension vendor;
/**
* Capability supported by AEC implementation.
*/
@VintfStability
parcelable Capability {
/**
* AEC capability extension, vendor can use this extension in case existing capability
* definition not enough.
*/
ParcelableHolder extension;
/**
* Maximum AEC echo delay in microseconds supported.
*/
int maxEchoDelayUs;
/**
* If AEC mobile mode was supported by the AEC implementation.
*/
boolean supportMobileMode;
}
/**
* The AEC echo delay in microseconds.
* Must never be negative, and not larger than maxEchoDelayUs in capability.
*/
int echoDelayUs;
/**
* If AEC mobile mode enabled.
* Can only be false if AEC implementation indicate not support mobile mode by set
* supportMobileMode to false in capability.
* Indicate if the AEC mobile mode is enabled or not.
* If an effect implementation supports enabling and disabling mobileMode at runtime, it does
* not need to set the min and max range for mobileMode, or report the mobileMode min/max range
* as [false, true] in Range.AcousticEchoCancelerRange. If the effect implementation doesn't
* support mobileMode, it must report the mobileMode range as [false, false]. If the effect
* implementation supports mobileMode and cannot be disabled, it must report the mobileMode
* range as [true, true].
* If the effect implementation sets the range as invalid: [true, false], it indicates that
* mobileMode setParameter is not supported, and clients can only use getParameter to check if
* it's enabled or not.
*/
boolean mobileMode;
}

View File

@@ -24,9 +24,9 @@ import android.hardware.audio.effect.VendorExtension;
* so that the output signal level is virtually constant. AGC can be used by applications where the
* input signal dynamic range is not important but where a constant strong capture level is desired.
*
* All parameters defined in union AutomaticGainControl must be gettable and settable. The
* capabilities defined in AutomaticGainControl.Capability can only acquired with
* IEffect.getDescriptor() and not settable.
* All parameter settings must be inside the range of Capability.Range.automaticGainControl
* definition if the definition for the corresponding parameter tag exist. See more detals about
* Range in Range.aidl.
*/
@VintfStability
union AutomaticGainControl {
@@ -44,26 +44,6 @@ union AutomaticGainControl {
*/
VendorExtension vendor;
/**
* Capability supported by AutomaticGainControl implementation.
*/
@VintfStability
parcelable Capability {
/**
* AutomaticGainControl capability extension, vendor can use this extension in case existing
* capability definition not enough.
*/
ParcelableHolder extension;
/**
* Max fixed digital gain supported by AGC implementation in millibel.
*/
int maxFixedDigitalGainMb;
/**
* Max fixed saturation margin supported by AGC implementation in millibel.
*/
int maxSaturationMarginMb;
}
@VintfStability
@Backing(type="int")
enum LevelEstimator {
@@ -75,7 +55,6 @@ union AutomaticGainControl {
/**
* The AGC fixed digital gain in millibel.
* Must never be negative, and not larger than maxFixedDigitalGainMb in capability.
*/
int fixedDigitalGainMb;
/*
@@ -84,7 +63,6 @@ union AutomaticGainControl {
LevelEstimator levelEstimator;
/**
* The AGC saturation margin in millibel.
* Must never be negative, and not larger than maxSaturationMarginMb in capability.
*/
int saturationMarginMb;
}

View File

@@ -16,7 +16,6 @@
package android.hardware.audio.effect;
import android.hardware.audio.effect.Range;
import android.hardware.audio.effect.VendorExtension;
/**
@@ -25,9 +24,9 @@ import android.hardware.audio.effect.VendorExtension;
* so that the output signal level is virtually constant. AGC can be used by applications where the
* input signal dynamic range is not important but where a constant strong capture level is desired.
*
* All parameters defined in union AutomaticGainControlV1 must be gettable and settable. The
* capabilities defined in AutomaticGainControlV1.Capability can only acquired with
* IEffect.getDescriptor() and not settable.
* All parameter settings must be inside the range of Capability.Range.automaticGainControlV1
* definition if the definition for the corresponding parameter tag exist. See more detals about
* Range in Range.aidl.
*/
@VintfStability
union AutomaticGainControlV1 {
@@ -45,32 +44,14 @@ union AutomaticGainControlV1 {
*/
VendorExtension vendor;
/**
* Capability supported by AutomaticGainControlV1 implementation.
*/
@VintfStability
parcelable Capability {
/**
* AutomaticGainControlV1 capability extension, vendor can use this extension in case
* existing capability definition not enough.
*/
ParcelableHolder extension;
/**
* Supported range for parameters.
*/
Range[] ranges;
}
/**
* Target peak level (or envelope) of the AGC implementation in dBFs (dB relative to full
* scale).
* Must be in range of AutomaticGainControlV1.Capability.ranges with targetPeakLevelDbFs tag.
*/
int targetPeakLevelDbFs;
/*
* Sets the maximum gain the digital compression stage may apply, in dB. A higher number
* corresponds to greater compression, while a value of 0 will leave the signal uncompressed.
* Must be in range of AutomaticGainControlV1.Capability.ranges with maxCompressionGainDb tag.
*/
int maxCompressionGainDb;
/**

View File

@@ -22,8 +22,8 @@ import android.hardware.audio.effect.VendorExtension;
* Bass boost is an audio effect to boost or amplify low frequencies of the sound. It is comparable
* to a simple equalizer but limited to one band amplification in the low frequency range.
*
* All parameters defined in union BassBoost must be gettable and settable. The capabilities defined
* in BassBoost.Capability can only acquired with IEffect.getDescriptor() and not settable.
* All parameter settings must be inside the range of Capability.Range.bassBoost definition if the
* definition for the corresponding parameter tag exist. See more detals about Range in Range.aidl.
*/
@VintfStability
union BassBoost {
@@ -41,36 +41,12 @@ union BassBoost {
*/
VendorExtension vendor;
/**
* Capability supported by BassBoost implementation.
*/
@VintfStability
parcelable Capability {
/**
* BassBoost capability extension, vendor can use this extension in case existing capability
* definition not enough.
*/
ParcelableHolder extension;
/**
* Maximum possible per mille strength.
*/
int maxStrengthPm;
/**
* Indicates whether setting strength is supported. False value indicates only one strength
* is supported and setParameter() method will return EX_ILLEGAL_ARGUMENT.
*/
boolean strengthSupported;
}
/**
* The per mille strength of the bass boost effect.
*
* If the implementation does not support per mille accuracy for setting the strength, it is
* allowed to round the given strength to the nearest supported value. In this case {@link
* #IEffect.getParameter()} method should return the rounded value that was actually set.
*
* The value of the strength must be non-negative and not exceed the value specified by
* the 'maxStrengthPm' capability.
*/
int strengthPm;
}

View File

@@ -16,21 +16,8 @@
package android.hardware.audio.effect;
import android.hardware.audio.effect.AcousticEchoCanceler;
import android.hardware.audio.effect.AutomaticGainControl;
import android.hardware.audio.effect.BassBoost;
import android.hardware.audio.effect.Downmix;
import android.hardware.audio.effect.DynamicsProcessing;
import android.hardware.audio.effect.EnvironmentalReverb;
import android.hardware.audio.effect.Equalizer;
import android.hardware.audio.effect.HapticGenerator;
import android.hardware.audio.effect.LoudnessEnhancer;
import android.hardware.audio.effect.NoiseSuppression;
import android.hardware.audio.effect.PresetReverb;
import android.hardware.audio.effect.Range;
import android.hardware.audio.effect.VendorExtension;
import android.hardware.audio.effect.Virtualizer;
import android.hardware.audio.effect.Visualizer;
import android.hardware.audio.effect.Volume;
/**
* Effect capability definitions.
@@ -38,32 +25,19 @@ import android.hardware.audio.effect.Volume;
* not meant to change at runtime.
*/
@VintfStability
union Capability {
parcelable Capability {
/**
* Vendor defined effect capability.
* This extension can be used when vendor have a new effect implementated and need
* This extension can be used when vendor has a new effect implementation and needs
* capability definition for this new type of effect.
* If vendor want to extend existing effect capabilities, it is recommended to expose though
* the ParcelableHolder in each effect capability definition. For example:
* Equalizer.Capability.extension.
* If vendor want to extend existing effect capabilities, it is recommended to expose through
* the ParcelableHolder in each effect definition. For example: Equalizer.vendorExtension. And
* define an appropriate Range for the extension.
*/
VendorExtension vendorExtension;
/**
* Effect capabilities.
* Supported range for parameters. See Range.aidl.
*/
AcousticEchoCanceler.Capability acousticEchoCanceler;
AutomaticGainControl.Capability automaticGainControl;
BassBoost.Capability bassBoost;
Downmix.Capability downmix;
DynamicsProcessing.Capability dynamicsProcessing;
EnvironmentalReverb.Capability environmentalReverb;
Equalizer.Capability equalizer;
HapticGenerator.Capability hapticGenerator;
LoudnessEnhancer.Capability loudnessEnhancer;
NoiseSuppression.Capability noiseSuppression;
PresetReverb.Capability presetReverb;
Virtualizer.Capability virtualizer;
Visualizer.Capability visualizer;
Volume.Capability volume;
Range range;
}

View File

@@ -21,8 +21,8 @@ import android.hardware.audio.effect.VendorExtension;
/**
* Downmix specific definitions.
*
* All parameters defined in union Downmix must be gettable and settable. The capabilities defined
* in Downmix.Capability can only acquired with IEffect.getDescriptor() and not settable.
* All parameter settings must be inside the range of Capability.Range.downmix definition if the
* definition for the corresponding parameter tag exist. See more detals about Range in Range.aidl.
*/
@VintfStability
union Downmix {
@@ -40,18 +40,6 @@ union Downmix {
*/
VendorExtension vendor;
/**
* Capability supported by Downmix implementation.
*/
@VintfStability
parcelable Capability {
/**
* Downmix capability extension, vendor can use this extension in case existing capability
* definition not enough.
*/
ParcelableHolder extension;
}
@VintfStability
enum Type {
/**

View File

@@ -21,9 +21,9 @@ import android.hardware.audio.effect.VendorExtension;
/**
* DynamicsProcessing specific definitions.
*
* All parameters defined in union DynamicsProcessing must be gettable and settable. The
* capabilities defined in DynamicsProcessing.Capability can only acquired with
* IEffect.getDescriptor() and not settable.
* All parameter settings must be inside the range of Capability.Range.dynamicsProcessing definition
* if the definition for the corresponding parameter tag exist. See more detals about Range in
* Range.aidl.
*/
@VintfStability
union DynamicsProcessing {
@@ -41,26 +41,6 @@ union DynamicsProcessing {
*/
VendorExtension vendorExtension;
/**
* Capability supported by DynamicsProcessing implementation.
*/
@VintfStability
parcelable Capability {
/**
* DynamicsProcessing capability extension, vendor can use this extension in case existing
* capability definition not enough.
*/
ParcelableHolder extension;
/**
* Min Cut off frequency (in Hz) for all Bands.
*/
float minCutOffFreq;
/**
* Max Cut off frequency (in Hz) for all Bands.
*/
float maxCutOffFreq;
}
/**
* Resolution preference definition.
*/
@@ -159,8 +139,7 @@ union DynamicsProcessing {
*/
boolean enable;
/**
* Topmost frequency number (in Hz) this band will process. Must be in the range of
* [minCutOffFreq, maxCutOffFreq] defined in Capability.
* Topmost frequency number (in Hz) this band will process.
*/
float cutoffFrequencyHz;
/**
@@ -190,8 +169,7 @@ union DynamicsProcessing {
*/
boolean enable;
/**
* Topmost frequency number (in Hz) this band will process. Must be in the range of
* [minCutOffFreq, maxCutOffFreq] defined in Capability.
* Topmost frequency number (in Hz) this band will process.
*/
float cutoffFrequencyHz;
/**

View File

@@ -21,9 +21,9 @@ import android.hardware.audio.effect.VendorExtension;
/**
* Environmental Reverb specific definitions.
*
* All parameters defined in union Environmental must be gettable and settable. The capabilities
* * defined in EnvironmentalReverb.Capability can only acquired with IEffect.getDescriptor() and
* not * settable.
* All parameter settings must be inside the range of Capability.Range.environmentalReverb
* definition if the definition for the corresponding parameter tag exist. See more detals about
* Range in Range.aidl.
*/
@VintfStability
@@ -43,103 +43,35 @@ union EnvironmentalReverb {
VendorExtension vendor;
/**
* Capability supported by effect implementation.
*/
@VintfStability
parcelable Capability {
VendorExtension extension;
/**
* Minimal possible room level in millibels.
*/
int minRoomLevelMb;
/**
* Maximum possible room level in millibels.
*/
int maxRoomLevelMb;
/**
* Minimal possible room hf level in millibels.
*/
int minRoomHfLevelMb;
/**
* Maximum possible room hf level in millibels.
*/
int maxRoomHfLevelMb;
/**
* Max decay time supported in millisecond.
*/
int maxDecayTimeMs;
/**
* Minimal possible per mille decay hf ratio.
*/
int minDecayHfRatioPm;
/**
* Maximum possible per mille decay hf ratio.
*/
int maxDecayHfRatioPm;
/**
* Minimal possible room level in millibels.
*/
int minLevelMb;
/**
* Maximum possible room level in millibels.
*/
int maxLevelMb;
/**
* Maximum possible delay time in milliseconds.
*/
int maxDelayMs;
/**
* Maximum possible per mille diffusion.
*/
int maxDiffusionPm;
/**
* Maximum possible per mille density.
*/
int maxDensityPm;
}
/**
* Room level apply to the reverb effect in millibels. The value of the roomLevelMb must be in
* range of the value specified by the 'minRoomLevelMb' capability and the 'maxRoomLevelMb'
* capability.
* Room level apply to the reverb effect in millibels.
*/
int roomLevelMb;
/**
* Room HF level apply to the reverb effect in millibels. The value of the roomHfLevelMb must be
* in range of the value specified by the 'minRoomHfLevelMb' capability and the
* 'maxRoomHfLevelMb' capability.
* Room HF level apply to the reverb effect in millibels.
*/
int roomHfLevelMb;
/**
* Delay time apply to the reverb effect in milliseconds.The value of the decayTimeMs must
* be non-negative and not exceed the value specified by the 'maxDecayTimeMs' capability.
* Delay time apply to the reverb effect in milliseconds.
*/
int decayTimeMs;
/**
* HF decay ratio in permilles. The value of the decayHfRatioPm must be in range
* of the value specified by the 'minDecayHfRatioPm' capability and the 'maxDecayHfRatioPm'
* capability.
* HF decay ratio in permilles.
*/
int decayHfRatioPm;
/**
* Reverb level in millibels. The value of the levelMb must be in range
* of the value specified by the 'minLevelMb' capability and the 'maxLevelMb' capability.
* Reverb level in millibels.
*/
int levelMb;
/**
* Reverb delay in milliseconds. The value of the delayMs must be non-negative and not
* exceed the value specified by the 'maxDelayMs' capability.
* Reverb delay in milliseconds.
*/
int delayMs;
/**
* Diffusion in permilles. The value of the diffusionPm must be non-negative and not
* exceed the value specified by the 'maxDiffusionPm' capability.
* Diffusion in permilles.
*/
int diffusionPm;
/**
* Density in permilles. The value of the densityPm must be non-negative and not
* exceed the value specified by the 'maxDensityPm' capability.
* Density in permilles.
*/
int densityPm;

View File

@@ -21,8 +21,8 @@ import android.hardware.audio.effect.VendorExtension;
/**
* Equalizer specific definitions.
*
* All parameters defined in union Equalizer must be gettable and settable. The capabilities defined
* in Equalizer.Capability can only acquired with IEffect.getDescriptor() and not settable.
* All parameter settings must be inside the range of Capability.Range.equalizer definition if the
* definition for the corresponding parameter tag exist. See more detals about Range in Range.aidl.
*/
@VintfStability
union Equalizer {
@@ -40,28 +40,6 @@ union Equalizer {
*/
VendorExtension vendorExtension;
/**
* Capability MUST be supported by Equalizer implementation.
*/
@VintfStability
parcelable Capability {
/**
* Equalizer capability extension, vendor can use this extension in case existing capability
* definition not enough.
*/
ParcelableHolder extension;
/**
* Bands frequency ranges supported.
*/
BandFrequency[] bandFrequencies;
/**
* Presets name and index.
*/
Preset[] presets;
}
/**
* Level setting for each band in millibels.
*/
@@ -107,4 +85,14 @@ union Equalizer {
* Get only parameter, get the center frequency for all bands in milliHertz.
*/
int[] centerFreqMh;
/**
* Get only parameter, indicating bands frequency ranges supported by implementation.
*/
BandFrequency[] bandFrequencies;
/**
* Get only parameter, indicating presets name and index supported by implementation.
*/
Preset[] presets;
}

View File

@@ -22,9 +22,9 @@ import android.hardware.audio.effect.VendorExtension;
* HapticGenerator specific definitions. HapticGenerator effect provide HapticGenerator control and
* mute/unmute functionality.
*
* All parameters defined in union HapticGenerator must be gettable and settable. The capabilities
* defined in HapticGenerator.Capability can only acquired with IEffect.getDescriptor() and not
* settable.
* All parameter settings must be inside the range of Capability.Range.hapticGenerator definition if
* the definition for the corresponding parameter tag exist. See more detals about Range in
* Range.aidl.
*/
@VintfStability
union HapticGenerator {
@@ -42,18 +42,6 @@ union HapticGenerator {
*/
VendorExtension vendorExtension;
/**
* Capability supported by HapticGenerator implementation.
*/
@VintfStability
parcelable Capability {
/**
* HapticGenerator capability extension, vendor can use this extension in case existing
* capability definition not enough.
*/
VendorExtension extension;
}
@VintfStability
@Backing(type="int")
enum VibratorScale {

View File

@@ -21,9 +21,9 @@ import android.hardware.audio.effect.VendorExtension;
/**
* LoudnessEnhancer specific definitions.
*
* All parameters defined in union LoudnessEnhancer must be gettable and settable. The capabilities
* defined in LoudnessEnhancer.Capability can only acquired with IEffect.getDescriptor() and not
* settable.
* All parameter settings must be inside the range of Capability.Range.loudnessEnhancer definition
* if the definition for the corresponding parameter tag exist. See more detals about Range in
* Range.aidl.
*/
@VintfStability
union LoudnessEnhancer {
@@ -41,18 +41,6 @@ union LoudnessEnhancer {
*/
VendorExtension vendor;
/**
* Capability supported by LoudnessEnhancer implementation.
*/
@VintfStability
parcelable Capability {
/**
* LoudnessEnhancer capability extension, vendor can use this extension in case existing
* capability definition not enough.
*/
VendorExtension extension;
}
/**
* The maximum gain in millibels (mB) applied to the signal to process, default value is 0 which
* corresponds to no amplification.

View File

@@ -24,9 +24,9 @@ import android.hardware.audio.effect.VendorExtension;
* engine, AC system) or non-stationary (other peoples conversations, car horn) for more advanced
* implementations.
*
* All parameters defined in union NoiseSuppression must be gettable and settable. The capabilities
* defined in NoiseSuppression.Capability can only acquired with IEffect.getDescriptor() and not
* settable.
* All parameter settings must be inside the range of Capability.Range.noiseSuppression definition
* if the definition for the corresponding parameter tag exist. See more detals about Range in
* Range.aidl.
*/
@VintfStability
union NoiseSuppression {
@@ -44,18 +44,6 @@ union NoiseSuppression {
*/
VendorExtension vendor;
/**
* Capability supported by NoiseSuppression implementation.
*/
@VintfStability
parcelable Capability {
/**
* NoiseSuppression capability extension, vendor can use this extension in case existing
* capability definition not enough.
*/
ParcelableHolder extension;
}
/**
* Different level of Noise Suppression to set.
* As an example, webrtc have NsConfig::SuppressionLevel::k6dB applied for LOW level noise

View File

@@ -44,6 +44,14 @@ import android.media.audio.common.AudioSource;
* 2. Parameters defined for a specific effect type.
* 3. Extension parameters ParcelableHolder can be used for vendor effect definition.
*
* All parameter settings must be inside the range of Capability.Range.$EffectType$ definition. If
* an effect implementation doesn't have limitation for a parameter, then don't define any effect
* range.
*
* All parameters are get-able, if any parameter doesn't support set, effect implementation should
* report the supported range for this parameter as range.min > range.max. If no support range is
* defined for a parameter, it means this parameter doesn't have any limitation.
*
*/
@VintfStability
union Parameter {

View File

@@ -21,9 +21,9 @@ import android.hardware.audio.effect.VendorExtension;
/**
* PresetReverb specific definitions.
*
* All parameters defined in union PresetReverb must be gettable and settable. The capabilities
* defined in PresetReverb.Capability can only acquired with IEffect.getDescriptor() and not
* settable.
* All parameter settings must be inside the range of Capability.Range.presetReverb definition if
* the definition for the corresponding parameter tag exist. See more detals about Range in
* Range.aidl.
*/
@VintfStability
union PresetReverb {
@@ -78,21 +78,24 @@ union PresetReverb {
VendorExtension vendor;
/**
* Capability supported by effect implementation.
* The list of presets supported by implementation, effect implementation must declare the
* support of Presets with Capability.Range.presetReverb definition. For example, if an effect
* implementation supports all Presets in PresetReverb.Presets, then the capability will be:
* const std::vector<PresetReverb::Presets> kSupportedPresets{
* ndk::enum_range<PresetReverb::Presets>().begin(),
* ndk::enum_range<PresetReverb::Presets>().end()};
* const std::vector<Range::PresetReverbRange> kRanges = {
* MAKE_RANGE(PresetReverb, supportedPresets, kSupportedPresets, kSupportedPresets)};
*/
@VintfStability
parcelable Capability {
VendorExtension extension;
/**
* List of presets supported.
*/
Presets[] supportedPresets;
}
Presets[] supportedPresets;
/**
* Get current reverb preset when used in getParameter.
* Enable a preset reverb when used in setParameter.
* With the current Range definition, there is no good way to define enum capability, so the
* Presets vector supportedPresets is used to defined the capability. Client must check the
* capability in PresetReverb.supportedPresets, and make sure to get the list of supported
* presets before setting.
*/
Presets preset;
}

View File

@@ -16,50 +16,205 @@
package android.hardware.audio.effect;
import android.hardware.audio.effect.AcousticEchoCanceler;
import android.hardware.audio.effect.AutomaticGainControl;
import android.hardware.audio.effect.AutomaticGainControlV1;
import android.hardware.audio.effect.BassBoost;
import android.hardware.audio.effect.Downmix;
import android.hardware.audio.effect.DynamicsProcessing;
import android.hardware.audio.effect.EnvironmentalReverb;
import android.hardware.audio.effect.Equalizer;
import android.hardware.audio.effect.HapticGenerator;
import android.hardware.audio.effect.LoudnessEnhancer;
import android.hardware.audio.effect.NoiseSuppression;
import android.hardware.audio.effect.PresetReverb;
import android.hardware.audio.effect.VendorExtension;
import android.hardware.audio.effect.Virtualizer;
import android.hardware.audio.effect.Visualizer;
import android.hardware.audio.effect.Volume;
/**
* Define the range (min and max) of a certain field, identified by tag.
* Can be used by effect capabilities to define supported value ranges.
* Define the supported range of effect parameters.
* Effect implementation must report the supported range of parameter/capability if there is any
* limitation.
* Range of each effect type is defined with a vector, because each $EffectType$Range can only
* describe the range of one parameter. For example, Range::AcousticEchoCancelerRange can only
* describe one of vendor, echoDelayUs, and mobileMode.
*
* If an effect implementation needs to define the valid range for a certain parameter, it can
* write the minimum/maximum supported value to the corresponding effect range, and add the range
* to vector of this effect type.
* Say if an AcousticEchoCanceler implementation wants to define the supported range of echoDelayUs
* to [0, 500], then the Capability range should include an item in acousticEchoCanceler list:
* std::vector<Range::AcousticEchoCancelerRange> kRanges = {
* MAKE_RANGE(AcousticEchoCanceler, echoDelayUs, 0, 500)};
*
* For a more complex example, if a DynamicsProcessing implementation wants to define the
* supported range of preEqBand channel to [0, 1], band index to [0, 5], and cutoffFrequencyHz to
* [220, 20000]:
* Range::DynamicsProcessingRange kRange = {
* .min = DynamicsProcessing::make<DynamicsProcessing::preEqBand>(
* {EqBandConfig({.channel = 0,
* .band = 0,
* .enable = false,
* .cutoffFrequencyHz = 220,
* .gainDb = std::numeric_limits<float>::min()})}),
* .max = DynamicsProcessing::make<DynamicsProcessing::preEqBand>(
* {EqBandConfig({.channel = 1,
* .band = 5,
* .enable = true,
* .cutoffFrequencyHz = 20000,
* .gainDb = std::numeric_limits<float>::max()})})};
*
* For get only parameters, the effect implementation must define an invalid range (min > max), to
* indicate no parameter from the effect client can be accepted for setting. The effect
* implementation must return EX_ILLEGAL_ARGUMENT if it receives any setParameter call for a get
* only parameter.
* As an example, the get-only parameter Virtualizer.speakerAngles can be defined with:
* Range::VirtualizerRange kRanges = {
* MAKE_RANGE(Virtualizer, speakerAngles,
* {Virtualizer::ChannelAngle({.channel = 1},
* {Virtualizer::ChannelAngle({.channel = 0})};
*
* For a capability definition (which is also get only), the effect implementation must define a
* range with min == max, to indicate this is a fixed capability which shouldn't set by client.
* As an example, the Equalizer presets capability can be defined with:
* std::vector<Equalizer::Preset> kPresets = {
* {0, "Normal"}, {1, "Classical"}, {2, "Dance"}, {3, "Flat"}, {4, "Folk"},
* {5, "Heavy Metal"}, {6, "Hip Hop"}, {7, "Jazz"}, {8, "Pop"}, {9, "Rock"}};
* Range::EqualizerRange kRanges =
* MAKE_RANGE(Equalizer, presets, EqualizerSw::kPresets, EqualizerSw::kPresets);
*
* For enum capability, it's necessary to either list a range, or explicitly list out all enums in
* the Range definition, see PresetReverb.supportedPresets as example.
*
* The effect implementation must return EX_ILLEGAL_ARGUMENT if:
* 1. receive any setParameter call for get only parameter (min > max).
* 2. receive any setParameter call for capability parameter definition (min == max).
* 3. receive any setParameter call for parameters not in the range of [min, max].
*
*/
@VintfStability
parcelable Range {
union Range {
@VintfStability
parcelable AcousticEchoCancelerRange {
AcousticEchoCanceler min;
AcousticEchoCanceler max;
}
@VintfStability
parcelable AutomaticGainControlRange {
AutomaticGainControl min;
AutomaticGainControl max;
}
@VintfStability
parcelable AutomaticGainControlV1Range {
AutomaticGainControlV1 min;
AutomaticGainControlV1 max;
}
@VintfStability
parcelable BassBoostRange {
BassBoost min;
BassBoost max;
}
@VintfStability
parcelable DownmixRange {
Downmix min;
Downmix max;
}
@VintfStability
parcelable DynamicsProcessingRange {
DynamicsProcessing min;
DynamicsProcessing max;
}
@VintfStability
parcelable EnvironmentalReverbRange {
EnvironmentalReverb min;
EnvironmentalReverb max;
}
@VintfStability
parcelable EqualizerRange {
Equalizer min;
Equalizer max;
}
@VintfStability
parcelable HapticGeneratorRange {
HapticGenerator min;
HapticGenerator max;
}
@VintfStability
parcelable LoudnessEnhancerRange {
LoudnessEnhancer min;
LoudnessEnhancer max;
}
@VintfStability
parcelable NoiseSuppressionRange {
NoiseSuppression min;
NoiseSuppression max;
}
@VintfStability
parcelable PresetReverbRange {
PresetReverb min;
PresetReverb max;
}
@VintfStability
parcelable VendorExtensionRange {
VendorExtension min;
VendorExtension max;
}
@VintfStability
parcelable VirtualizerRange {
Virtualizer min;
Virtualizer max;
}
@VintfStability
parcelable VisualizerRange {
Visualizer min;
Visualizer max;
}
@VintfStability
parcelable VolumeRange {
Volume min;
Volume max;
}
/**
* The union tag name which the range is defined for.
* For example: if used in AutomaticGainControlV1.Capability, value of Range.tag could be
* targetLevelDbFs or compressionGainDb.
* The vector of range defined for parameters of each effect implementation.
* Each element of the vector represents the min and max range of a parameter, so the size of
* vector is the number of parameter ranges defined for this effect implementation.
*
* The effect implementation must not have duplicated parameter range definition in the vector.
* Client side must go though the vector and make sure the parameter setting to effect
* implementation is in valid range.
*/
int tag;
@VintfStability
parcelable Int {
int min;
int max;
}
@VintfStability
parcelable Float {
float min;
float max;
}
@VintfStability
parcelable Long {
long min;
long max;
}
@VintfStability
parcelable Byte {
byte min;
byte max;
}
@VintfStability
union Types {
Int rangeInt;
Float rangeFloat;
Long rangeLong;
Byte rangeByte;
}
Types types;
VendorExtensionRange[] vendorExtension = {};
AcousticEchoCancelerRange[] acousticEchoCanceler;
AutomaticGainControlRange[] automaticGainControl;
AutomaticGainControlV1Range[] automaticGainControlV1;
BassBoostRange[] bassBoost;
DownmixRange[] downmix;
DynamicsProcessingRange[] dynamicsProcessing;
EnvironmentalReverbRange[] environmentalReverb;
EqualizerRange[] equalizer;
HapticGeneratorRange[] hapticGenerator;
LoudnessEnhancerRange[] loudnessEnhancer;
NoiseSuppressionRange[] noiseSuppression;
PresetReverbRange[] presetReverb;
VirtualizerRange[] virtualizer;
VisualizerRange[] visualizer;
VolumeRange[] volume;
}

View File

@@ -24,9 +24,8 @@ import android.media.audio.common.AudioDeviceDescription;
* Virtualizer specific definitions. An audio virtualizer is a general name for an effect to
* spatialize audio channels.
*
* All parameters defined in union Virtualizer must be gettable and settable. The capabilities
* defined in Virtualizer.Capability can only acquired with IEffect.getDescriptor() and not
* settable.
* All parameter settings must be inside the range of Capability.Range.virtualizer definition if the
* definition for the corresponding parameter tag exist. See more detals about Range in Range.aidl.
*/
@VintfStability
union Virtualizer {
@@ -64,27 +63,6 @@ union Virtualizer {
AudioDeviceDescription device;
}
/**
* Capability supported by Virtualizer implementation.
*/
@VintfStability
parcelable Capability {
/**
* Virtualizer capability extension, vendor can use this extension in case existing
* capability definition not enough.
*/
VendorExtension extension;
/**
* Maximum possible per mille strength.
*/
int maxStrengthPm;
/**
* Indicates whether setting strength is supported. False value indicates only one strength
* is supported and setParameter() method will always return EX_ILLEGAL_ARGUMENT.
*/
boolean strengthSupported;
}
/**
* The per mille strength of the virtualizer effect.
*
@@ -92,8 +70,6 @@ union Virtualizer {
* allowed to round the given strength to the nearest supported value. In this case {@link
* #IEffect.getParameter()} method should return the rounded value that was actually set.
*
* The value of the strength must be non-negative and not exceed the value specified by
* the 'maxStrengthPm' capability.
*/
int strengthPm;
@@ -128,6 +104,7 @@ union Virtualizer {
ChannelAngle[] speakerAngles;
/**
* Get only parameter.
* The audio device on which virtualzation mode is forced.
*/
AudioDeviceDescription device;

View File

@@ -22,9 +22,8 @@ import android.hardware.audio.effect.VendorExtension;
* Visualizer specific definitions. Visualizer enables application to retrieve part of the currently
* playing audio for visualization purpose
*
* All parameters defined in union Visualizer other than these in GetOnlyParameters and
* SetOnlyParameters must be gettable and settable. The capabilities defined in
* Visualizer.Capability can only acquired with IEffect.getDescriptor() and not settable.
* All parameter settings must be inside the range of Capability.Range.visualizer definition if the
* definition for the corresponding parameter tag exist. See more detals about Range in Range.aidl.
*
*/
@VintfStability
@@ -35,8 +34,6 @@ union Visualizer {
@VintfStability
union Id {
int vendorExtensionTag;
GetOnlyParameters.Tag getOnlyParamTag;
SetOnlyParameters.Tag setOnlyParamTag;
Visualizer.Tag commonTag;
}
Id id;
@@ -46,35 +43,6 @@ union Visualizer {
*/
VendorExtension vendor;
/**
* Capability supported by Visualizer implementation.
*/
@VintfStability
parcelable Capability {
/**
* Visualizer capability extension, vendor can use this extension in case existing
* capability definition not enough.
*/
VendorExtension extension;
/**
* Max latency supported in millseconds.
*/
int maxLatencyMs;
/**
* Capture size range.
*/
CaptureSamplesRange captureSampleRange;
}
/**
* Supported capture size range in samples.
*/
@VintfStability
parcelable CaptureSamplesRange {
int min;
int max;
}
/**
* Type of scaling applied on the captured visualization data.
*/
@@ -115,51 +83,42 @@ union Visualizer {
}
/**
* Any parameter defined in this union must be gettable via getParameter(), but must not
* settable.
* Get only parameter to get the current measurements.
*/
@VintfStability
union GetOnlyParameters {
/**
* Get the current measurements.
*/
@VintfStability
parcelable Measurement {
int rms;
int peak;
}
Measurement measurement;
/**
* Get the latest captureSamples of PCM samples (8 bits per sample).
*/
byte[] captureSampleBuffer;
parcelable Measurement {
int rms;
int peak;
}
GetOnlyParameters getOnlyParameters;
Measurement measurement;
/**
* Any parameter defined in this union must be settable via setParameter(), but must not
* gettable.
* Get only parameter to get the latest captured samples of PCM samples (8 bits per sample).
*/
@VintfStability
union SetOnlyParameters {
/**
* Used by framework to inform the visualizer about the downstream latency (audio hardware
* driver estimated latency in milliseconds).
*/
int latencyMs;
}
SetOnlyParameters setOnlyParameters;
byte[] captureSampleBuffer;
/**
* Current capture size in number of samples. The capture size must be inside
* Capability.captureSizeRange.
* Used by framework to inform the visualizer about the downstream latency (audio hardware
* driver estimated latency in milliseconds).
*
* Visualizer implementation must use Range.VisualizerRange to define the range of supported
* latency.
*/
int latencyMs;
/**
* Current capture size in number of samples.
*
* Visualizer implementation must use Range.VisualizerRange to define the range of supported
* capture size.
*/
int captureSamples;
/**
* Visualizer capture mode
*/
ScalingMode scalingMode;
/**
* Visualizer measurement mode.
*/

View File

@@ -21,8 +21,8 @@ import android.hardware.audio.effect.VendorExtension;
/**
* Volume specific definitions. Volume effect provide volume control and mute/unmute functionality.
*
* All parameters defined in union Volume must be gettable and settable. The capabilities defined in
* Volume.Capability can only acquired with IEffect.getDescriptor() and not settable.
* All parameter settings must be inside the range of Capability.Range.volume definition if the
* definition for the corresponding parameter tag exist. See more detals about Range in Range.aidl.
*/
@VintfStability
union Volume {
@@ -41,29 +41,7 @@ union Volume {
VendorExtension vendor;
/**
* Capability supported by Volume implementation.
*/
@VintfStability
parcelable Capability {
/**
* Volume capability extension, vendor can use this extension in case existing capability
* definition not enough.
*/
VendorExtension extension;
/**
* Minimum Volume level supported in dB.
*/
int minLevelDb;
/**
* Maximum Volume level supported in dB.
*/
int maxLevelDb;
}
/**
* Current level in dB with supported minimum and maximum level specified in capability.
* Current level in dB.
*/
int levelDb;
/**