mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 21:37:44 +00:00
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:
@@ -42,10 +42,4 @@ union AcousticEchoCanceler {
|
||||
int vendorExtensionTag;
|
||||
android.hardware.audio.effect.AcousticEchoCanceler.Tag commonTag;
|
||||
}
|
||||
@VintfStability
|
||||
parcelable Capability {
|
||||
ParcelableHolder extension;
|
||||
int maxEchoDelayUs;
|
||||
boolean supportMobileMode;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,10 +41,4 @@ union BassBoost {
|
||||
int vendorExtensionTag;
|
||||
android.hardware.audio.effect.BassBoost.Tag commonTag;
|
||||
}
|
||||
@VintfStability
|
||||
parcelable Capability {
|
||||
ParcelableHolder extension;
|
||||
int maxStrengthPm;
|
||||
boolean strengthSupported;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -42,10 +42,6 @@ union Downmix {
|
||||
android.hardware.audio.effect.Downmix.Tag commonTag;
|
||||
}
|
||||
@VintfStability
|
||||
parcelable Capability {
|
||||
ParcelableHolder extension;
|
||||
}
|
||||
@VintfStability
|
||||
enum Type {
|
||||
STRIP,
|
||||
FOLD,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 */,
|
||||
|
||||
@@ -41,8 +41,4 @@ union LoudnessEnhancer {
|
||||
int vendorExtensionTag;
|
||||
android.hardware.audio.effect.LoudnessEnhancer.Tag commonTag;
|
||||
}
|
||||
@VintfStability
|
||||
parcelable Capability {
|
||||
android.hardware.audio.effect.VendorExtension extension;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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;
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user