mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Verify each export had its own session
This is done by getting the session ID for the `EditingSession` and making sure it's unique from the other session ID. PiperOrigin-RevId: 728680628
This commit is contained in:
parent
462533219d
commit
ae3eed2343
@ -28,8 +28,10 @@ import static org.junit.Assume.assumeTrue;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.media.MediaCodec;
|
import android.media.MediaCodec;
|
||||||
import android.media.metrics.EditingEndedEvent;
|
import android.media.metrics.EditingEndedEvent;
|
||||||
|
import android.media.metrics.LogSessionId;
|
||||||
import android.media.metrics.MediaItemInfo;
|
import android.media.metrics.MediaItemInfo;
|
||||||
import android.util.Size;
|
import android.util.Size;
|
||||||
|
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.MediaItem;
|
import androidx.media3.common.MediaItem;
|
||||||
@ -83,7 +85,15 @@ public class EditingMetricsCollectorTest {
|
|||||||
new Transformer.Builder(context)
|
new Transformer.Builder(context)
|
||||||
.setUsePlatformDiagnostics(false)
|
.setUsePlatformDiagnostics(false)
|
||||||
.setMetricsReporterFactory(
|
.setMetricsReporterFactory(
|
||||||
new TestMetricsReporterFactory(context, editingEndedEventAtomicReference::set))
|
new TestMetricsReporterFactory(
|
||||||
|
context,
|
||||||
|
new TestMetricsReporter.Listener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMetricsReported(EditingEndedEvent editingEndedEvent) {
|
||||||
|
editingEndedEventAtomicReference.set(editingEndedEvent);
|
||||||
|
}
|
||||||
|
}))
|
||||||
.build();
|
.build();
|
||||||
EditedMediaItem audioVideoItem =
|
EditedMediaItem audioVideoItem =
|
||||||
new EditedMediaItem.Builder(MediaItem.fromUri(MP4_ASSET.uri)).build();
|
new EditedMediaItem.Builder(MediaItem.fromUri(MP4_ASSET.uri)).build();
|
||||||
@ -108,7 +118,15 @@ public class EditingMetricsCollectorTest {
|
|||||||
new Transformer.Builder(context)
|
new Transformer.Builder(context)
|
||||||
.setUsePlatformDiagnostics(true)
|
.setUsePlatformDiagnostics(true)
|
||||||
.setMetricsReporterFactory(
|
.setMetricsReporterFactory(
|
||||||
new TestMetricsReporterFactory(context, editingEndedEventAtomicReference::set))
|
new TestMetricsReporterFactory(
|
||||||
|
context,
|
||||||
|
new TestMetricsReporter.Listener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMetricsReported(EditingEndedEvent editingEndedEvent) {
|
||||||
|
editingEndedEventAtomicReference.set(editingEndedEvent);
|
||||||
|
}
|
||||||
|
}))
|
||||||
.build();
|
.build();
|
||||||
EditedMediaItem audioVideoItem =
|
EditedMediaItem audioVideoItem =
|
||||||
new EditedMediaItem.Builder(MediaItem.fromUri(MP4_ASSET.uri)).build();
|
new EditedMediaItem.Builder(MediaItem.fromUri(MP4_ASSET.uri)).build();
|
||||||
@ -234,7 +252,15 @@ public class EditingMetricsCollectorTest {
|
|||||||
new Transformer.Builder(context)
|
new Transformer.Builder(context)
|
||||||
.setUsePlatformDiagnostics(true)
|
.setUsePlatformDiagnostics(true)
|
||||||
.setMetricsReporterFactory(
|
.setMetricsReporterFactory(
|
||||||
new TestMetricsReporterFactory(context, editingEndedEventAtomicReference::set))
|
new TestMetricsReporterFactory(
|
||||||
|
context,
|
||||||
|
new TestMetricsReporter.Listener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMetricsReported(EditingEndedEvent editingEndedEvent) {
|
||||||
|
editingEndedEventAtomicReference.set(editingEndedEvent);
|
||||||
|
}
|
||||||
|
}))
|
||||||
.setMuxerFactory(new FailingMuxerFactory())
|
.setMuxerFactory(new FailingMuxerFactory())
|
||||||
.build();
|
.build();
|
||||||
EditedMediaItem audioVideoItem =
|
EditedMediaItem audioVideoItem =
|
||||||
@ -270,7 +296,15 @@ public class EditingMetricsCollectorTest {
|
|||||||
new Transformer.Builder(context)
|
new Transformer.Builder(context)
|
||||||
.setUsePlatformDiagnostics(true)
|
.setUsePlatformDiagnostics(true)
|
||||||
.setMetricsReporterFactory(
|
.setMetricsReporterFactory(
|
||||||
new TestMetricsReporterFactory(context, editingEndedEventAtomicReference::set))
|
new TestMetricsReporterFactory(
|
||||||
|
context,
|
||||||
|
new TestMetricsReporter.Listener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMetricsReported(EditingEndedEvent editingEndedEvent) {
|
||||||
|
editingEndedEventAtomicReference.set(editingEndedEvent);
|
||||||
|
}
|
||||||
|
}))
|
||||||
.setMuxerFactory(
|
.setMuxerFactory(
|
||||||
new AndroidTestUtil.FrameBlockingMuxerFactory(
|
new AndroidTestUtil.FrameBlockingMuxerFactory(
|
||||||
PRESENTATION_TIME_US_TO_BLOCK_FRAME, countDownLatch::countDown))
|
PRESENTATION_TIME_US_TO_BLOCK_FRAME, countDownLatch::countDown))
|
||||||
@ -294,6 +328,41 @@ public class EditingMetricsCollectorTest {
|
|||||||
assertThat(editingEndedEvent.getFinalProgressPercent()).isIn(Range.closed(0f, 100f));
|
assertThat(editingEndedEvent.getFinalProgressPercent()).isIn(Range.closed(0f, 100f));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void exportTwice_createsUniqueSessions() throws Exception {
|
||||||
|
assumeTrue("Reporting metrics requires API 35", Util.SDK_INT >= 35);
|
||||||
|
assumeFormatsSupported(
|
||||||
|
context,
|
||||||
|
testId,
|
||||||
|
/* inputFormat= */ MP4_ASSET.videoFormat,
|
||||||
|
/* outputFormat= */ MP4_ASSET.videoFormat);
|
||||||
|
AtomicReference<LogSessionId> logSessionIdAtomicReference = new AtomicReference<>();
|
||||||
|
Transformer transformer =
|
||||||
|
new Transformer.Builder(context)
|
||||||
|
.setUsePlatformDiagnostics(true)
|
||||||
|
.setMetricsReporterFactory(
|
||||||
|
new TestMetricsReporterFactory(
|
||||||
|
context,
|
||||||
|
new TestMetricsReporter.Listener() {
|
||||||
|
@Override
|
||||||
|
public void onMetricsReporterCreated(LogSessionId logSessionId) {
|
||||||
|
logSessionIdAtomicReference.set(logSessionId);
|
||||||
|
}
|
||||||
|
}))
|
||||||
|
.build();
|
||||||
|
EditedMediaItem audioVideoItem =
|
||||||
|
new EditedMediaItem.Builder(MediaItem.fromUri(MP4_ASSET.uri)).build();
|
||||||
|
|
||||||
|
TransformerAndroidTestRunner transformerAndroidTestRunner =
|
||||||
|
new TransformerAndroidTestRunner.Builder(context, transformer).build();
|
||||||
|
transformerAndroidTestRunner.run(testId, audioVideoItem);
|
||||||
|
LogSessionId firstLogSessionId = logSessionIdAtomicReference.get();
|
||||||
|
transformerAndroidTestRunner.run(testId, audioVideoItem);
|
||||||
|
LogSessionId secondLogSessionId = logSessionIdAtomicReference.get();
|
||||||
|
|
||||||
|
assertThat(firstLogSessionId.getStringId()).isNotEqualTo(secondLogSessionId.getStringId());
|
||||||
|
}
|
||||||
|
|
||||||
private static final class TestMetricsReporterFactory
|
private static final class TestMetricsReporterFactory
|
||||||
implements EditingMetricsCollector.MetricsReporter.Factory {
|
implements EditingMetricsCollector.MetricsReporter.Factory {
|
||||||
|
|
||||||
@ -315,7 +384,9 @@ public class EditingMetricsCollectorTest {
|
|||||||
private static final class TestMetricsReporter
|
private static final class TestMetricsReporter
|
||||||
implements EditingMetricsCollector.MetricsReporter {
|
implements EditingMetricsCollector.MetricsReporter {
|
||||||
public interface Listener {
|
public interface Listener {
|
||||||
void onMetricsReported(EditingEndedEvent editingEndedEvent);
|
default void onMetricsReporterCreated(LogSessionId logSessionId) {}
|
||||||
|
|
||||||
|
default void onMetricsReported(EditingEndedEvent editingEndedEvent) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
private final EditingMetricsCollector.MetricsReporter wrappedMetricsReporter;
|
private final EditingMetricsCollector.MetricsReporter wrappedMetricsReporter;
|
||||||
@ -326,6 +397,15 @@ public class EditingMetricsCollectorTest {
|
|||||||
TestMetricsReporter.Listener listener) {
|
TestMetricsReporter.Listener listener) {
|
||||||
this.wrappedMetricsReporter = metricsReporter;
|
this.wrappedMetricsReporter = metricsReporter;
|
||||||
this.listener = listener;
|
this.listener = listener;
|
||||||
|
if (wrappedMetricsReporter instanceof EditingMetricsCollector.DefaultMetricsReporter) {
|
||||||
|
@Nullable
|
||||||
|
LogSessionId logSessionId =
|
||||||
|
((EditingMetricsCollector.DefaultMetricsReporter) wrappedMetricsReporter)
|
||||||
|
.getLogSessionId();
|
||||||
|
if (logSessionId != null) {
|
||||||
|
listener.onMetricsReporterCreated(logSessionId);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -23,6 +23,7 @@ import android.content.Context;
|
|||||||
import android.hardware.DataSpace;
|
import android.hardware.DataSpace;
|
||||||
import android.media.metrics.EditingEndedEvent;
|
import android.media.metrics.EditingEndedEvent;
|
||||||
import android.media.metrics.EditingSession;
|
import android.media.metrics.EditingSession;
|
||||||
|
import android.media.metrics.LogSessionId;
|
||||||
import android.media.metrics.MediaItemInfo;
|
import android.media.metrics.MediaItemInfo;
|
||||||
import android.media.metrics.MediaMetricsManager;
|
import android.media.metrics.MediaMetricsManager;
|
||||||
import android.util.Size;
|
import android.util.Size;
|
||||||
@ -115,6 +116,18 @@ import java.util.List;
|
|||||||
editingSession = null;
|
editingSession = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the {@link LogSessionId} associated with the current editing session, or {@code null}
|
||||||
|
* if no {@link EditingSession} is active.
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
|
public LogSessionId getLogSessionId() {
|
||||||
|
if (editingSession != null) {
|
||||||
|
return editingSession.getSessionId();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final String TAG = "EditingMetricsCollector";
|
private static final String TAG = "EditingMetricsCollector";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user