Finalized the audio track ducking API
Change-Id: I12b966c1898eaae76e9de71a6d745678dc489092
This commit is contained in:
@@ -20,7 +20,7 @@ import java.io.IOException;
|
||||
|
||||
/**
|
||||
* This class allows to handle an audio track. This audio file is mixed with the
|
||||
* audio samples of the MediaItems.
|
||||
* audio samples of the media items.
|
||||
* {@hide}
|
||||
*/
|
||||
public class AudioTrack {
|
||||
@@ -43,7 +43,7 @@ public class AudioTrack {
|
||||
|
||||
// Ducking variables
|
||||
private int mDuckingThreshold;
|
||||
private int mDuckingLowVolume;
|
||||
private int mDuckedTrackVolume;
|
||||
private boolean mIsDuckingEnabled;
|
||||
|
||||
// The audio waveform filename
|
||||
@@ -98,7 +98,7 @@ public class AudioTrack {
|
||||
|
||||
// Ducking is enabled by default
|
||||
mDuckingThreshold = 0;
|
||||
mDuckingLowVolume = 0;
|
||||
mDuckedTrackVolume = 0;
|
||||
mIsDuckingEnabled = true;
|
||||
|
||||
// The audio waveform file is generated later
|
||||
@@ -120,12 +120,18 @@ public class AudioTrack {
|
||||
* @param loop true to loop the audio track
|
||||
* @param volume The volume in percentage
|
||||
* @param muted true if the audio track is muted
|
||||
* @param threshold Ducking will be activated when the relative energy in
|
||||
* the media items audio signal goes above this value. The valid
|
||||
* range of values is 0 to 100.
|
||||
* @param duckedTrackVolume The relative volume of the audio track when ducking
|
||||
* is active. The valid range of values is 0 to 100.
|
||||
* @param audioWaveformFilename The name of the waveform file
|
||||
*
|
||||
* @throws IOException if file is not found
|
||||
*/
|
||||
AudioTrack(VideoEditor editor, String audioTrackId, String filename, long startTimeMs,
|
||||
long beginMs, long endMs, boolean loop, int volume, boolean muted,
|
||||
boolean duckingEnabled, int duckThreshold, int duckedTrackVolume,
|
||||
String audioWaveformFilename) throws IOException {
|
||||
mUniqueId = audioTrackId;
|
||||
mFilename = filename;
|
||||
@@ -150,6 +156,10 @@ public class AudioTrack {
|
||||
mLoop = loop;
|
||||
mMuted = muted;
|
||||
|
||||
mIsDuckingEnabled = duckingEnabled;
|
||||
mDuckingThreshold = duckThreshold;
|
||||
mDuckedTrackVolume = duckedTrackVolume;
|
||||
|
||||
mAudioWaveformFilename = audioWaveformFilename;
|
||||
}
|
||||
|
||||
@@ -347,15 +357,26 @@ public class AudioTrack {
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO DEFINE
|
||||
* Enable ducking by specifying the required parameters
|
||||
*
|
||||
* @param threshold
|
||||
* @param lowVolume
|
||||
* @param volume
|
||||
* @param threshold Ducking will be activated when the relative energy in
|
||||
* the media items audio signal goes above this value. The valid
|
||||
* range of values is 0 to 100.
|
||||
* @param duckedTrackVolume The relative volume of the audio track when ducking
|
||||
* is active. The valid range of values is 0 to 100.
|
||||
*/
|
||||
public void enableDucking(int threshold, int lowVolume, int volume) {
|
||||
public void enableDucking(int threshold, int duckedTrackVolume) {
|
||||
if (threshold < 0 || threshold > 100) {
|
||||
throw new IllegalArgumentException("Invalid threshold value: " + threshold);
|
||||
}
|
||||
|
||||
if (duckedTrackVolume < 0 || duckedTrackVolume > 100) {
|
||||
throw new IllegalArgumentException("Invalid duckedTrackVolume value: "
|
||||
+ duckedTrackVolume);
|
||||
}
|
||||
|
||||
mDuckingThreshold = threshold;
|
||||
mDuckingLowVolume = lowVolume;
|
||||
mDuckedTrackVolume = duckedTrackVolume;
|
||||
mIsDuckingEnabled = true;
|
||||
}
|
||||
|
||||
@@ -374,10 +395,10 @@ public class AudioTrack {
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The ducking low level
|
||||
* @return The ducked track volume
|
||||
*/
|
||||
public int getDuckingLowVolume() {
|
||||
return mDuckingLowVolume;
|
||||
public int getDuckedTrackVolume() {
|
||||
return mDuckedTrackVolume;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -90,6 +90,9 @@ public class VideoEditorTestImpl implements VideoEditor {
|
||||
private static final String ATTR_END_RECT_B = "end_b";
|
||||
private static final String ATTR_LOOP = "loop";
|
||||
private static final String ATTR_MUTED = "muted";
|
||||
private static final String ATTR_DUCK_ENABLED = "ducking_enabled";
|
||||
private static final String ATTR_DUCK_THRESHOLD = "ducking_threshold";
|
||||
private static final String ATTR_DUCKED_TRACK_VOLUME = "ducking_volume";
|
||||
|
||||
// Instance variables
|
||||
private long mDurationMs;
|
||||
@@ -716,6 +719,9 @@ public class VideoEditorTestImpl implements VideoEditor {
|
||||
serializer.attribute("", ATTR_BEGIN_TIME, Long.toString(at.getBoundaryBeginTime()));
|
||||
serializer.attribute("", ATTR_END_TIME, Long.toString(at.getBoundaryEndTime()));
|
||||
serializer.attribute("", ATTR_VOLUME, Integer.toString(at.getVolume()));
|
||||
serializer.attribute("", ATTR_DUCK_ENABLED, Boolean.toString(at.isDuckingEnabled()));
|
||||
serializer.attribute("", ATTR_DUCKED_TRACK_VOLUME, Integer.toString(at.getDuckedTrackVolume()));
|
||||
serializer.attribute("", ATTR_DUCK_THRESHOLD, Integer.toString(at.getDuckingThreshhold()));
|
||||
serializer.attribute("", ATTR_MUTED, Boolean.toString(at.isMuted()));
|
||||
serializer.attribute("", ATTR_LOOP, Boolean.toString(at.isLooping()));
|
||||
if (at.getAudioWaveformFilename() != null) {
|
||||
@@ -1017,10 +1023,13 @@ public class VideoEditorTestImpl implements VideoEditor {
|
||||
final int volume = Integer.parseInt(parser.getAttributeValue("", ATTR_VOLUME));
|
||||
final boolean muted = Boolean.parseBoolean(parser.getAttributeValue("", ATTR_MUTED));
|
||||
final boolean loop = Boolean.parseBoolean(parser.getAttributeValue("", ATTR_LOOP));
|
||||
final boolean duckingEnabled = Boolean.parseBoolean(parser.getAttributeValue("", ATTR_DUCK_ENABLED));
|
||||
final int duckThreshold = Integer.parseInt(parser.getAttributeValue("", ATTR_DUCK_THRESHOLD));
|
||||
final int duckedTrackVolume = Integer.parseInt(parser.getAttributeValue("", ATTR_DUCKED_TRACK_VOLUME));
|
||||
final String waveformFilename = parser.getAttributeValue("", ATTR_AUDIO_WAVEFORM_FILENAME);
|
||||
try {
|
||||
final AudioTrack audioTrack = new AudioTrack(this, audioTrackId, filename, startTimeMs,
|
||||
beginMs, endMs, loop, volume, muted, waveformFilename);
|
||||
beginMs, endMs, loop, volume, muted, duckingEnabled, duckThreshold, duckedTrackVolume, waveformFilename);
|
||||
|
||||
return audioTrack;
|
||||
} catch (IOException ex) {
|
||||
|
||||
Reference in New Issue
Block a user