Merge "Dynamics Processing Effect"
This commit is contained in:
committed by
Android (Google) Code Review
commit
7f88497514
196
api/current.txt
196
api/current.txt
@@ -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;
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
2257
media/java/android/media/audiofx/DynamicsProcessing.java
Normal file
2257
media/java/android/media/audiofx/DynamicsProcessing.java
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user