Add an analyzer mode option to Transformer demo.

PiperOrigin-RevId: 639746452
This commit is contained in:
samrobinson 2024-06-03 05:30:39 -07:00 committed by Copybara-Service
parent 9ed86441e3
commit 304b784314
4 changed files with 41 additions and 18 deletions

View File

@ -77,6 +77,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
public static final String TRIM_START_MS = "trim_start_ms"; public static final String TRIM_START_MS = "trim_start_ms";
public static final String TRIM_END_MS = "trim_end_ms"; public static final String TRIM_END_MS = "trim_end_ms";
public static final String ENABLE_FALLBACK = "enable_fallback"; public static final String ENABLE_FALLBACK = "enable_fallback";
public static final String ENABLE_ANALYZER_MODE = "enable_analyzer_mode";
public static final String ENABLE_DEBUG_PREVIEW = "enable_debug_preview"; public static final String ENABLE_DEBUG_PREVIEW = "enable_debug_preview";
public static final String ABORT_SLOW_EXPORT = "abort_slow_export"; public static final String ABORT_SLOW_EXPORT = "abort_slow_export";
public static final String PRODUCE_FRAGMENTED_MP4 = "produce_fragmented_mp4"; public static final String PRODUCE_FRAGMENTED_MP4 = "produce_fragmented_mp4";
@ -170,6 +171,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
private @MonotonicNonNull Spinner rotateSpinner; private @MonotonicNonNull Spinner rotateSpinner;
private @MonotonicNonNull CheckBox trimCheckBox; private @MonotonicNonNull CheckBox trimCheckBox;
private @MonotonicNonNull CheckBox enableFallbackCheckBox; private @MonotonicNonNull CheckBox enableFallbackCheckBox;
private @MonotonicNonNull CheckBox enableAnalyzerModeCheckBox;
private @MonotonicNonNull CheckBox enableDebugPreviewCheckBox; private @MonotonicNonNull CheckBox enableDebugPreviewCheckBox;
private @MonotonicNonNull CheckBox enableDebugTracingCheckBox; private @MonotonicNonNull CheckBox enableDebugTracingCheckBox;
private @MonotonicNonNull CheckBox abortSlowExportCheckBox; private @MonotonicNonNull CheckBox abortSlowExportCheckBox;
@ -292,6 +294,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
trimEndMs = C.TIME_UNSET; trimEndMs = C.TIME_UNSET;
enableFallbackCheckBox = findViewById(R.id.enable_fallback_checkbox); enableFallbackCheckBox = findViewById(R.id.enable_fallback_checkbox);
enableAnalyzerModeCheckBox = findViewById(R.id.enable_analyzer_mode_checkbox);
enableDebugPreviewCheckBox = findViewById(R.id.enable_debug_preview_checkbox); enableDebugPreviewCheckBox = findViewById(R.id.enable_debug_preview_checkbox);
enableDebugTracingCheckBox = findViewById(R.id.enable_debug_tracing_checkbox); enableDebugTracingCheckBox = findViewById(R.id.enable_debug_tracing_checkbox);
enableDebugTracingCheckBox.setOnCheckedChangeListener( enableDebugTracingCheckBox.setOnCheckedChangeListener(
@ -365,6 +368,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
"rotateSpinner", "rotateSpinner",
"trimCheckBox", "trimCheckBox",
"enableFallbackCheckBox", "enableFallbackCheckBox",
"enableAnalyzerModeCheckBox",
"enableDebugPreviewCheckBox", "enableDebugPreviewCheckBox",
"abortSlowExportCheckBox", "abortSlowExportCheckBox",
"produceFragmentedMp4CheckBox", "produceFragmentedMp4CheckBox",
@ -407,6 +411,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
bundle.putLong(TRIM_END_MS, trimEndMs); bundle.putLong(TRIM_END_MS, trimEndMs);
} }
bundle.putBoolean(ENABLE_FALLBACK, enableFallbackCheckBox.isChecked()); bundle.putBoolean(ENABLE_FALLBACK, enableFallbackCheckBox.isChecked());
bundle.putBoolean(ENABLE_ANALYZER_MODE, enableAnalyzerModeCheckBox.isChecked());
bundle.putBoolean(ENABLE_DEBUG_PREVIEW, enableDebugPreviewCheckBox.isChecked()); bundle.putBoolean(ENABLE_DEBUG_PREVIEW, enableDebugPreviewCheckBox.isChecked());
bundle.putBoolean(ABORT_SLOW_EXPORT, abortSlowExportCheckBox.isChecked()); bundle.putBoolean(ABORT_SLOW_EXPORT, abortSlowExportCheckBox.isChecked());
bundle.putBoolean(PRODUCE_FRAGMENTED_MP4, produceFragmentedMp4CheckBox.isChecked()); bundle.putBoolean(PRODUCE_FRAGMENTED_MP4, produceFragmentedMp4CheckBox.isChecked());

