PiperOrigin-RevId: 719238418
This commit is contained in:
shahddaghash 2025-01-24 03:44:05 -08:00 committed by Copybara-Service
parent dddcdf1613
commit 382f30616a
6 changed files with 43 additions and 4 deletions

View File

@ -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) {

View File

@ -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;
*
* <p>A new instance must be created before starting a new export.
*
* <p>Both {@code exporterName} and {@code muxerName} should follow the format
* "<packageName>:<version>".
*
* @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<MediaItemInfo> getMediaItemInfos(

View File

@ -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).

View File

@ -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;

View File

@ -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;

View File

@ -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<AudioProcessor> 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(