mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
Replace usages of deprecated TransformationRequest setter
PiperOrigin-RevId: 543765376
This commit is contained in:
parent
dc311fd0ca
commit
b358d075a1
9 changed files with 96 additions and 111 deletions
|
|
@ -87,7 +87,6 @@ import androidx.media3.transformer.Effects;
|
||||||
import androidx.media3.transformer.ExportException;
|
import androidx.media3.transformer.ExportException;
|
||||||
import androidx.media3.transformer.ExportResult;
|
import androidx.media3.transformer.ExportResult;
|
||||||
import androidx.media3.transformer.ProgressHolder;
|
import androidx.media3.transformer.ProgressHolder;
|
||||||
import androidx.media3.transformer.TransformationRequest;
|
|
||||||
import androidx.media3.transformer.Transformer;
|
import androidx.media3.transformer.Transformer;
|
||||||
import androidx.media3.ui.AspectRatioFrameLayout;
|
import androidx.media3.ui.AspectRatioFrameLayout;
|
||||||
import androidx.media3.ui.PlayerView;
|
import androidx.media3.ui.PlayerView;
|
||||||
|
|
@ -100,7 +99,6 @@ import com.google.common.util.concurrent.ListenableFuture;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.lang.reflect.Constructor;
|
import java.lang.reflect.Constructor;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.CountDownLatch;
|
import java.util.concurrent.CountDownLatch;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
|
|
@ -299,17 +297,14 @@ public final class TransformerActivity extends AppCompatActivity {
|
||||||
private Transformer createTransformer(@Nullable Bundle bundle, Uri inputUri, String filePath) {
|
private Transformer createTransformer(@Nullable Bundle bundle, Uri inputUri, String filePath) {
|
||||||
Transformer.Builder transformerBuilder = new Transformer.Builder(/* context= */ this);
|
Transformer.Builder transformerBuilder = new Transformer.Builder(/* context= */ this);
|
||||||
if (bundle != null) {
|
if (bundle != null) {
|
||||||
TransformationRequest.Builder requestBuilder = new TransformationRequest.Builder();
|
|
||||||
@Nullable String audioMimeType = bundle.getString(ConfigurationActivity.AUDIO_MIME_TYPE);
|
@Nullable String audioMimeType = bundle.getString(ConfigurationActivity.AUDIO_MIME_TYPE);
|
||||||
if (audioMimeType != null) {
|
if (audioMimeType != null) {
|
||||||
requestBuilder.setAudioMimeType(audioMimeType);
|
transformerBuilder.setAudioMimeType(audioMimeType);
|
||||||
}
|
}
|
||||||
@Nullable String videoMimeType = bundle.getString(ConfigurationActivity.VIDEO_MIME_TYPE);
|
@Nullable String videoMimeType = bundle.getString(ConfigurationActivity.VIDEO_MIME_TYPE);
|
||||||
if (videoMimeType != null) {
|
if (videoMimeType != null) {
|
||||||
requestBuilder.setVideoMimeType(videoMimeType);
|
transformerBuilder.setVideoMimeType(videoMimeType);
|
||||||
}
|
}
|
||||||
requestBuilder.setHdrMode(bundle.getInt(ConfigurationActivity.HDR_MODE));
|
|
||||||
transformerBuilder.setTransformationRequest(requestBuilder.build());
|
|
||||||
|
|
||||||
transformerBuilder.setEncoderFactory(
|
transformerBuilder.setEncoderFactory(
|
||||||
new DefaultEncoderFactory.Builder(this.getApplicationContext())
|
new DefaultEncoderFactory.Builder(this.getApplicationContext())
|
||||||
|
|
@ -368,7 +363,6 @@ public final class TransformerActivity extends AppCompatActivity {
|
||||||
EditedMediaItem.Builder editedMediaItemBuilder = new EditedMediaItem.Builder(mediaItem);
|
EditedMediaItem.Builder editedMediaItemBuilder = new EditedMediaItem.Builder(mediaItem);
|
||||||
// For image inputs. Automatically ignored if input is audio/video.
|
// For image inputs. Automatically ignored if input is audio/video.
|
||||||
editedMediaItemBuilder.setDurationUs(5_000_000).setFrameRate(30);
|
editedMediaItemBuilder.setDurationUs(5_000_000).setFrameRate(30);
|
||||||
boolean forceAudioTrack = false;
|
|
||||||
if (bundle != null) {
|
if (bundle != null) {
|
||||||
ImmutableList<AudioProcessor> audioProcessors = createAudioProcessorsFromBundle(bundle);
|
ImmutableList<AudioProcessor> audioProcessors = createAudioProcessorsFromBundle(bundle);
|
||||||
ImmutableList<Effect> videoEffects = createVideoEffectsFromBundle(bundle);
|
ImmutableList<Effect> videoEffects = createVideoEffectsFromBundle(bundle);
|
||||||
|
|
@ -378,15 +372,18 @@ public final class TransformerActivity extends AppCompatActivity {
|
||||||
.setFlattenForSlowMotion(
|
.setFlattenForSlowMotion(
|
||||||
bundle.getBoolean(ConfigurationActivity.SHOULD_FLATTEN_FOR_SLOW_MOTION))
|
bundle.getBoolean(ConfigurationActivity.SHOULD_FLATTEN_FOR_SLOW_MOTION))
|
||||||
.setEffects(new Effects(audioProcessors, videoEffects));
|
.setEffects(new Effects(audioProcessors, videoEffects));
|
||||||
forceAudioTrack = bundle.getBoolean(ConfigurationActivity.FORCE_AUDIO_TRACK);
|
|
||||||
}
|
}
|
||||||
List<EditedMediaItem> editedMediaItems = new ArrayList<>();
|
List<EditedMediaItem> editedMediaItems = ImmutableList.of(editedMediaItemBuilder.build());
|
||||||
editedMediaItems.add(editedMediaItemBuilder.build());
|
List<EditedMediaItemSequence> sequences =
|
||||||
List<EditedMediaItemSequence> sequences = new ArrayList<>();
|
ImmutableList.of(new EditedMediaItemSequence(editedMediaItems));
|
||||||
sequences.add(new EditedMediaItemSequence(editedMediaItems));
|
Composition.Builder compositionBuilder = new Composition.Builder(sequences);
|
||||||
return new Composition.Builder(sequences)
|
if (bundle != null) {
|
||||||
.experimentalSetForceAudioTrack(forceAudioTrack)
|
compositionBuilder
|
||||||
.build();
|
.setHdrMode(bundle.getInt(ConfigurationActivity.HDR_MODE))
|
||||||
|
.experimentalSetForceAudioTrack(
|
||||||
|
bundle.getBoolean(ConfigurationActivity.FORCE_AUDIO_TRACK));
|
||||||
|
}
|
||||||
|
return compositionBuilder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
private ImmutableList<AudioProcessor> createAudioProcessorsFromBundle(Bundle bundle) {
|
private ImmutableList<AudioProcessor> createAudioProcessorsFromBundle(Bundle bundle) {
|
||||||
|
|
|
||||||
|
|
@ -30,18 +30,21 @@ import androidx.media3.common.C;
|
||||||
import androidx.media3.common.ColorInfo;
|
import androidx.media3.common.ColorInfo;
|
||||||
import androidx.media3.common.Format;
|
import androidx.media3.common.Format;
|
||||||
import androidx.media3.common.MediaItem;
|
import androidx.media3.common.MediaItem;
|
||||||
|
import androidx.media3.transformer.Composition;
|
||||||
|
import androidx.media3.transformer.EditedMediaItem;
|
||||||
|
import androidx.media3.transformer.EditedMediaItemSequence;
|
||||||
import androidx.media3.transformer.ExportTestResult;
|
import androidx.media3.transformer.ExportTestResult;
|
||||||
import androidx.media3.transformer.TransformationRequest;
|
|
||||||
import androidx.media3.transformer.Transformer;
|
import androidx.media3.transformer.Transformer;
|
||||||
import androidx.media3.transformer.TransformerAndroidTestRunner;
|
import androidx.media3.transformer.TransformerAndroidTestRunner;
|
||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link Transformer} instrumentation test for {@linkplain
|
* {@link Transformer} instrumentation test for {@linkplain
|
||||||
* TransformationRequest#HDR_MODE_EXPERIMENTAL_FORCE_INTERPRET_HDR_AS_SDR forcing HDR contents to be
|
* Composition#HDR_MODE_EXPERIMENTAL_FORCE_INTERPRET_HDR_AS_SDR forcing HDR contents to be
|
||||||
* interpreted as SDR}.
|
* interpreted as SDR}.
|
||||||
*/
|
*/
|
||||||
@RunWith(AndroidJUnit4.class)
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
|
@ -70,19 +73,19 @@ public class ForceInterpretHdrVideoAsSdrTest {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Transformer transformer =
|
Transformer transformer = new Transformer.Builder(context).build();
|
||||||
new Transformer.Builder(context)
|
|
||||||
.setTransformationRequest(
|
|
||||||
new TransformationRequest.Builder()
|
|
||||||
.setHdrMode(
|
|
||||||
TransformationRequest.HDR_MODE_EXPERIMENTAL_FORCE_INTERPRET_HDR_AS_SDR)
|
|
||||||
.build())
|
|
||||||
.build();
|
|
||||||
MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_720P_4_SECOND_HDR10));
|
MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_720P_4_SECOND_HDR10));
|
||||||
|
EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build();
|
||||||
|
EditedMediaItemSequence sequence =
|
||||||
|
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
|
||||||
|
Composition composition =
|
||||||
|
new Composition.Builder(ImmutableList.of(sequence))
|
||||||
|
.setHdrMode(Composition.HDR_MODE_EXPERIMENTAL_FORCE_INTERPRET_HDR_AS_SDR)
|
||||||
|
.build();
|
||||||
ExportTestResult exportTestResult =
|
ExportTestResult exportTestResult =
|
||||||
new TransformerAndroidTestRunner.Builder(context, transformer)
|
new TransformerAndroidTestRunner.Builder(context, transformer)
|
||||||
.build()
|
.build()
|
||||||
.run(testId, mediaItem);
|
.run(testId, composition);
|
||||||
|
|
||||||
assertFileHasColorTransfer(context, exportTestResult.filePath, C.COLOR_TRANSFER_SDR);
|
assertFileHasColorTransfer(context, exportTestResult.filePath, C.COLOR_TRANSFER_SDR);
|
||||||
}
|
}
|
||||||
|
|
@ -110,19 +113,19 @@ public class ForceInterpretHdrVideoAsSdrTest {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Transformer transformer =
|
Transformer transformer = new Transformer.Builder(context).build();
|
||||||
new Transformer.Builder(context)
|
|
||||||
.setTransformationRequest(
|
|
||||||
new TransformationRequest.Builder()
|
|
||||||
.setHdrMode(
|
|
||||||
TransformationRequest.HDR_MODE_EXPERIMENTAL_FORCE_INTERPRET_HDR_AS_SDR)
|
|
||||||
.build())
|
|
||||||
.build();
|
|
||||||
MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10));
|
MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10));
|
||||||
|
EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build();
|
||||||
|
EditedMediaItemSequence sequence =
|
||||||
|
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
|
||||||
|
Composition composition =
|
||||||
|
new Composition.Builder(ImmutableList.of(sequence))
|
||||||
|
.setHdrMode(Composition.HDR_MODE_EXPERIMENTAL_FORCE_INTERPRET_HDR_AS_SDR)
|
||||||
|
.build();
|
||||||
ExportTestResult exportTestResult =
|
ExportTestResult exportTestResult =
|
||||||
new TransformerAndroidTestRunner.Builder(context, transformer)
|
new TransformerAndroidTestRunner.Builder(context, transformer)
|
||||||
.build()
|
.build()
|
||||||
.run(testId, mediaItem);
|
.run(testId, composition);
|
||||||
|
|
||||||
assertFileHasColorTransfer(context, exportTestResult.filePath, C.COLOR_TRANSFER_SDR);
|
assertFileHasColorTransfer(context, exportTestResult.filePath, C.COLOR_TRANSFER_SDR);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,9 @@ import androidx.media3.common.C;
|
||||||
import androidx.media3.common.ColorInfo;
|
import androidx.media3.common.ColorInfo;
|
||||||
import androidx.media3.common.MediaItem;
|
import androidx.media3.common.MediaItem;
|
||||||
import androidx.media3.transformer.AndroidTestUtil;
|
import androidx.media3.transformer.AndroidTestUtil;
|
||||||
|
import androidx.media3.transformer.Composition;
|
||||||
import androidx.media3.transformer.EditedMediaItem;
|
import androidx.media3.transformer.EditedMediaItem;
|
||||||
|
import androidx.media3.transformer.EditedMediaItemSequence;
|
||||||
import androidx.media3.transformer.ExportException;
|
import androidx.media3.transformer.ExportException;
|
||||||
import androidx.media3.transformer.ExportTestResult;
|
import androidx.media3.transformer.ExportTestResult;
|
||||||
import androidx.media3.transformer.TransformationRequest;
|
import androidx.media3.transformer.TransformationRequest;
|
||||||
|
|
@ -37,14 +39,14 @@ import androidx.media3.transformer.Transformer;
|
||||||
import androidx.media3.transformer.TransformerAndroidTestRunner;
|
import androidx.media3.transformer.TransformerAndroidTestRunner;
|
||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link Transformer} instrumentation test for applying an {@linkplain
|
* {@link Transformer} instrumentation test for applying an {@linkplain
|
||||||
* TransformationRequest#HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC HDR to SDR tone mapping
|
* Composition#HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC HDR to SDR tone mapping edit}.
|
||||||
* edit}.
|
|
||||||
*/
|
*/
|
||||||
@RunWith(AndroidJUnit4.class)
|
@RunWith(AndroidJUnit4.class)
|
||||||
public class ToneMapHdrToSdrUsingMediaCodecTest {
|
public class ToneMapHdrToSdrUsingMediaCodecTest {
|
||||||
|
|
@ -67,10 +69,6 @@ public class ToneMapHdrToSdrUsingMediaCodecTest {
|
||||||
|
|
||||||
Transformer transformer =
|
Transformer transformer =
|
||||||
new Transformer.Builder(context)
|
new Transformer.Builder(context)
|
||||||
.setTransformationRequest(
|
|
||||||
new TransformationRequest.Builder()
|
|
||||||
.setHdrMode(TransformationRequest.HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC)
|
|
||||||
.build())
|
|
||||||
.addListener(
|
.addListener(
|
||||||
new Transformer.Listener() {
|
new Transformer.Listener() {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -86,12 +84,19 @@ public class ToneMapHdrToSdrUsingMediaCodecTest {
|
||||||
})
|
})
|
||||||
.build();
|
.build();
|
||||||
MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_720P_4_SECOND_HDR10));
|
MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_720P_4_SECOND_HDR10));
|
||||||
|
EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build();
|
||||||
|
EditedMediaItemSequence sequence =
|
||||||
|
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
|
||||||
|
Composition composition =
|
||||||
|
new Composition.Builder(ImmutableList.of(sequence))
|
||||||
|
.setHdrMode(Composition.HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC)
|
||||||
|
.build();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ExportTestResult exportTestResult =
|
ExportTestResult exportTestResult =
|
||||||
new TransformerAndroidTestRunner.Builder(context, transformer)
|
new TransformerAndroidTestRunner.Builder(context, transformer)
|
||||||
.build()
|
.build()
|
||||||
.run(testId, mediaItem);
|
.run(testId, composition);
|
||||||
assertFileHasColorTransfer(context, exportTestResult.filePath, C.COLOR_TRANSFER_SDR);
|
assertFileHasColorTransfer(context, exportTestResult.filePath, C.COLOR_TRANSFER_SDR);
|
||||||
} catch (ExportException exception) {
|
} catch (ExportException exception) {
|
||||||
if (exception.getCause() != null
|
if (exception.getCause() != null
|
||||||
|
|
@ -126,10 +131,6 @@ public class ToneMapHdrToSdrUsingMediaCodecTest {
|
||||||
|
|
||||||
Transformer transformer =
|
Transformer transformer =
|
||||||
new Transformer.Builder(context)
|
new Transformer.Builder(context)
|
||||||
.setTransformationRequest(
|
|
||||||
new TransformationRequest.Builder()
|
|
||||||
.setHdrMode(TransformationRequest.HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC)
|
|
||||||
.build())
|
|
||||||
.addListener(
|
.addListener(
|
||||||
new Transformer.Listener() {
|
new Transformer.Listener() {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -145,12 +146,19 @@ public class ToneMapHdrToSdrUsingMediaCodecTest {
|
||||||
})
|
})
|
||||||
.build();
|
.build();
|
||||||
MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10));
|
MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10));
|
||||||
|
EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build();
|
||||||
|
EditedMediaItemSequence sequence =
|
||||||
|
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
|
||||||
|
Composition composition =
|
||||||
|
new Composition.Builder(ImmutableList.of(sequence))
|
||||||
|
.setHdrMode(Composition.HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC)
|
||||||
|
.build();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ExportTestResult exportTestResult =
|
ExportTestResult exportTestResult =
|
||||||
new TransformerAndroidTestRunner.Builder(context, transformer)
|
new TransformerAndroidTestRunner.Builder(context, transformer)
|
||||||
.build()
|
.build()
|
||||||
.run(testId, mediaItem);
|
.run(testId, composition);
|
||||||
assertFileHasColorTransfer(context, exportTestResult.filePath, C.COLOR_TRANSFER_SDR);
|
assertFileHasColorTransfer(context, exportTestResult.filePath, C.COLOR_TRANSFER_SDR);
|
||||||
} catch (ExportException exception) {
|
} catch (ExportException exception) {
|
||||||
if (exception.getCause() != null
|
if (exception.getCause() != null
|
||||||
|
|
@ -185,10 +193,6 @@ public class ToneMapHdrToSdrUsingMediaCodecTest {
|
||||||
|
|
||||||
Transformer transformer =
|
Transformer transformer =
|
||||||
new Transformer.Builder(context)
|
new Transformer.Builder(context)
|
||||||
.setTransformationRequest(
|
|
||||||
new TransformationRequest.Builder()
|
|
||||||
.setHdrMode(TransformationRequest.HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC)
|
|
||||||
.build())
|
|
||||||
.addListener(
|
.addListener(
|
||||||
new Transformer.Listener() {
|
new Transformer.Listener() {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -206,12 +210,18 @@ public class ToneMapHdrToSdrUsingMediaCodecTest {
|
||||||
MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_720P_4_SECOND_HDR10));
|
MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_720P_4_SECOND_HDR10));
|
||||||
EditedMediaItem editedMediaItem =
|
EditedMediaItem editedMediaItem =
|
||||||
new EditedMediaItem.Builder(mediaItem).setEffects(FORCE_TRANSCODE_VIDEO_EFFECTS).build();
|
new EditedMediaItem.Builder(mediaItem).setEffects(FORCE_TRANSCODE_VIDEO_EFFECTS).build();
|
||||||
|
EditedMediaItemSequence sequence =
|
||||||
|
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
|
||||||
|
Composition composition =
|
||||||
|
new Composition.Builder(ImmutableList.of(sequence))
|
||||||
|
.setHdrMode(Composition.HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC)
|
||||||
|
.build();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ExportTestResult exportTestResult =
|
ExportTestResult exportTestResult =
|
||||||
new TransformerAndroidTestRunner.Builder(context, transformer)
|
new TransformerAndroidTestRunner.Builder(context, transformer)
|
||||||
.build()
|
.build()
|
||||||
.run(testId, editedMediaItem);
|
.run(testId, composition);
|
||||||
assertFileHasColorTransfer(context, exportTestResult.filePath, C.COLOR_TRANSFER_SDR);
|
assertFileHasColorTransfer(context, exportTestResult.filePath, C.COLOR_TRANSFER_SDR);
|
||||||
} catch (ExportException exception) {
|
} catch (ExportException exception) {
|
||||||
if (exception.getCause() != null
|
if (exception.getCause() != null
|
||||||
|
|
@ -246,10 +256,6 @@ public class ToneMapHdrToSdrUsingMediaCodecTest {
|
||||||
|
|
||||||
Transformer transformer =
|
Transformer transformer =
|
||||||
new Transformer.Builder(context)
|
new Transformer.Builder(context)
|
||||||
.setTransformationRequest(
|
|
||||||
new TransformationRequest.Builder()
|
|
||||||
.setHdrMode(TransformationRequest.HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC)
|
|
||||||
.build())
|
|
||||||
.addListener(
|
.addListener(
|
||||||
new Transformer.Listener() {
|
new Transformer.Listener() {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -267,12 +273,18 @@ public class ToneMapHdrToSdrUsingMediaCodecTest {
|
||||||
MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10));
|
MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10));
|
||||||
EditedMediaItem editedMediaItem =
|
EditedMediaItem editedMediaItem =
|
||||||
new EditedMediaItem.Builder(mediaItem).setEffects(FORCE_TRANSCODE_VIDEO_EFFECTS).build();
|
new EditedMediaItem.Builder(mediaItem).setEffects(FORCE_TRANSCODE_VIDEO_EFFECTS).build();
|
||||||
|
EditedMediaItemSequence sequence =
|
||||||
|
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
|
||||||
|
Composition composition =
|
||||||
|
new Composition.Builder(ImmutableList.of(sequence))
|
||||||
|
.setHdrMode(Composition.HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC)
|
||||||
|
.build();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ExportTestResult exportTestResult =
|
ExportTestResult exportTestResult =
|
||||||
new TransformerAndroidTestRunner.Builder(context, transformer)
|
new TransformerAndroidTestRunner.Builder(context, transformer)
|
||||||
.build()
|
.build()
|
||||||
.run(testId, editedMediaItem);
|
.run(testId, composition);
|
||||||
assertFileHasColorTransfer(context, exportTestResult.filePath, C.COLOR_TRANSFER_SDR);
|
assertFileHasColorTransfer(context, exportTestResult.filePath, C.COLOR_TRANSFER_SDR);
|
||||||
} catch (ExportException exception) {
|
} catch (ExportException exception) {
|
||||||
if (exception.getCause() != null
|
if (exception.getCause() != null
|
||||||
|
|
|
||||||
|
|
@ -34,12 +34,15 @@ import androidx.media3.common.util.GlUtil;
|
||||||
import androidx.media3.common.util.Util;
|
import androidx.media3.common.util.Util;
|
||||||
import androidx.media3.exoplayer.mediacodec.MediaCodecUtil;
|
import androidx.media3.exoplayer.mediacodec.MediaCodecUtil;
|
||||||
import androidx.media3.transformer.AndroidTestUtil;
|
import androidx.media3.transformer.AndroidTestUtil;
|
||||||
|
import androidx.media3.transformer.Composition;
|
||||||
|
import androidx.media3.transformer.EditedMediaItem;
|
||||||
|
import androidx.media3.transformer.EditedMediaItemSequence;
|
||||||
import androidx.media3.transformer.ExportTestResult;
|
import androidx.media3.transformer.ExportTestResult;
|
||||||
import androidx.media3.transformer.TransformationRequest;
|
|
||||||
import androidx.media3.transformer.Transformer;
|
import androidx.media3.transformer.Transformer;
|
||||||
import androidx.media3.transformer.TransformerAndroidTestRunner;
|
import androidx.media3.transformer.TransformerAndroidTestRunner;
|
||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
@ -47,7 +50,7 @@ import org.junit.runner.RunWith;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link Transformer} instrumentation test for applying an {@linkplain
|
* {@link Transformer} instrumentation test for applying an {@linkplain
|
||||||
* TransformationRequest#HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL HDR to SDR tone mapping edit}.
|
* Composition#HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL HDR to SDR tone mapping edit}.
|
||||||
*/
|
*/
|
||||||
@RunWith(AndroidJUnit4.class)
|
@RunWith(AndroidJUnit4.class)
|
||||||
public class ToneMapHdrToSdrUsingOpenGlTest {
|
public class ToneMapHdrToSdrUsingOpenGlTest {
|
||||||
|
|
@ -88,17 +91,19 @@ public class ToneMapHdrToSdrUsingOpenGlTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void runTransformerWithOpenGlToneMapping(String testId, String fileUri) throws Exception {
|
private void runTransformerWithOpenGlToneMapping(String testId, String fileUri) throws Exception {
|
||||||
Transformer transformer =
|
Transformer transformer = new Transformer.Builder(context).build();
|
||||||
new Transformer.Builder(context)
|
MediaItem mediaItem = MediaItem.fromUri(fileUri);
|
||||||
.setTransformationRequest(
|
EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build();
|
||||||
new TransformationRequest.Builder()
|
EditedMediaItemSequence sequence =
|
||||||
.setHdrMode(TransformationRequest.HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL)
|
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
|
||||||
.build())
|
Composition composition =
|
||||||
|
new Composition.Builder(ImmutableList.of(sequence))
|
||||||
|
.setHdrMode(Composition.HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL)
|
||||||
.build();
|
.build();
|
||||||
ExportTestResult exportTestResult =
|
ExportTestResult exportTestResult =
|
||||||
new TransformerAndroidTestRunner.Builder(context, transformer)
|
new TransformerAndroidTestRunner.Builder(context, transformer)
|
||||||
.build()
|
.build()
|
||||||
.run(testId, MediaItem.fromUri(fileUri));
|
.run(testId, composition);
|
||||||
assertFileHasColorTransfer(context, exportTestResult.filePath, C.COLOR_TRANSFER_SDR);
|
assertFileHasColorTransfer(context, exportTestResult.filePath, C.COLOR_TRANSFER_SDR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,6 @@ import androidx.media3.transformer.AndroidTestUtil;
|
||||||
import androidx.media3.transformer.DefaultEncoderFactory;
|
import androidx.media3.transformer.DefaultEncoderFactory;
|
||||||
import androidx.media3.transformer.EditedMediaItem;
|
import androidx.media3.transformer.EditedMediaItem;
|
||||||
import androidx.media3.transformer.ExportTestResult;
|
import androidx.media3.transformer.ExportTestResult;
|
||||||
import androidx.media3.transformer.TransformationRequest;
|
|
||||||
import androidx.media3.transformer.Transformer;
|
import androidx.media3.transformer.Transformer;
|
||||||
import androidx.media3.transformer.TransformerAndroidTestRunner;
|
import androidx.media3.transformer.TransformerAndroidTestRunner;
|
||||||
import androidx.media3.transformer.VideoEncoderSettings;
|
import androidx.media3.transformer.VideoEncoderSettings;
|
||||||
|
|
@ -58,8 +57,7 @@ public final class TranscodeQualityTest {
|
||||||
|
|
||||||
Transformer transformer =
|
Transformer transformer =
|
||||||
new Transformer.Builder(context)
|
new Transformer.Builder(context)
|
||||||
.setTransformationRequest(
|
.setVideoMimeType(MimeTypes.VIDEO_H264)
|
||||||
new TransformationRequest.Builder().setVideoMimeType(MimeTypes.VIDEO_H264).build())
|
|
||||||
.setEncoderFactory(
|
.setEncoderFactory(
|
||||||
new DefaultEncoderFactory.Builder(context)
|
new DefaultEncoderFactory.Builder(context)
|
||||||
.setRequestedVideoEncoderSettings(
|
.setRequestedVideoEncoderSettings(
|
||||||
|
|
@ -104,10 +102,7 @@ public final class TranscodeQualityTest {
|
||||||
assumeTrue(!Util.MODEL.equals("SM-F711U1") && !Util.MODEL.equals("SM-F926U1"));
|
assumeTrue(!Util.MODEL.equals("SM-F711U1") && !Util.MODEL.equals("SM-F926U1"));
|
||||||
|
|
||||||
Transformer transformer =
|
Transformer transformer =
|
||||||
new Transformer.Builder(context)
|
new Transformer.Builder(context).setVideoMimeType(MimeTypes.VIDEO_H265).build();
|
||||||
.setTransformationRequest(
|
|
||||||
new TransformationRequest.Builder().setVideoMimeType(MimeTypes.VIDEO_H265).build())
|
|
||||||
.build();
|
|
||||||
MediaItem mediaItem =
|
MediaItem mediaItem =
|
||||||
MediaItem.fromUri(
|
MediaItem.fromUri(
|
||||||
Uri.parse(AndroidTestUtil.MP4_ASSET_WITH_INCREASING_TIMESTAMPS_URI_STRING));
|
Uri.parse(AndroidTestUtil.MP4_ASSET_WITH_INCREASING_TIMESTAMPS_URI_STRING));
|
||||||
|
|
@ -135,8 +130,7 @@ public final class TranscodeQualityTest {
|
||||||
|
|
||||||
Transformer transformer =
|
Transformer transformer =
|
||||||
new Transformer.Builder(context)
|
new Transformer.Builder(context)
|
||||||
.setTransformationRequest(
|
.setVideoMimeType(MimeTypes.VIDEO_H264)
|
||||||
new TransformationRequest.Builder().setVideoMimeType(MimeTypes.VIDEO_H264).build())
|
|
||||||
.setEncoderFactory(new AndroidTestUtil.ForceEncodeEncoderFactory(context))
|
.setEncoderFactory(new AndroidTestUtil.ForceEncodeEncoderFactory(context))
|
||||||
.build();
|
.build();
|
||||||
MediaItem mediaItem =
|
MediaItem mediaItem =
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@ import androidx.media3.common.MediaItem;
|
||||||
import androidx.media3.transformer.AndroidTestUtil;
|
import androidx.media3.transformer.AndroidTestUtil;
|
||||||
import androidx.media3.transformer.EditedMediaItem;
|
import androidx.media3.transformer.EditedMediaItem;
|
||||||
import androidx.media3.transformer.ExportTestResult;
|
import androidx.media3.transformer.ExportTestResult;
|
||||||
import androidx.media3.transformer.TransformationRequest;
|
|
||||||
import androidx.media3.transformer.Transformer;
|
import androidx.media3.transformer.Transformer;
|
||||||
import androidx.media3.transformer.TransformerAndroidTestRunner;
|
import androidx.media3.transformer.TransformerAndroidTestRunner;
|
||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
|
@ -116,7 +115,6 @@ public final class RepeatedTranscodeTest {
|
||||||
new TransformerAndroidTestRunner.Builder(
|
new TransformerAndroidTestRunner.Builder(
|
||||||
context,
|
context,
|
||||||
new Transformer.Builder(context)
|
new Transformer.Builder(context)
|
||||||
.setTransformationRequest(new TransformationRequest.Builder().build())
|
|
||||||
.setEncoderFactory(new AndroidTestUtil.ForceEncodeEncoderFactory(context))
|
.setEncoderFactory(new AndroidTestUtil.ForceEncodeEncoderFactory(context))
|
||||||
.build())
|
.build())
|
||||||
.build();
|
.build();
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,6 @@ import androidx.media3.common.util.Util;
|
||||||
import androidx.media3.transformer.AndroidTestUtil;
|
import androidx.media3.transformer.AndroidTestUtil;
|
||||||
import androidx.media3.transformer.DefaultEncoderFactory;
|
import androidx.media3.transformer.DefaultEncoderFactory;
|
||||||
import androidx.media3.transformer.EditedMediaItem;
|
import androidx.media3.transformer.EditedMediaItem;
|
||||||
import androidx.media3.transformer.TransformationRequest;
|
|
||||||
import androidx.media3.transformer.Transformer;
|
import androidx.media3.transformer.Transformer;
|
||||||
import androidx.media3.transformer.TransformerAndroidTestRunner;
|
import androidx.media3.transformer.TransformerAndroidTestRunner;
|
||||||
import androidx.media3.transformer.VideoEncoderSettings;
|
import androidx.media3.transformer.VideoEncoderSettings;
|
||||||
|
|
@ -183,7 +182,7 @@ public class SsimMapperTest {
|
||||||
* @param testIdPrefix The test ID prefix.
|
* @param testIdPrefix The test ID prefix.
|
||||||
* @param videoUri The URI of the video to transform.
|
* @param videoUri The URI of the video to transform.
|
||||||
* @param outputMimeType The video sample MIME type to output, see {@link
|
* @param outputMimeType The video sample MIME type to output, see {@link
|
||||||
* TransformationRequest.Builder#setVideoMimeType}.
|
* Transformer.Builder#setVideoMimeType}.
|
||||||
*/
|
*/
|
||||||
public SsimBinarySearcher(
|
public SsimBinarySearcher(
|
||||||
Context context, String testIdPrefix, String videoUri, String outputMimeType) {
|
Context context, String testIdPrefix, String videoUri, String outputMimeType) {
|
||||||
|
|
@ -291,8 +290,7 @@ public class SsimMapperTest {
|
||||||
|
|
||||||
Transformer transformer =
|
Transformer transformer =
|
||||||
new Transformer.Builder(context)
|
new Transformer.Builder(context)
|
||||||
.setTransformationRequest(
|
.setVideoMimeType(outputMimeType)
|
||||||
new TransformationRequest.Builder().setVideoMimeType(outputMimeType).build())
|
|
||||||
.setEncoderFactory(
|
.setEncoderFactory(
|
||||||
new DefaultEncoderFactory.Builder(context)
|
new DefaultEncoderFactory.Builder(context)
|
||||||
.setRequestedVideoEncoderSettings(
|
.setRequestedVideoEncoderSettings(
|
||||||
|
|
|
||||||
|
|
@ -157,10 +157,7 @@ public final class MediaItemExportTest {
|
||||||
public void start_audioOnlyTranscoding_completesSuccessfully() throws Exception {
|
public void start_audioOnlyTranscoding_completesSuccessfully() throws Exception {
|
||||||
Transformer transformer =
|
Transformer transformer =
|
||||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false)
|
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false)
|
||||||
.setTransformationRequest(
|
.setAudioMimeType(MimeTypes.AUDIO_AAC) // supported by encoder and muxer
|
||||||
new TransformationRequest.Builder()
|
|
||||||
.setAudioMimeType(MimeTypes.AUDIO_AAC) // supported by encoder and muxer
|
|
||||||
.build())
|
|
||||||
.build();
|
.build();
|
||||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW);
|
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW);
|
||||||
|
|
||||||
|
|
@ -213,8 +210,7 @@ public final class MediaItemExportTest {
|
||||||
public void start_withSubtitles_completesSuccessfully() throws Exception {
|
public void start_withSubtitles_completesSuccessfully() throws Exception {
|
||||||
Transformer transformer =
|
Transformer transformer =
|
||||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false)
|
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false)
|
||||||
.setTransformationRequest(
|
.setAudioMimeType(MimeTypes.AUDIO_AAC)
|
||||||
new TransformationRequest.Builder().setAudioMimeType(MimeTypes.AUDIO_AAC).build())
|
|
||||||
.build();
|
.build();
|
||||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_WITH_SUBTITLES);
|
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_WITH_SUBTITLES);
|
||||||
|
|
||||||
|
|
@ -482,8 +478,7 @@ public final class MediaItemExportTest {
|
||||||
.addListener(mockListener1)
|
.addListener(mockListener1)
|
||||||
.addListener(mockListener2)
|
.addListener(mockListener2)
|
||||||
.addListener(mockListener3)
|
.addListener(mockListener3)
|
||||||
.setTransformationRequest( // Request transcoding so that decoder is used.
|
.setAudioMimeType(MimeTypes.AUDIO_AAC) // Request transcoding so that decoder is used.
|
||||||
new TransformationRequest.Builder().setAudioMimeType(MimeTypes.AUDIO_AAC).build())
|
|
||||||
.build();
|
.build();
|
||||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_DECODER);
|
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_DECODER);
|
||||||
|
|
||||||
|
|
@ -691,11 +686,7 @@ public final class MediaItemExportTest {
|
||||||
public void start_withAudioEncoderFormatUnsupported_completesWithError() {
|
public void start_withAudioEncoderFormatUnsupported_completesWithError() {
|
||||||
Transformer transformer =
|
Transformer transformer =
|
||||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false)
|
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false)
|
||||||
.setTransformationRequest(
|
.setAudioMimeType(MimeTypes.AUDIO_AMR_NB) // unsupported by encoder, supported by muxer
|
||||||
new TransformationRequest.Builder()
|
|
||||||
.setAudioMimeType(
|
|
||||||
MimeTypes.AUDIO_AMR_NB) // unsupported by encoder, supported by muxer
|
|
||||||
.build())
|
|
||||||
.build();
|
.build();
|
||||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_MUXER);
|
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_MUXER);
|
||||||
|
|
||||||
|
|
@ -711,10 +702,7 @@ public final class MediaItemExportTest {
|
||||||
public void start_withAudioDecoderFormatUnsupported_completesWithError() {
|
public void start_withAudioDecoderFormatUnsupported_completesWithError() {
|
||||||
Transformer transformer =
|
Transformer transformer =
|
||||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false)
|
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false)
|
||||||
.setTransformationRequest(
|
.setAudioMimeType(MimeTypes.AUDIO_AAC) // supported by encoder and muxer
|
||||||
new TransformationRequest.Builder()
|
|
||||||
.setAudioMimeType(MimeTypes.AUDIO_AAC) // supported by encoder and muxer
|
|
||||||
.build())
|
|
||||||
.build();
|
.build();
|
||||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_DECODER);
|
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_DECODER);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,28 +32,18 @@ public class TransformerBuilderTest {
|
||||||
@Test
|
@Test
|
||||||
public void build_withUnsupportedAudioMimeType_throws() {
|
public void build_withUnsupportedAudioMimeType_throws() {
|
||||||
Context context = ApplicationProvider.getApplicationContext();
|
Context context = ApplicationProvider.getApplicationContext();
|
||||||
TransformationRequest transformationRequest =
|
|
||||||
new TransformationRequest.Builder().setAudioMimeType(MimeTypes.AUDIO_UNKNOWN).build();
|
|
||||||
|
|
||||||
assertThrows(
|
assertThrows(
|
||||||
IllegalStateException.class,
|
IllegalStateException.class,
|
||||||
() ->
|
() -> new Transformer.Builder(context).setAudioMimeType(MimeTypes.AUDIO_UNKNOWN).build());
|
||||||
new Transformer.Builder(context)
|
|
||||||
.setTransformationRequest(transformationRequest)
|
|
||||||
.build());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void build_withUnsupportedVideoMimeType_throws() {
|
public void build_withUnsupportedVideoMimeType_throws() {
|
||||||
Context context = ApplicationProvider.getApplicationContext();
|
Context context = ApplicationProvider.getApplicationContext();
|
||||||
TransformationRequest transformationRequest =
|
|
||||||
new TransformationRequest.Builder().setVideoMimeType(MimeTypes.VIDEO_UNKNOWN).build();
|
|
||||||
|
|
||||||
assertThrows(
|
assertThrows(
|
||||||
IllegalStateException.class,
|
IllegalStateException.class,
|
||||||
() ->
|
() -> new Transformer.Builder(context).setVideoMimeType(MimeTypes.VIDEO_UNKNOWN).build());
|
||||||
new Transformer.Builder(context)
|
|
||||||
.setTransformationRequest(transformationRequest)
|
|
||||||
.build());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue