Add channel mixing effect to demo application.
PiperOrigin-RevId: 547465758
This commit is contained in:
parent
e81ae0a8eb
commit
aa1ca747de
@ -118,6 +118,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
|
|||||||
public static final int HIGH_PITCHED_INDEX = 0;
|
public static final int HIGH_PITCHED_INDEX = 0;
|
||||||
public static final int SAMPLE_RATE_INDEX = 1;
|
public static final int SAMPLE_RATE_INDEX = 1;
|
||||||
public static final int SKIP_SILENCE_INDEX = 2;
|
public static final int SKIP_SILENCE_INDEX = 2;
|
||||||
|
public static final int CHANNEL_MIXING_INDEX = 3;
|
||||||
|
|
||||||
// Color filter options.
|
// Color filter options.
|
||||||
public static final int COLOR_FILTER_GRAYSCALE = 0;
|
public static final int COLOR_FILTER_GRAYSCALE = 0;
|
||||||
@ -164,7 +165,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
|
|||||||
"720p H264 video with no audio",
|
"720p H264 video with no audio",
|
||||||
};
|
};
|
||||||
private static final String[] AUDIO_EFFECTS = {
|
private static final String[] AUDIO_EFFECTS = {
|
||||||
"High pitched", "Sample rate of 48000Hz", "Skip silence"
|
"High pitched", "Sample rate of 48000Hz", "Skip silence", "Mix channels into mono"
|
||||||
};
|
};
|
||||||
private static final String[] VIDEO_EFFECTS = {
|
private static final String[] VIDEO_EFFECTS = {
|
||||||
"Dizzy crop",
|
"Dizzy crop",
|
||||||
|
@ -54,6 +54,8 @@ import androidx.media3.common.DebugViewProvider;
|
|||||||
import androidx.media3.common.Effect;
|
import androidx.media3.common.Effect;
|
||||||
import androidx.media3.common.MediaItem;
|
import androidx.media3.common.MediaItem;
|
||||||
import androidx.media3.common.audio.AudioProcessor;
|
import androidx.media3.common.audio.AudioProcessor;
|
||||||
|
import androidx.media3.common.audio.ChannelMixingAudioProcessor;
|
||||||
|
import androidx.media3.common.audio.ChannelMixingMatrix;
|
||||||
import androidx.media3.common.audio.SonicAudioProcessor;
|
import androidx.media3.common.audio.SonicAudioProcessor;
|
||||||
import androidx.media3.common.util.BitmapLoader;
|
import androidx.media3.common.util.BitmapLoader;
|
||||||
import androidx.media3.common.util.GlUtil;
|
import androidx.media3.common.util.GlUtil;
|
||||||
@ -99,6 +101,7 @@ import com.google.common.util.concurrent.ListenableFuture;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.lang.reflect.Constructor;
|
import java.lang.reflect.Constructor;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.CountDownLatch;
|
import java.util.concurrent.CountDownLatch;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
@ -411,6 +414,18 @@ public final class TransformerActivity extends AppCompatActivity {
|
|||||||
processors.add(silenceSkippingAudioProcessor);
|
processors.add(silenceSkippingAudioProcessor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (selectedAudioEffects[ConfigurationActivity.CHANNEL_MIXING_INDEX]) {
|
||||||
|
ChannelMixingAudioProcessor mixingAudioProcessor = new ChannelMixingAudioProcessor();
|
||||||
|
for (int inputChannelCount = 1; inputChannelCount <= 6; inputChannelCount++) {
|
||||||
|
float[] mixingCoefficients = new float[inputChannelCount];
|
||||||
|
Arrays.fill(mixingCoefficients, 1f / inputChannelCount);
|
||||||
|
mixingAudioProcessor.putChannelMixingMatrix(
|
||||||
|
new ChannelMixingMatrix(
|
||||||
|
inputChannelCount, /* outputChannelCount= */ 1, mixingCoefficients));
|
||||||
|
}
|
||||||
|
processors.add(mixingAudioProcessor);
|
||||||
|
}
|
||||||
|
|
||||||
return processors.build();
|
return processors.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user