From 382f30616a7df213f742f5210272eac36a02fe1b Mon Sep 17 00:00:00 2001 From: shahddaghash Date: Fri, 24 Jan 2025 03:44:05 -0800 Subject: [PATCH] Rollback of https://github.com/androidx/media/commit/b25d6ef2495678d16cb6d9aeeee796ecc0af7805 PiperOrigin-RevId: 719238418 --- .../media3/transformer/DefaultMuxer.java | 1 + .../transformer/EditingMetricsCollector.java | 25 ++++++++++++++++--- .../media3/transformer/FrameworkMuxer.java | 1 + .../transformer/InAppFragmentedMp4Muxer.java | 4 +++ .../media3/transformer/InAppMp4Muxer.java | 4 +++ .../media3/transformer/Transformer.java | 12 ++++++++- 6 files changed, 43 insertions(+), 4 deletions(-) diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultMuxer.java b/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultMuxer.java index 9c1da83b14..2cca9042c3 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultMuxer.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultMuxer.java @@ -76,6 +76,7 @@ public final class DefaultMuxer implements Muxer { } } + public static final String MUXER_NAME = FrameworkMuxer.MUXER_NAME; private final Muxer muxer; private DefaultMuxer(Muxer muxer) { diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/EditingMetricsCollector.java b/libraries/transformer/src/main/java/androidx/media3/transformer/EditingMetricsCollector.java index bec31b615a..1b5a04d4ba 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/EditingMetricsCollector.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/EditingMetricsCollector.java @@ -127,6 +127,8 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; } private static final int SUCCESS_PROGRESS_PERCENTAGE = 100; + private final String exporterName; + @Nullable private final String muxerName; private @MonotonicNonNull EditingSession editingSession; private long startTimeMs; @@ -135,9 +137,16 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; * *

A new instance must be created before starting a new export. * + *

Both {@code exporterName} and {@code muxerName} should follow the format + * ":". + * * @param context The {@link Context}. + * @param exporterName Java package name and version of the library or application implementing + * the editing operation. + * @param muxerName Java package name and version of the library or application that writes to the + * output file. */ - public EditingMetricsCollector(Context context) { + public EditingMetricsCollector(Context context, String exporterName, @Nullable String muxerName) { @Nullable MediaMetricsManager mediaMetricsManager = (MediaMetricsManager) context.getSystemService(Context.MEDIA_METRICS_SERVICE); @@ -145,6 +154,8 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; editingSession = checkNotNull(mediaMetricsManager.createEditingSession()); startTimeMs = SystemClock.DEFAULT.elapsedRealtime(); } + this.exporterName = exporterName; + this.muxerName = muxerName; } /** @@ -223,8 +234,16 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; private EditingEndedEvent.Builder createEditingEndedEventBuilder(int finalState) { long endTimeMs = SystemClock.DEFAULT.elapsedRealtime(); - return new EditingEndedEvent.Builder(finalState) - .setTimeSinceCreatedMillis(endTimeMs - startTimeMs); + EditingEndedEvent.Builder editingEndedEventBuilder = + new EditingEndedEvent.Builder(finalState) + .setTimeSinceCreatedMillis(endTimeMs - startTimeMs) + .setExporterName(exporterName); + if (muxerName != null) { + // TODO: b/391888233 - Update `PATTERN_KNOWN_EDITING_LIBRARY_NAMES` regex pattern to accept + // Framework Muxer's library name. + editingEndedEventBuilder.setMuxerName(muxerName); + } + return editingEndedEventBuilder; } private static List getMediaItemInfos( diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/FrameworkMuxer.java b/libraries/transformer/src/main/java/androidx/media3/transformer/FrameworkMuxer.java index 863174ec8e..e28ebdb777 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/FrameworkMuxer.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/FrameworkMuxer.java @@ -99,6 +99,7 @@ import java.util.Locale; } } + public static final String MUXER_NAME = "android.media:" + SDK_INT; public static final String MUXER_STOPPING_FAILED_ERROR_MESSAGE = "Failed to stop the MediaMuxer"; // MediaMuxer supported sample formats are documented in MediaMuxer.addTrack(MediaFormat). diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/InAppFragmentedMp4Muxer.java b/libraries/transformer/src/main/java/androidx/media3/transformer/InAppFragmentedMp4Muxer.java index 4931b80268..f0db699d92 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/InAppFragmentedMp4Muxer.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/InAppFragmentedMp4Muxer.java @@ -19,6 +19,7 @@ import android.media.MediaCodec; import android.media.MediaCodec.BufferInfo; import androidx.media3.common.C; import androidx.media3.common.Format; +import androidx.media3.common.MediaLibraryInfo; import androidx.media3.common.Metadata; import androidx.media3.common.MimeTypes; import androidx.media3.common.util.Log; @@ -109,6 +110,9 @@ public final class InAppFragmentedMp4Muxer implements Muxer { } } + public static final String MUXER_NAME = + "androidx.media3.media3-muxer:" + MediaLibraryInfo.VERSION; + private static final String TAG = "InAppFragmentedMp4Muxer"; private static final int TRACK_ID_UNSET = -1; diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/InAppMp4Muxer.java b/libraries/transformer/src/main/java/androidx/media3/transformer/InAppMp4Muxer.java index 53c3d09ab4..b01ff1b202 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/InAppMp4Muxer.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/InAppMp4Muxer.java @@ -20,6 +20,7 @@ import android.media.MediaCodec.BufferInfo; import androidx.annotation.Nullable; import androidx.media3.common.C; import androidx.media3.common.Format; +import androidx.media3.common.MediaLibraryInfo; import androidx.media3.common.Metadata; import androidx.media3.common.MimeTypes; import androidx.media3.common.util.Log; @@ -123,6 +124,9 @@ public final class InAppMp4Muxer implements Muxer { } } + public static final String MUXER_NAME = + "androidx.media3.media3-muxer:" + MediaLibraryInfo.VERSION; + private static final String TAG = "InAppMp4Muxer"; private static final int TRACK_ID_UNSET = -1; diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java b/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java index 44384b36f1..648f9ed888 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java @@ -745,6 +745,8 @@ public final class Transformer { private static final int TRANSFORMER_STATE_PROCESS_MEDIA_START = 5; private static final int TRANSFORMER_STATE_REMUX_REMAINING_MEDIA = 6; + private static final String EXPORTER_NAME = + "androidx.media3.media3-transformer:" + MediaLibraryInfo.VERSION; private final Context context; private final TransformationRequest transformationRequest; private final ImmutableList audioProcessors; @@ -1578,7 +1580,15 @@ public final class Transformer { } DebugTraceUtil.reset(); if (canCollectEditingMetrics()) { - editingMetricsCollector = new EditingMetricsCollector(context); + @Nullable String muxerName = null; + if (muxerFactory instanceof InAppMp4Muxer.Factory) { + muxerName = InAppMp4Muxer.MUXER_NAME; + } else if (muxerFactory instanceof InAppFragmentedMp4Muxer.Factory) { + muxerName = InAppFragmentedMp4Muxer.MUXER_NAME; + } else if (muxerFactory instanceof DefaultMuxer.Factory) { + muxerName = DefaultMuxer.MUXER_NAME; + } + editingMetricsCollector = new EditingMetricsCollector(context, EXPORTER_NAME, muxerName); } transformerInternal = new TransformerInternal(