mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
parent
dddcdf1613
commit
382f30616a
@ -76,6 +76,7 @@ public final class DefaultMuxer implements Muxer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static final String MUXER_NAME = FrameworkMuxer.MUXER_NAME;
|
||||||
private final Muxer muxer;
|
private final Muxer muxer;
|
||||||
|
|
||||||
private DefaultMuxer(Muxer muxer) {
|
private DefaultMuxer(Muxer muxer) {
|
||||||
|
@ -127,6 +127,8 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static final int SUCCESS_PROGRESS_PERCENTAGE = 100;
|
private static final int SUCCESS_PROGRESS_PERCENTAGE = 100;
|
||||||
|
private final String exporterName;
|
||||||
|
@Nullable private final String muxerName;
|
||||||
private @MonotonicNonNull EditingSession editingSession;
|
private @MonotonicNonNull EditingSession editingSession;
|
||||||
private long startTimeMs;
|
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>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 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
|
@Nullable
|
||||||
MediaMetricsManager mediaMetricsManager =
|
MediaMetricsManager mediaMetricsManager =
|
||||||
(MediaMetricsManager) context.getSystemService(Context.MEDIA_METRICS_SERVICE);
|
(MediaMetricsManager) context.getSystemService(Context.MEDIA_METRICS_SERVICE);
|
||||||
@ -145,6 +154,8 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
|||||||
editingSession = checkNotNull(mediaMetricsManager.createEditingSession());
|
editingSession = checkNotNull(mediaMetricsManager.createEditingSession());
|
||||||
startTimeMs = SystemClock.DEFAULT.elapsedRealtime();
|
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) {
|
private EditingEndedEvent.Builder createEditingEndedEventBuilder(int finalState) {
|
||||||
long endTimeMs = SystemClock.DEFAULT.elapsedRealtime();
|
long endTimeMs = SystemClock.DEFAULT.elapsedRealtime();
|
||||||
return new EditingEndedEvent.Builder(finalState)
|
EditingEndedEvent.Builder editingEndedEventBuilder =
|
||||||
.setTimeSinceCreatedMillis(endTimeMs - startTimeMs);
|
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(
|
private static List<MediaItemInfo> getMediaItemInfos(
|
||||||
|
@ -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";
|
public static final String MUXER_STOPPING_FAILED_ERROR_MESSAGE = "Failed to stop the MediaMuxer";
|
||||||
|
|
||||||
// MediaMuxer supported sample formats are documented in MediaMuxer.addTrack(MediaFormat).
|
// MediaMuxer supported sample formats are documented in MediaMuxer.addTrack(MediaFormat).
|
||||||
|
@ -19,6 +19,7 @@ import android.media.MediaCodec;
|
|||||||
import android.media.MediaCodec.BufferInfo;
|
import android.media.MediaCodec.BufferInfo;
|
||||||
import androidx.media3.common.C;
|
import androidx.media3.common.C;
|
||||||
import androidx.media3.common.Format;
|
import androidx.media3.common.Format;
|
||||||
|
import androidx.media3.common.MediaLibraryInfo;
|
||||||
import androidx.media3.common.Metadata;
|
import androidx.media3.common.Metadata;
|
||||||
import androidx.media3.common.MimeTypes;
|
import androidx.media3.common.MimeTypes;
|
||||||
import androidx.media3.common.util.Log;
|
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 String TAG = "InAppFragmentedMp4Muxer";
|
||||||
private static final int TRACK_ID_UNSET = -1;
|
private static final int TRACK_ID_UNSET = -1;
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@ import android.media.MediaCodec.BufferInfo;
|
|||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.media3.common.C;
|
import androidx.media3.common.C;
|
||||||
import androidx.media3.common.Format;
|
import androidx.media3.common.Format;
|
||||||
|
import androidx.media3.common.MediaLibraryInfo;
|
||||||
import androidx.media3.common.Metadata;
|
import androidx.media3.common.Metadata;
|
||||||
import androidx.media3.common.MimeTypes;
|
import androidx.media3.common.MimeTypes;
|
||||||
import androidx.media3.common.util.Log;
|
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 String TAG = "InAppMp4Muxer";
|
||||||
private static final int TRACK_ID_UNSET = -1;
|
private static final int TRACK_ID_UNSET = -1;
|
||||||
|
|
||||||
|
@ -745,6 +745,8 @@ public final class Transformer {
|
|||||||
|
|
||||||
private static final int TRANSFORMER_STATE_PROCESS_MEDIA_START = 5;
|
private static final int TRANSFORMER_STATE_PROCESS_MEDIA_START = 5;
|
||||||
private static final int TRANSFORMER_STATE_REMUX_REMAINING_MEDIA = 6;
|
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 Context context;
|
||||||
private final TransformationRequest transformationRequest;
|
private final TransformationRequest transformationRequest;
|
||||||
private final ImmutableList<AudioProcessor> audioProcessors;
|
private final ImmutableList<AudioProcessor> audioProcessors;
|
||||||
@ -1578,7 +1580,15 @@ public final class Transformer {
|
|||||||
}
|
}
|
||||||
DebugTraceUtil.reset();
|
DebugTraceUtil.reset();
|
||||||
if (canCollectEditingMetrics()) {
|
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 =
|
transformerInternal =
|
||||||
new TransformerInternal(
|
new TransformerInternal(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user