Merge "Dynamics Processing Effect"

This commit is contained in:
TreeHugger Robot
2018-02-28 06:19:35 +00:00
committed by Android (Google) Code Review
3 changed files with 2494 additions and 3 deletions

View File

@@ -25516,6 +25516,7 @@ package android.media.audiofx {
field public static final java.util.UUID EFFECT_TYPE_AEC;
field public static final java.util.UUID EFFECT_TYPE_AGC;
field public static final java.util.UUID EFFECT_TYPE_BASS_BOOST;
field public static final java.util.UUID EFFECT_TYPE_DYNAMICS_PROCESSING;
field public static final java.util.UUID EFFECT_TYPE_ENV_REVERB;
field public static final java.util.UUID EFFECT_TYPE_EQUALIZER;
field public static final java.util.UUID EFFECT_TYPE_LOUDNESS_ENHANCER;
@@ -25579,6 +25580,201 @@ package android.media.audiofx {
field public short strength;
}
public final class DynamicsProcessing extends android.media.audiofx.AudioEffect {
ctor public DynamicsProcessing(int);
ctor public DynamicsProcessing(int, int, android.media.audiofx.DynamicsProcessing.Config);
method public android.media.audiofx.DynamicsProcessing.Channel getChannelByChannelIndex(int);
method public int getChannelCount();
method public android.media.audiofx.DynamicsProcessing.Config getConfig();
method public float getInputGainByChannelIndex(int);
method public android.media.audiofx.DynamicsProcessing.Limiter getLimiterByChannelIndex(int);
method public android.media.audiofx.DynamicsProcessing.MbcBand getMbcBandByChannelIndex(int, int);
method public android.media.audiofx.DynamicsProcessing.Mbc getMbcByChannelIndex(int);
method public android.media.audiofx.DynamicsProcessing.EqBand getPostEqBandByChannelIndex(int, int);
method public android.media.audiofx.DynamicsProcessing.Eq getPostEqByChannelIndex(int);
method public android.media.audiofx.DynamicsProcessing.EqBand getPreEqBandByChannelIndex(int, int);
method public android.media.audiofx.DynamicsProcessing.Eq getPreEqByChannelIndex(int);
method public void setAllChannelsTo(android.media.audiofx.DynamicsProcessing.Channel);
method public void setChannelTo(int, android.media.audiofx.DynamicsProcessing.Channel);
method public void setInputGainAllChannelsTo(float);
method public void setInputGainbyChannel(int, float);
method public void setLimiterAllChannelsTo(android.media.audiofx.DynamicsProcessing.Limiter);
method public void setLimiterByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Limiter);
method public void setMbcAllChannelsTo(android.media.audiofx.DynamicsProcessing.Mbc);
method public void setMbcBandAllChannelsTo(int, android.media.audiofx.DynamicsProcessing.MbcBand);
method public void setMbcBandByChannelIndex(int, int, android.media.audiofx.DynamicsProcessing.MbcBand);
method public void setMbcByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Mbc);
method public void setPostEqAllChannelsTo(android.media.audiofx.DynamicsProcessing.Eq);
method public void setPostEqBandAllChannelsTo(int, android.media.audiofx.DynamicsProcessing.EqBand);
method public void setPostEqBandByChannelIndex(int, int, android.media.audiofx.DynamicsProcessing.EqBand);
method public void setPostEqByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Eq);
method public void setPreEqAllChannelsTo(android.media.audiofx.DynamicsProcessing.Eq);
method public void setPreEqBandAllChannelsTo(int, android.media.audiofx.DynamicsProcessing.EqBand);
method public void setPreEqBandByChannelIndex(int, int, android.media.audiofx.DynamicsProcessing.EqBand);
method public void setPreEqByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Eq);
field public static final int VARIANT_FAVOR_FREQUENCY_RESOLUTION = 0; // 0x0
field public static final int VARIANT_FAVOR_TIME_RESOLUTION = 1; // 0x1
}
public static class DynamicsProcessing.BandBase {
ctor public DynamicsProcessing.BandBase(boolean, float);
method public float getCutoffFrequency();
method public boolean isEnabled();
method public void setCutoffFrequency(float);
method public void setEnabled(boolean);
}
public static class DynamicsProcessing.BandStage extends android.media.audiofx.DynamicsProcessing.Stage {
ctor public DynamicsProcessing.BandStage(boolean, boolean, int);
method public int getBandCount();
}
public static final class DynamicsProcessing.Channel {
ctor public DynamicsProcessing.Channel(float, boolean, int, boolean, int, boolean, int, boolean);
ctor public DynamicsProcessing.Channel(android.media.audiofx.DynamicsProcessing.Channel);
method public float getInputGain();
method public android.media.audiofx.DynamicsProcessing.Limiter getLimiter();
method public android.media.audiofx.DynamicsProcessing.Mbc getMbc();
method public android.media.audiofx.DynamicsProcessing.MbcBand getMbcBand(int);
method public android.media.audiofx.DynamicsProcessing.Eq getPostEq();
method public android.media.audiofx.DynamicsProcessing.EqBand getPostEqBand(int);
method public android.media.audiofx.DynamicsProcessing.Eq getPreEq();
method public android.media.audiofx.DynamicsProcessing.EqBand getPreEqBand(int);
method public void setInputGain(float);
method public void setLimiter(android.media.audiofx.DynamicsProcessing.Limiter);
method public void setMbc(android.media.audiofx.DynamicsProcessing.Mbc);
method public void setMbcBand(int, android.media.audiofx.DynamicsProcessing.MbcBand);
method public void setPostEq(android.media.audiofx.DynamicsProcessing.Eq);
method public void setPostEqBand(int, android.media.audiofx.DynamicsProcessing.EqBand);
method public void setPreEq(android.media.audiofx.DynamicsProcessing.Eq);
method public void setPreEqBand(int, android.media.audiofx.DynamicsProcessing.EqBand);
}
public static final class DynamicsProcessing.Config {
method public android.media.audiofx.DynamicsProcessing.Channel getChannelByChannelIndex(int);
method public float getInputGainByChannelIndex(int);
method public android.media.audiofx.DynamicsProcessing.Limiter getLimiterByChannelIndex(int);
method public android.media.audiofx.DynamicsProcessing.MbcBand getMbcBandByChannelIndex(int, int);
method public int getMbcBandCount();
method public android.media.audiofx.DynamicsProcessing.Mbc getMbcByChannelIndex(int);
method public android.media.audiofx.DynamicsProcessing.EqBand getPostEqBandByChannelIndex(int, int);
method public int getPostEqBandCount();
method public android.media.audiofx.DynamicsProcessing.Eq getPostEqByChannelIndex(int);
method public android.media.audiofx.DynamicsProcessing.EqBand getPreEqBandByChannelIndex(int, int);
method public int getPreEqBandCount();
method public android.media.audiofx.DynamicsProcessing.Eq getPreEqByChannelIndex(int);
method public float getPreferredFrameDuration();
method public int getVariant();
method public boolean isLimiterInUse();
method public boolean isMbcInUse();
method public boolean isPostEqInUse();
method public boolean isPreEqInUse();
method public void setAllChannelsTo(android.media.audiofx.DynamicsProcessing.Channel);
method public void setChannelTo(int, android.media.audiofx.DynamicsProcessing.Channel);
method public void setInputGainAllChannelsTo(float);
method public void setInputGainByChannelIndex(int, float);
method public void setLimiterAllChannelsTo(android.media.audiofx.DynamicsProcessing.Limiter);
method public void setLimiterByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Limiter);
method public void setMbcAllChannelsTo(android.media.audiofx.DynamicsProcessing.Mbc);
method public void setMbcBandAllChannelsTo(int, android.media.audiofx.DynamicsProcessing.MbcBand);
method public void setMbcBandByChannelIndex(int, int, android.media.audiofx.DynamicsProcessing.MbcBand);
method public void setMbcByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Mbc);
method public void setPostEqAllChannelsTo(android.media.audiofx.DynamicsProcessing.Eq);
method public void setPostEqBandAllChannelsTo(int, android.media.audiofx.DynamicsProcessing.EqBand);
method public void setPostEqBandByChannelIndex(int, int, android.media.audiofx.DynamicsProcessing.EqBand);
method public void setPostEqByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Eq);
method public void setPreEqAllChannelsTo(android.media.audiofx.DynamicsProcessing.Eq);
method public void setPreEqBandAllChannelsTo(int, android.media.audiofx.DynamicsProcessing.EqBand);
method public void setPreEqBandByChannelIndex(int, int, android.media.audiofx.DynamicsProcessing.EqBand);
method public void setPreEqByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Eq);
}
public static final class DynamicsProcessing.Config.Builder {
ctor public DynamicsProcessing.Config.Builder(int, int, boolean, int, boolean, int, boolean, int, boolean);
method public android.media.audiofx.DynamicsProcessing.Config build();
method public android.media.audiofx.DynamicsProcessing.Config.Builder setAllChannelsTo(android.media.audiofx.DynamicsProcessing.Channel);
method public android.media.audiofx.DynamicsProcessing.Config.Builder setChannelTo(int, android.media.audiofx.DynamicsProcessing.Channel);
method public android.media.audiofx.DynamicsProcessing.Config.Builder setInputGainAllChannelsTo(float);
method public android.media.audiofx.DynamicsProcessing.Config.Builder setInputGainByChannelIndex(int, float);
method public android.media.audiofx.DynamicsProcessing.Config.Builder setLimiterAllChannelsTo(android.media.audiofx.DynamicsProcessing.Limiter);
method public android.media.audiofx.DynamicsProcessing.Config.Builder setLimiterByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Limiter);
method public android.media.audiofx.DynamicsProcessing.Config.Builder setMbcAllChannelsTo(android.media.audiofx.DynamicsProcessing.Mbc);
method public android.media.audiofx.DynamicsProcessing.Config.Builder setMbcByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Mbc);
method public android.media.audiofx.DynamicsProcessing.Config.Builder setPostEqAllChannelsTo(android.media.audiofx.DynamicsProcessing.Eq);
method public android.media.audiofx.DynamicsProcessing.Config.Builder setPostEqByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Eq);
method public android.media.audiofx.DynamicsProcessing.Config.Builder setPreEqAllChannelsTo(android.media.audiofx.DynamicsProcessing.Eq);
method public android.media.audiofx.DynamicsProcessing.Config.Builder setPreEqByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Eq);
method public android.media.audiofx.DynamicsProcessing.Config.Builder setPreferredFrameDuration(float);
}
public static final class DynamicsProcessing.Eq extends android.media.audiofx.DynamicsProcessing.BandStage {
ctor public DynamicsProcessing.Eq(boolean, boolean, int);
ctor public DynamicsProcessing.Eq(android.media.audiofx.DynamicsProcessing.Eq);
method public android.media.audiofx.DynamicsProcessing.EqBand getBand(int);
method public void setBand(int, android.media.audiofx.DynamicsProcessing.EqBand);
}
public static final class DynamicsProcessing.EqBand extends android.media.audiofx.DynamicsProcessing.BandBase {
ctor public DynamicsProcessing.EqBand(boolean, float, float);
ctor public DynamicsProcessing.EqBand(android.media.audiofx.DynamicsProcessing.EqBand);
method public float getGain();
method public void setGain(float);
}
public static final class DynamicsProcessing.Limiter extends android.media.audiofx.DynamicsProcessing.Stage {
ctor public DynamicsProcessing.Limiter(boolean, boolean, int, float, float, float, float, float);
ctor public DynamicsProcessing.Limiter(android.media.audiofx.DynamicsProcessing.Limiter);
method public float getAttackTime();
method public int getLinkGroup();
method public float getPostGain();
method public float getRatio();
method public float getReleaseTime();
method public float getThreshold();
method public void setAttackTime(float);
method public void setLinkGroup(int);
method public void setPostGain(float);
method public void setRatio(float);
method public void setReleaseTime(float);
method public void setThreshold(float);
}
public static final class DynamicsProcessing.Mbc extends android.media.audiofx.DynamicsProcessing.BandStage {
ctor public DynamicsProcessing.Mbc(boolean, boolean, int);
ctor public DynamicsProcessing.Mbc(android.media.audiofx.DynamicsProcessing.Mbc);
method public android.media.audiofx.DynamicsProcessing.MbcBand getBand(int);
method public void setBand(int, android.media.audiofx.DynamicsProcessing.MbcBand);
}
public static final class DynamicsProcessing.MbcBand extends android.media.audiofx.DynamicsProcessing.BandBase {
ctor public DynamicsProcessing.MbcBand(boolean, float, float, float, float, float, float, float, float, float, float);
ctor public DynamicsProcessing.MbcBand(android.media.audiofx.DynamicsProcessing.MbcBand);
method public float getAttackTime();
method public float getExpanderRatio();
method public float getKneeWidth();
method public float getNoiseGateThreshold();
method public float getPostGain();
method public float getPreGain();
method public float getRatio();
method public float getReleaseTime();
method public float getThreshold();
method public void setAttackTime(float);
method public void setExpanderRatio(float);
method public void setKneeWidth(float);
method public void setNoiseGateThreshold(float);
method public void setPostGain(float);
method public void setPreGain(float);
method public void setRatio(float);
method public void setReleaseTime(float);
method public void setThreshold(float);
}
public static class DynamicsProcessing.Stage {
ctor public DynamicsProcessing.Stage(boolean, boolean);
method public boolean isEnabled();
method public boolean isInUse();
method public void setEnabled(boolean);
}
public class EnvironmentalReverb extends android.media.audiofx.AudioEffect {
ctor public EnvironmentalReverb(int, int) throws java.lang.IllegalArgumentException, java.lang.RuntimeException, java.lang.UnsupportedOperationException;
method public short getDecayHFRatio() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;

View File

@@ -39,6 +39,7 @@ import java.util.UUID;
* <li> {@link android.media.audiofx.BassBoost}</li>
* <li> {@link android.media.audiofx.PresetReverb}</li>
* <li> {@link android.media.audiofx.EnvironmentalReverb}</li>
* <li> {@link android.media.audiofx.DynamicsProcessing}</li>
* </ul>
* <p>To apply the audio effect to a specific AudioTrack or MediaPlayer instance,
* the application must specify the audio session ID of that instance when creating the AudioEffect.
@@ -125,6 +126,12 @@ public class AudioEffect {
public static final UUID EFFECT_TYPE_LOUDNESS_ENHANCER = UUID
.fromString("fe3199be-aed0-413f-87bb-11260eb63cf1");
/**
* UUID for Dynamics Processing
*/
public static final UUID EFFECT_TYPE_DYNAMICS_PROCESSING = UUID
.fromString("7261676f-6d75-7369-6364-28e2fd3ac39e");
/**
* Null effect UUID. Used when the UUID for effect type of
* @hide
@@ -203,7 +210,8 @@ public class AudioEffect {
* {@link AudioEffect#EFFECT_TYPE_AEC}, {@link AudioEffect#EFFECT_TYPE_AGC},
* {@link AudioEffect#EFFECT_TYPE_BASS_BOOST}, {@link AudioEffect#EFFECT_TYPE_ENV_REVERB},
* {@link AudioEffect#EFFECT_TYPE_EQUALIZER}, {@link AudioEffect#EFFECT_TYPE_NS},
* {@link AudioEffect#EFFECT_TYPE_PRESET_REVERB}, {@link AudioEffect#EFFECT_TYPE_VIRTUALIZER}.
* {@link AudioEffect#EFFECT_TYPE_PRESET_REVERB}, {@link AudioEffect#EFFECT_TYPE_VIRTUALIZER},
* {@link AudioEffect#EFFECT_TYPE_DYNAMICS_PROCESSING}.
* </li>
* <li>uuid: UUID for this particular implementation</li>
* <li>connectMode: {@link #EFFECT_INSERT} or {@link #EFFECT_AUXILIARY}</li>
@@ -224,7 +232,8 @@ public class AudioEffect {
* {@link AudioEffect#EFFECT_TYPE_BASS_BOOST}, {@link AudioEffect#EFFECT_TYPE_ENV_REVERB},
* {@link AudioEffect#EFFECT_TYPE_EQUALIZER}, {@link AudioEffect#EFFECT_TYPE_NS},
* {@link AudioEffect#EFFECT_TYPE_PRESET_REVERB},
* {@link AudioEffect#EFFECT_TYPE_VIRTUALIZER}.
* {@link AudioEffect#EFFECT_TYPE_VIRTUALIZER},
* {@link AudioEffect#EFFECT_TYPE_DYNAMICS_PROCESSING}.
* @param uuid UUID for this particular implementation
* @param connectMode {@link #EFFECT_INSERT} or {@link #EFFECT_AUXILIARY}
* @param name human readable effect name
@@ -246,7 +255,8 @@ public class AudioEffect {
* {@link AudioEffect#EFFECT_TYPE_AGC}, {@link AudioEffect#EFFECT_TYPE_BASS_BOOST},
* {@link AudioEffect#EFFECT_TYPE_ENV_REVERB}, {@link AudioEffect#EFFECT_TYPE_EQUALIZER},
* {@link AudioEffect#EFFECT_TYPE_NS}, {@link AudioEffect#EFFECT_TYPE_PRESET_REVERB}
* or {@link AudioEffect#EFFECT_TYPE_VIRTUALIZER}.<br>
* {@link AudioEffect#EFFECT_TYPE_VIRTUALIZER}
* or {@link AudioEffect#EFFECT_TYPE_DYNAMICS_PROCESSING}.<br>
* For reverberation, bass boost, EQ and virtualizer, the UUID
* corresponds to the OpenSL ES Interface ID.
*/
@@ -1341,6 +1351,34 @@ public class AudioEffect {
return converter.array();
}
/**
* @hide
*/
public static float byteArrayToFloat(byte[] valueBuf) {
return byteArrayToFloat(valueBuf, 0);
}
/**
* @hide
*/
public static float byteArrayToFloat(byte[] valueBuf, int offset) {
ByteBuffer converter = ByteBuffer.wrap(valueBuf);
converter.order(ByteOrder.nativeOrder());
return converter.getFloat(offset);
}
/**
* @hide
*/
public static byte[] floatToByteArray(float value) {
ByteBuffer converter = ByteBuffer.allocate(4);
converter.order(ByteOrder.nativeOrder());
converter.putFloat(value);
return converter.array();
}
/**
* @hide
*/

File diff suppressed because it is too large Load Diff