Loading media/java/android/media/videoeditor/AudioTrack.java +34 −13 Original line number Original line 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 * 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} * {@hide} */ */ public class AudioTrack { public class AudioTrack { Loading @@ -43,7 +43,7 @@ public class AudioTrack { // Ducking variables // Ducking variables private int mDuckingThreshold; private int mDuckingThreshold; private int mDuckingLowVolume; private int mDuckedTrackVolume; private boolean mIsDuckingEnabled; private boolean mIsDuckingEnabled; // The audio waveform filename // The audio waveform filename Loading Loading @@ -98,7 +98,7 @@ public class AudioTrack { // Ducking is enabled by default // Ducking is enabled by default mDuckingThreshold = 0; mDuckingThreshold = 0; mDuckingLowVolume = 0; mDuckedTrackVolume = 0; mIsDuckingEnabled = true; mIsDuckingEnabled = true; // The audio waveform file is generated later // The audio waveform file is generated later Loading @@ -120,12 +120,18 @@ public class AudioTrack { * @param loop true to loop the audio track * @param loop true to loop the audio track * @param volume The volume in percentage * @param volume The volume in percentage * @param muted true if the audio track is muted * @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 * @param audioWaveformFilename The name of the waveform file * * * @throws IOException if file is not found * @throws IOException if file is not found */ */ AudioTrack(VideoEditor editor, String audioTrackId, String filename, long startTimeMs, AudioTrack(VideoEditor editor, String audioTrackId, String filename, long startTimeMs, long beginMs, long endMs, boolean loop, int volume, boolean muted, long beginMs, long endMs, boolean loop, int volume, boolean muted, boolean duckingEnabled, int duckThreshold, int duckedTrackVolume, String audioWaveformFilename) throws IOException { String audioWaveformFilename) throws IOException { mUniqueId = audioTrackId; mUniqueId = audioTrackId; mFilename = filename; mFilename = filename; Loading @@ -150,6 +156,10 @@ public class AudioTrack { mLoop = loop; mLoop = loop; mMuted = muted; mMuted = muted; mIsDuckingEnabled = duckingEnabled; mDuckingThreshold = duckThreshold; mDuckedTrackVolume = duckedTrackVolume; mAudioWaveformFilename = audioWaveformFilename; mAudioWaveformFilename = audioWaveformFilename; } } Loading Loading @@ -347,15 +357,26 @@ public class AudioTrack { } } /** /** * TODO DEFINE * Enable ducking by specifying the required parameters * * * @param threshold * @param threshold Ducking will be activated when the relative energy in * @param lowVolume * the media items audio signal goes above this value. The valid * @param volume * 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; mDuckingThreshold = threshold; mDuckingLowVolume = lowVolume; mDuckedTrackVolume = duckedTrackVolume; mIsDuckingEnabled = true; mIsDuckingEnabled = true; } } Loading @@ -374,10 +395,10 @@ public class AudioTrack { } } /** /** * @return The ducking low level * @return The ducked track volume */ */ public int getDuckingLowVolume() { public int getDuckedTrackVolume() { return mDuckingLowVolume; return mDuckedTrackVolume; } } /** /** Loading media/java/android/media/videoeditor/VideoEditorTestImpl.java +10 −1 Original line number Original line 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_END_RECT_B = "end_b"; private static final String ATTR_LOOP = "loop"; private static final String ATTR_LOOP = "loop"; private static final String ATTR_MUTED = "muted"; 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 // Instance variables private long mDurationMs; 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_BEGIN_TIME, Long.toString(at.getBoundaryBeginTime())); serializer.attribute("", ATTR_END_TIME, Long.toString(at.getBoundaryEndTime())); serializer.attribute("", ATTR_END_TIME, Long.toString(at.getBoundaryEndTime())); serializer.attribute("", ATTR_VOLUME, Integer.toString(at.getVolume())); 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_MUTED, Boolean.toString(at.isMuted())); serializer.attribute("", ATTR_LOOP, Boolean.toString(at.isLooping())); serializer.attribute("", ATTR_LOOP, Boolean.toString(at.isLooping())); if (at.getAudioWaveformFilename() != null) { 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 int volume = Integer.parseInt(parser.getAttributeValue("", ATTR_VOLUME)); final boolean muted = Boolean.parseBoolean(parser.getAttributeValue("", ATTR_MUTED)); final boolean muted = Boolean.parseBoolean(parser.getAttributeValue("", ATTR_MUTED)); final boolean loop = Boolean.parseBoolean(parser.getAttributeValue("", ATTR_LOOP)); 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); final String waveformFilename = parser.getAttributeValue("", ATTR_AUDIO_WAVEFORM_FILENAME); try { try { final AudioTrack audioTrack = new AudioTrack(this, audioTrackId, filename, startTimeMs, 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; return audioTrack; } catch (IOException ex) { } catch (IOException ex) { Loading Loading
media/java/android/media/videoeditor/AudioTrack.java +34 −13 Original line number Original line 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 * 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} * {@hide} */ */ public class AudioTrack { public class AudioTrack { Loading @@ -43,7 +43,7 @@ public class AudioTrack { // Ducking variables // Ducking variables private int mDuckingThreshold; private int mDuckingThreshold; private int mDuckingLowVolume; private int mDuckedTrackVolume; private boolean mIsDuckingEnabled; private boolean mIsDuckingEnabled; // The audio waveform filename // The audio waveform filename Loading Loading @@ -98,7 +98,7 @@ public class AudioTrack { // Ducking is enabled by default // Ducking is enabled by default mDuckingThreshold = 0; mDuckingThreshold = 0; mDuckingLowVolume = 0; mDuckedTrackVolume = 0; mIsDuckingEnabled = true; mIsDuckingEnabled = true; // The audio waveform file is generated later // The audio waveform file is generated later Loading @@ -120,12 +120,18 @@ public class AudioTrack { * @param loop true to loop the audio track * @param loop true to loop the audio track * @param volume The volume in percentage * @param volume The volume in percentage * @param muted true if the audio track is muted * @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 * @param audioWaveformFilename The name of the waveform file * * * @throws IOException if file is not found * @throws IOException if file is not found */ */ AudioTrack(VideoEditor editor, String audioTrackId, String filename, long startTimeMs, AudioTrack(VideoEditor editor, String audioTrackId, String filename, long startTimeMs, long beginMs, long endMs, boolean loop, int volume, boolean muted, long beginMs, long endMs, boolean loop, int volume, boolean muted, boolean duckingEnabled, int duckThreshold, int duckedTrackVolume, String audioWaveformFilename) throws IOException { String audioWaveformFilename) throws IOException { mUniqueId = audioTrackId; mUniqueId = audioTrackId; mFilename = filename; mFilename = filename; Loading @@ -150,6 +156,10 @@ public class AudioTrack { mLoop = loop; mLoop = loop; mMuted = muted; mMuted = muted; mIsDuckingEnabled = duckingEnabled; mDuckingThreshold = duckThreshold; mDuckedTrackVolume = duckedTrackVolume; mAudioWaveformFilename = audioWaveformFilename; mAudioWaveformFilename = audioWaveformFilename; } } Loading Loading @@ -347,15 +357,26 @@ public class AudioTrack { } } /** /** * TODO DEFINE * Enable ducking by specifying the required parameters * * * @param threshold * @param threshold Ducking will be activated when the relative energy in * @param lowVolume * the media items audio signal goes above this value. The valid * @param volume * 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; mDuckingThreshold = threshold; mDuckingLowVolume = lowVolume; mDuckedTrackVolume = duckedTrackVolume; mIsDuckingEnabled = true; mIsDuckingEnabled = true; } } Loading @@ -374,10 +395,10 @@ public class AudioTrack { } } /** /** * @return The ducking low level * @return The ducked track volume */ */ public int getDuckingLowVolume() { public int getDuckedTrackVolume() { return mDuckingLowVolume; return mDuckedTrackVolume; } } /** /** Loading
media/java/android/media/videoeditor/VideoEditorTestImpl.java +10 −1 Original line number Original line 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_END_RECT_B = "end_b"; private static final String ATTR_LOOP = "loop"; private static final String ATTR_LOOP = "loop"; private static final String ATTR_MUTED = "muted"; 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 // Instance variables private long mDurationMs; 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_BEGIN_TIME, Long.toString(at.getBoundaryBeginTime())); serializer.attribute("", ATTR_END_TIME, Long.toString(at.getBoundaryEndTime())); serializer.attribute("", ATTR_END_TIME, Long.toString(at.getBoundaryEndTime())); serializer.attribute("", ATTR_VOLUME, Integer.toString(at.getVolume())); 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_MUTED, Boolean.toString(at.isMuted())); serializer.attribute("", ATTR_LOOP, Boolean.toString(at.isLooping())); serializer.attribute("", ATTR_LOOP, Boolean.toString(at.isLooping())); if (at.getAudioWaveformFilename() != null) { 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 int volume = Integer.parseInt(parser.getAttributeValue("", ATTR_VOLUME)); final boolean muted = Boolean.parseBoolean(parser.getAttributeValue("", ATTR_MUTED)); final boolean muted = Boolean.parseBoolean(parser.getAttributeValue("", ATTR_MUTED)); final boolean loop = Boolean.parseBoolean(parser.getAttributeValue("", ATTR_LOOP)); 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); final String waveformFilename = parser.getAttributeValue("", ATTR_AUDIO_WAVEFORM_FILENAME); try { try { final AudioTrack audioTrack = new AudioTrack(this, audioTrackId, filename, startTimeMs, 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; return audioTrack; } catch (IOException ex) { } catch (IOException ex) { Loading