Loading media/java/android/media/videoeditor/AudioTrack.java +34 −13 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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 Loading Loading @@ -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 Loading @@ -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; Loading @@ -150,6 +156,10 @@ public class AudioTrack { mLoop = loop; mMuted = muted; mIsDuckingEnabled = duckingEnabled; mDuckingThreshold = duckThreshold; mDuckedTrackVolume = duckedTrackVolume; mAudioWaveformFilename = audioWaveformFilename; } Loading Loading @@ -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; } Loading @@ -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; } /** Loading media/java/android/media/videoeditor/VideoEditorTestImpl.java +10 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading Loading @@ -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) { Loading Loading
media/java/android/media/videoeditor/AudioTrack.java +34 −13 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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 Loading Loading @@ -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 Loading @@ -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; Loading @@ -150,6 +156,10 @@ public class AudioTrack { mLoop = loop; mMuted = muted; mIsDuckingEnabled = duckingEnabled; mDuckingThreshold = duckThreshold; mDuckedTrackVolume = duckedTrackVolume; mAudioWaveformFilename = audioWaveformFilename; } Loading Loading @@ -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; } Loading @@ -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; } /** Loading
media/java/android/media/videoeditor/VideoEditorTestImpl.java +10 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading Loading @@ -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) { Loading