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 0738d982fe..34d5aaf3b8 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/EditingMetricsCollector.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/EditingMetricsCollector.java @@ -161,9 +161,9 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; /** * Called when export completes with success. * - * @param processedInputs The list of {@link ExportResult.ProcessedInput} instances. + * @param exportResult The {@link ExportResult} of the export. */ - public void onExportSuccess(ImmutableList processedInputs) { + public void onExportSuccess(ExportResult exportResult) { if (editingSession == null) { return; } @@ -171,11 +171,13 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; createEditingEndedEventBuilder(EditingEndedEvent.FINAL_STATE_SUCCEEDED) .setFinalProgressPercent(SUCCESS_PROGRESS_PERCENTAGE); - List inputMediaItemInfoList = getMediaItemInfos(processedInputs); + List inputMediaItemInfoList = + getInputMediaItemInfos(exportResult.processedInputs); for (int i = 0; i < inputMediaItemInfoList.size(); i++) { MediaItemInfo inputMediaItemInfo = inputMediaItemInfoList.get(i); editingEndedEventBuilder.addInputMediaItemInfo(inputMediaItemInfo); } + editingEndedEventBuilder.setOutputMediaItemInfo(getOutputMediaItemInfo(exportResult)); editingSession.reportEditingEndedEvent(editingEndedEventBuilder.build()); editingSession.close(); @@ -187,12 +189,10 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; * @param progressPercentage The progress of the export operation in percent. Value is {@link * C#PERCENTAGE_UNSET} if unknown or between 0 and 100 inclusive. * @param exportException The {@link ExportException} describing the exception. - * @param processedInputs The list of {@link ExportResult.ProcessedInput} instances. + * @param exportResult The {@link ExportResult} of the export. */ public void onExportError( - int progressPercentage, - ExportException exportException, - ImmutableList processedInputs) { + int progressPercentage, ExportException exportException, ExportResult exportResult) { if (editingSession == null) { return; } @@ -203,11 +203,13 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; editingEndedEventBuilder.setFinalProgressPercent(progressPercentage); } - List inputMediaItemInfoList = getMediaItemInfos(processedInputs); + List inputMediaItemInfoList = + getInputMediaItemInfos(exportResult.processedInputs); for (int i = 0; i < inputMediaItemInfoList.size(); i++) { MediaItemInfo inputMediaItemInfo = inputMediaItemInfoList.get(i); editingEndedEventBuilder.addInputMediaItemInfo(inputMediaItemInfo); } + editingEndedEventBuilder.setOutputMediaItemInfo(getOutputMediaItemInfo(exportResult)); editingSession.reportEditingEndedEvent(editingEndedEventBuilder.build()); editingSession.close(); @@ -246,7 +248,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; return editingEndedEventBuilder; } - private static List getMediaItemInfos( + private static List getInputMediaItemInfos( ImmutableList processedInputs) { List mediaItemInfoList = new ArrayList<>(); for (int i = 0; i < processedInputs.size(); i++) { @@ -312,6 +314,14 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; return mediaItemInfoList; } + private static MediaItemInfo getOutputMediaItemInfo(ExportResult exportResult) { + MediaItemInfo.Builder mediaItemInfoBuilder = new MediaItemInfo.Builder(); + if (exportResult.durationMs != C.TIME_UNSET) { + mediaItemInfoBuilder.setDurationMillis(exportResult.durationMs); + } + return mediaItemInfoBuilder.build(); + } + private static int getEditingEndedEventErrorCode(@ExportException.ErrorCode int errorCode) { return ERROR_CODE_CONVERSION_MAP.get(errorCode, EditingEndedEvent.ERROR_CODE_NONE); } 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 3553e5dc42..9a1fe0fdf0 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java @@ -1619,7 +1619,7 @@ public final class Transformer { listener -> listener.onCompleted(checkNotNull(composition), exportResult)); listeners.flushEvents(); if (canCollectEditingMetrics()) { - checkNotNull(editingMetricsCollector).onExportSuccess(exportResult.processedInputs); + checkNotNull(editingMetricsCollector).onExportSuccess(exportResult); } transformerState = TRANSFORMER_STATE_PROCESS_FULL_INPUT; } @@ -1639,7 +1639,7 @@ public final class Transformer { ? progressHolder.progress : C.PERCENTAGE_UNSET; checkNotNull(editingMetricsCollector) - .onExportError(progressPercentage, exception, exportResult.processedInputs); + .onExportError(progressPercentage, exception, exportResult); } transformerState = TRANSFORMER_STATE_PROCESS_FULL_INPUT; }