View File

@ -87,6 +87,7 @@ import androidx.media3.transformer.DefaultMuxer;
import androidx.media3.transformer.EditedMediaItem; import androidx.media3.transformer.EditedMediaItem;
import androidx.media3.transformer.EditedMediaItemSequence; import androidx.media3.transformer.EditedMediaItemSequence;
import androidx.media3.transformer.Effects; import androidx.media3.transformer.Effects;
import androidx.media3.transformer.ExperimentalAnalyzerModeFactory;
import androidx.media3.transformer.ExportException; import androidx.media3.transformer.ExportException;
import androidx.media3.transformer.ExportResult; import androidx.media3.transformer.ExportResult;
import androidx.media3.transformer.InAppMuxer; import androidx.media3.transformer.InAppMuxer;
@ -310,7 +311,24 @@ public final class TransformerActivity extends AppCompatActivity {
"debugFrame", "debugFrame",
}) })
private Transformer createTransformer(@Nullable Bundle bundle, Uri inputUri, String filePath) { private Transformer createTransformer(@Nullable Bundle bundle, Uri inputUri, String filePath) {
Transformer.Builder transformerBuilder = new Transformer.Builder(/* context= */ this); Transformer.Builder transformerBuilder =
new Transformer.Builder(/* context= */ this)
.addListener(
new Transformer.Listener() {
@Override
public void onCompleted(Composition composition, ExportResult exportResult) {
TransformerActivity.this.onCompleted(inputUri, filePath, exportResult);
}
@Override
public void onError(
Composition composition,
ExportResult exportResult,
ExportException exportException) {
TransformerActivity.this.onError(exportException);
}
});
if (bundle != null) { if (bundle != null) {
@Nullable String audioMimeType = bundle.getString(ConfigurationActivity.AUDIO_MIME_TYPE); @Nullable String audioMimeType = bundle.getString(ConfigurationActivity.AUDIO_MIME_TYPE);
if (audioMimeType != null) { if (audioMimeType != null) {
@ -339,25 +357,14 @@ public final class TransformerActivity extends AppCompatActivity {
if (bundle.getBoolean(ConfigurationActivity.ENABLE_DEBUG_PREVIEW)) { if (bundle.getBoolean(ConfigurationActivity.ENABLE_DEBUG_PREVIEW)) {
transformerBuilder.setDebugViewProvider(new DemoDebugViewProvider()); transformerBuilder.setDebugViewProvider(new DemoDebugViewProvider());
} }
if (bundle.getBoolean(ConfigurationActivity.ENABLE_ANALYZER_MODE)) {
return ExperimentalAnalyzerModeFactory.buildAnalyzer(
this.getApplicationContext(), transformerBuilder.build());
}
} }
return transformerBuilder return transformerBuilder.build();
.addListener(
new Transformer.Listener() {
@Override
public void onCompleted(Composition composition, ExportResult exportResult) {
TransformerActivity.this.onCompleted(inputUri, filePath, exportResult);
}
@Override
public void onError(
Composition composition,
ExportResult exportResult,
ExportException exportException) {
TransformerActivity.this.onError(exportException);
}
})
.build();
} }
/** Creates a cache file, resetting it if it already exists. */ /** Creates a cache file, resetting it if it already exists. */

View File

@ -196,6 +196,16 @@
android:layout_gravity="end" android:layout_gravity="end"
android:checked="true"/> android:checked="true"/>
</TableRow> </TableRow>
<TableRow
android:layout_weight="1">
<TextView
android:layout_gravity="center_vertical"
android:text="@string/enable_analyzer_mode" />
<CheckBox
android:id="@+id/enable_analyzer_mode_checkbox"
android:layout_gravity="end"
android:checked="false"/>
</TableRow>
<TableRow <TableRow
android:layout_weight="1"> android:layout_weight="1">
<TextView <TextView

View File

@ -28,6 +28,7 @@
<string name="scale" translatable="false">Scale video</string> <string name="scale" translatable="false">Scale video</string>
<string name="rotate" translatable="false">Rotate video (degrees)</string> <string name="rotate" translatable="false">Rotate video (degrees)</string>
<string name="enable_fallback" translatable="false">Enable fallback</string> <string name="enable_fallback" translatable="false">Enable fallback</string>
<string name="enable_analyzer_mode" translatable="false">Enable analyzer mode</string>
<string name="enable_debug_preview" translatable="false">Enable debug preview</string> <string name="enable_debug_preview" translatable="false">Enable debug preview</string>
<string name="enable_debug_tracing" translatable="false">Enable debug tracing</string> <string name="enable_debug_tracing" translatable="false">Enable debug tracing</string>
<string name="abort_slow_export" translatable="false">Abort slow export</string> <string name="abort_slow_export" translatable="false">Abort slow export</string>