mirror of
https://github.com/androidx/media.git
synced 2025-04-29 22:36:54 +08:00
Add experimental prefix to setForce{Audio,Video}Track APIs
These APIs are likely to change/removed in near future. PiperOrigin-RevId: 743899703
This commit is contained in:
parent
9a700d21bf
commit
72bb474604
@ -21,7 +21,7 @@
|
||||
([#2267](https://github.com/androidx/media/issues/2267)).
|
||||
* Transformer:
|
||||
* Filling an initial gap (added via `addGap()`) with silent audio now
|
||||
requires explicitly setting `setForceAudioTrack(true)` in
|
||||
requires explicitly setting `experimentalSetForceAudioTrack(true)` in
|
||||
`EditedMediaItemSequence.Builder`. If the gap is in the middle of the
|
||||
sequence, then this flag is not required.
|
||||
* Track Selection:
|
||||
|
@ -469,7 +469,7 @@ public final class TransformerActivity extends AppCompatActivity {
|
||||
EditedMediaItemSequence.Builder editedMediaItemSequenceBuilder =
|
||||
new EditedMediaItemSequence.Builder(editedMediaItemBuilder.build());
|
||||
if (bundle != null) {
|
||||
editedMediaItemSequenceBuilder.setForceAudioTrack(
|
||||
editedMediaItemSequenceBuilder.experimentalSetForceAudioTrack(
|
||||
bundle.getBoolean(ConfigurationActivity.FORCE_AUDIO_TRACK));
|
||||
}
|
||||
Composition.Builder compositionBuilder =
|
||||
|
@ -108,7 +108,7 @@ public class CompositionPlayerSpeedAdjustmentsTest {
|
||||
compositionPlayer.setComposition(
|
||||
new Composition.Builder(
|
||||
new EditedMediaItemSequence.Builder(timestampRecordingEditedMediaItems)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build())
|
||||
.build());
|
||||
compositionPlayer.prepare();
|
||||
|
@ -1357,7 +1357,7 @@ public class TransformerEndToEndTest {
|
||||
Composition composition =
|
||||
new Composition.Builder(
|
||||
new EditedMediaItemSequence.Builder(editedMediaItem)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build())
|
||||
.build();
|
||||
ExportTestResult result =
|
||||
@ -1451,7 +1451,7 @@ public class TransformerEndToEndTest {
|
||||
Composition composition =
|
||||
new Composition.Builder(
|
||||
new EditedMediaItemSequence.Builder(editedMediaItem, editedMediaItem)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build())
|
||||
.build();
|
||||
ExportTestResult result =
|
||||
@ -1891,7 +1891,7 @@ public class TransformerEndToEndTest {
|
||||
new EditedMediaItemSequence.Builder()
|
||||
.addGap(100_000)
|
||||
.addItem(editedMediaItem)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build(),
|
||||
new EditedMediaItemSequence.Builder(editedMediaItem).build())
|
||||
.build();
|
||||
|
@ -106,7 +106,7 @@ public class TransformerGapsTest {
|
||||
new Composition.Builder(
|
||||
new EditedMediaItemSequence.Builder(
|
||||
AUDIO_ONLY_MEDIA_ITEM, AUDIO_VIDEO_MEDIA_ITEM, AUDIO_VIDEO_MEDIA_ITEM)
|
||||
.setForceVideoTrack(true)
|
||||
.experimentalSetForceVideoTrack(true)
|
||||
.build())
|
||||
.setEffects(
|
||||
new Effects(
|
||||
@ -214,7 +214,7 @@ public class TransformerGapsTest {
|
||||
.addGap(/* durationUs= */ 1_000_000)
|
||||
.addItem(VIDEO_ONLY_MEDIA_ITEM)
|
||||
.addItem(VIDEO_ONLY_MEDIA_ITEM)
|
||||
.setForceVideoTrack(true)
|
||||
.experimentalSetForceVideoTrack(true)
|
||||
.build())
|
||||
.setEffects(
|
||||
new Effects(
|
||||
@ -326,7 +326,7 @@ public class TransformerGapsTest {
|
||||
.addGap(/* durationUs= */ 1_000_000)
|
||||
.addItem(AUDIO_VIDEO_MEDIA_ITEM)
|
||||
.addItem(AUDIO_VIDEO_MEDIA_ITEM)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build())
|
||||
.build();
|
||||
TransformerAndroidTestRunner transformerAndroidTestRunner =
|
||||
@ -361,8 +361,8 @@ public class TransformerGapsTest {
|
||||
.addGap(/* durationUs= */ 1_000_000)
|
||||
.addItem(AUDIO_VIDEO_MEDIA_ITEM)
|
||||
.addItem(AUDIO_VIDEO_MEDIA_ITEM)
|
||||
.setForceAudioTrack(true)
|
||||
.setForceVideoTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.experimentalSetForceVideoTrack(true)
|
||||
.build())
|
||||
.setEffects(
|
||||
new Effects(
|
||||
|
@ -399,7 +399,7 @@ public class VideoTimestampConsistencyTest {
|
||||
/* testId= */ testName.getMethodName(),
|
||||
new Composition.Builder(
|
||||
new EditedMediaItemSequence.Builder(timestampRecordingEditedMediaItems)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build())
|
||||
.build());
|
||||
|
||||
@ -427,7 +427,7 @@ public class VideoTimestampConsistencyTest {
|
||||
compositionPlayer.setComposition(
|
||||
new Composition.Builder(
|
||||
new EditedMediaItemSequence.Builder(timestampRecordingEditedMediaItems)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build())
|
||||
.build());
|
||||
compositionPlayer.prepare();
|
||||
|
@ -120,7 +120,8 @@ public final class Composition {
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link EditedMediaItemSequence.Builder#setForceAudioTrack(boolean)} instead.
|
||||
* @deprecated Use {@link
|
||||
* EditedMediaItemSequence.Builder#experimentalSetForceAudioTrack(boolean)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
@ -234,7 +235,7 @@ public final class Composition {
|
||||
new ImmutableList.Builder<>();
|
||||
for (int i = 0; i < sequences.size(); i++) {
|
||||
updatedSequencesBuilder.add(
|
||||
sequences.get(i).buildUpon().setForceAudioTrack(forceAudioTrack).build());
|
||||
sequences.get(i).buildUpon().experimentalSetForceAudioTrack(forceAudioTrack).build());
|
||||
}
|
||||
updatedSequences = updatedSequencesBuilder.build();
|
||||
} else {
|
||||
@ -359,8 +360,8 @@ public final class Composition {
|
||||
public final Effects effects;
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link EditedMediaItemSequence.Builder#setForceAudioTrack(boolean)} to set the
|
||||
* flag and {@link EditedMediaItemSequence#forceAudioTrack} to read the flag.
|
||||
* @deprecated Use {@link EditedMediaItemSequence.Builder#experimentalSetForceAudioTrack(boolean)}
|
||||
* to set the flag and {@link EditedMediaItemSequence#forceAudioTrack} to read the flag.
|
||||
*/
|
||||
@Deprecated public final boolean forceAudioTrack;
|
||||
|
||||
|
@ -102,8 +102,8 @@ public final class EditedMediaItemSequence {
|
||||
* <p>A gap is a period of time with no media.
|
||||
*
|
||||
* <p>If the gap is added at the start of the sequence, then {@linkplain
|
||||
* #setForceAudioTrack(boolean) force audio track} or/and {@linkplain
|
||||
* #setForceVideoTrack(boolean) force video track} flag must be set appropriately.
|
||||
* #experimentalSetForceAudioTrack(boolean) force audio track} or/and {@linkplain
|
||||
* #experimentalSetForceVideoTrack(boolean) force video track} flag must be set appropriately.
|
||||
*
|
||||
* @param durationUs The duration of the gap, in milliseconds.
|
||||
* @return This builder, for convenience.
|
||||
@ -159,10 +159,12 @@ public final class EditedMediaItemSequence {
|
||||
*
|
||||
* <p>The default value is {@code false}.
|
||||
*
|
||||
* <p>This method is experimental and will be renamed or removed in a future release.
|
||||
*
|
||||
* @param forceAudioTrack Whether to force audio track.
|
||||
*/
|
||||
@CanIgnoreReturnValue
|
||||
public Builder setForceAudioTrack(boolean forceAudioTrack) {
|
||||
public Builder experimentalSetForceAudioTrack(boolean forceAudioTrack) {
|
||||
this.forceAudioTrack = forceAudioTrack;
|
||||
return this;
|
||||
}
|
||||
@ -196,10 +198,12 @@ public final class EditedMediaItemSequence {
|
||||
*
|
||||
* <p>The default value is {@code false}.
|
||||
*
|
||||
* <p>This method is experimental and will be renamed or removed in a future release.
|
||||
*
|
||||
* @param forceVideoTrack Whether to force video track.
|
||||
*/
|
||||
@CanIgnoreReturnValue
|
||||
public Builder setForceVideoTrack(boolean forceVideoTrack) {
|
||||
public Builder experimentalSetForceVideoTrack(boolean forceVideoTrack) {
|
||||
this.forceVideoTrack = forceVideoTrack;
|
||||
return this;
|
||||
}
|
||||
|
@ -68,9 +68,9 @@ public final class Effects {
|
||||
* <p>The {@linkplain AudioProcessor audio processor} and {@linkplain Effect video effect} are
|
||||
* interlinked to help maintain A/V sync. When using Transformer, if the input file doesn't have
|
||||
* audio, or audio is being removed, you may have to {@linkplain
|
||||
* EditedMediaItemSequence.Builder#setForceAudioTrack force an audio track} for the interlinked
|
||||
* effects to function correctly. Alternatively, you can use {@link SpeedChangeEffect} when input
|
||||
* has no audio.
|
||||
* EditedMediaItemSequence.Builder#experimentalSetForceAudioTrack force an audio track} for the
|
||||
* interlinked effects to function correctly. Alternatively, you can use {@link SpeedChangeEffect}
|
||||
* when input has no audio.
|
||||
*
|
||||
* @param speedProvider The {@link SpeedProvider} determining the speed for the media at specific
|
||||
* timestamps.
|
||||
|
@ -364,11 +364,13 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
||||
trackType == C.TRACK_TYPE_AUDIO
|
||||
? "The preceding MediaItem does not contain any audio track. If the sequence starts"
|
||||
+ " with an item without audio track (like images), followed by items with"
|
||||
+ " audio tracks, then EditedMediaItemSequence.Builder.setForceAudioTrack()"
|
||||
+ " needs to be set to true."
|
||||
+ " audio tracks, then"
|
||||
+ " EditedMediaItemSequence.Builder.experimentalSetForceAudioTrack() needs to"
|
||||
+ " be set to true."
|
||||
: "The preceding MediaItem does not contain any video track. If the sequence starts"
|
||||
+ " with an item without video track (audio only), followed by items with video"
|
||||
+ " tracks, then EditedMediaItemSequence.Builder.setForceVideoTrack() needs to"
|
||||
+ " tracks, then"
|
||||
+ " EditedMediaItemSequence.Builder.experimentalSetForceVideoTrack() needs to"
|
||||
+ " be set to true.";
|
||||
sampleConsumer =
|
||||
checkStateNotNull(sampleConsumersByTrackType.get(trackType), missingTrackMessage);
|
||||
|
@ -942,7 +942,7 @@ public final class Transformer {
|
||||
* C.TrackType track}, so must all items in that sequence.
|
||||
* <ul>
|
||||
* <li>For audio, this condition can be removed by setting {@link
|
||||
* EditedMediaItemSequence.Builder#setForceAudioTrack(boolean)} flag.
|
||||
* EditedMediaItemSequence.Builder#experimentalSetForceAudioTrack(boolean)} flag.
|
||||
* </ul>
|
||||
* <li>If a sequence starts with an HDR {@link EditedMediaItem}, all the following items in the
|
||||
* sequence must be HDR.
|
||||
|
@ -483,7 +483,7 @@ public class CompositionExportTest {
|
||||
new Composition.Builder(
|
||||
new EditedMediaItemSequence.Builder()
|
||||
.addGap(1_000_000)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build(),
|
||||
new EditedMediaItemSequence.Builder(audioItem1000ms).build())
|
||||
.build();
|
||||
@ -515,7 +515,7 @@ public class CompositionExportTest {
|
||||
new EditedMediaItemSequence.Builder()
|
||||
.addGap(100_000)
|
||||
.addItem(audioEditedMediaItem)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build(),
|
||||
new EditedMediaItemSequence.Builder(otherAudioEditedMediaItem).build())
|
||||
.build();
|
||||
@ -595,7 +595,7 @@ public class CompositionExportTest {
|
||||
new EditedMediaItemSequence.Builder()
|
||||
.addGap(200_000)
|
||||
.addItem(audioEditedMediaItem)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build())
|
||||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
@ -723,7 +723,7 @@ public class CompositionExportTest {
|
||||
new EditedMediaItemSequence.Builder(audioItem1000ms).build(),
|
||||
new EditedMediaItemSequence.Builder()
|
||||
.addGap(1_000_000)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build())
|
||||
.build();
|
||||
|
||||
@ -743,11 +743,11 @@ public class CompositionExportTest {
|
||||
new Composition.Builder(
|
||||
new EditedMediaItemSequence.Builder()
|
||||
.addGap(500_000)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build(),
|
||||
new EditedMediaItemSequence.Builder()
|
||||
.addGap(500_000)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build())
|
||||
.build();
|
||||
|
||||
|
@ -148,7 +148,10 @@ public final class MediaItemExportTest {
|
||||
new TestTransformerBuilder(context).setMuxerFactory(muxerFactory).build();
|
||||
|
||||
EditedMediaItemSequence gapSequence =
|
||||
new EditedMediaItemSequence.Builder().addGap(500_000).setForceAudioTrack(true).build();
|
||||
new EditedMediaItemSequence.Builder()
|
||||
.addGap(500_000)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build();
|
||||
|
||||
transformer.start(new Composition.Builder(gapSequence).build(), outputDir.newFile().getPath());
|
||||
ExportResult result = TransformerTestRunner.runLooper(transformer);
|
||||
@ -403,7 +406,7 @@ public final class MediaItemExportTest {
|
||||
Composition composition =
|
||||
new Composition.Builder(
|
||||
new EditedMediaItemSequence.Builder(editedMediaItem)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build())
|
||||
.build();
|
||||
|
||||
@ -424,7 +427,7 @@ public final class MediaItemExportTest {
|
||||
Composition composition =
|
||||
new Composition.Builder(
|
||||
new EditedMediaItemSequence.Builder(editedMediaItem)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build())
|
||||
.build();
|
||||
|
||||
@ -451,7 +454,7 @@ public final class MediaItemExportTest {
|
||||
Composition composition =
|
||||
new Composition.Builder(
|
||||
new EditedMediaItemSequence.Builder(editedMediaItem)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build())
|
||||
.build();
|
||||
|
||||
@ -479,7 +482,7 @@ public final class MediaItemExportTest {
|
||||
Composition composition =
|
||||
new Composition.Builder(
|
||||
new EditedMediaItemSequence.Builder(editedMediaItem)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build())
|
||||
.build();
|
||||
|
||||
@ -502,7 +505,7 @@ public final class MediaItemExportTest {
|
||||
Composition composition =
|
||||
new Composition.Builder(
|
||||
new EditedMediaItemSequence.Builder(editedMediaItem)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build())
|
||||
.build();
|
||||
|
||||
|
@ -173,7 +173,9 @@ public final class ParameterizedAudioExportTest {
|
||||
}
|
||||
|
||||
return new Composition.Builder(
|
||||
new EditedMediaItemSequence.Builder(items.build()).setForceAudioTrack(true).build())
|
||||
new EditedMediaItemSequence.Builder(items.build())
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build())
|
||||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
}
|
||||
|
@ -136,7 +136,9 @@ public final class ParameterizedItemExportTest {
|
||||
.build();
|
||||
Composition composition =
|
||||
new Composition.Builder(
|
||||
new EditedMediaItemSequence.Builder(item).setForceAudioTrack(true).build())
|
||||
new EditedMediaItemSequence.Builder(item)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build())
|
||||
.build();
|
||||
|
||||
transformer.start(composition, outputDir.newFile().getPath());
|
||||
|
@ -255,7 +255,7 @@ public final class SequenceExportTest {
|
||||
Composition composition =
|
||||
new Composition.Builder(
|
||||
new EditedMediaItemSequence.Builder(audioVideoMediaItem, videoOnlyMediaItem)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build())
|
||||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
@ -285,7 +285,7 @@ public final class SequenceExportTest {
|
||||
Composition composition =
|
||||
new Composition.Builder(
|
||||
new EditedMediaItemSequence.Builder(videoOnlyMediaItem, audioVideoMediaItem)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build())
|
||||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
@ -321,7 +321,7 @@ public final class SequenceExportTest {
|
||||
Composition composition =
|
||||
new Composition.Builder(
|
||||
new EditedMediaItemSequence.Builder(audioEditedMediaItem, noAudioEditedMediaItem)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build())
|
||||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
@ -357,7 +357,7 @@ public final class SequenceExportTest {
|
||||
Composition composition =
|
||||
new Composition.Builder(
|
||||
new EditedMediaItemSequence.Builder(silenceEditedMediaItem, audioEditedMediaItem)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build())
|
||||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
@ -386,7 +386,7 @@ public final class SequenceExportTest {
|
||||
Composition composition =
|
||||
new Composition.Builder(
|
||||
new EditedMediaItemSequence.Builder(videoOnlyMediaItem, videoOnlyMediaItem)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build())
|
||||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
@ -420,7 +420,7 @@ public final class SequenceExportTest {
|
||||
Composition composition =
|
||||
new Composition.Builder(
|
||||
new EditedMediaItemSequence.Builder(silenceWithEffectsItem, silenceItem)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build())
|
||||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
@ -454,7 +454,7 @@ public final class SequenceExportTest {
|
||||
Composition composition =
|
||||
new Composition.Builder(
|
||||
new EditedMediaItemSequence.Builder(silenceItem, silenceWithEffectsItem)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build())
|
||||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
@ -491,7 +491,7 @@ public final class SequenceExportTest {
|
||||
Composition composition =
|
||||
new Composition.Builder(
|
||||
new EditedMediaItemSequence.Builder(firstItem, secondItem)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build())
|
||||
.setTransmuxVideo(true)
|
||||
.build();
|
||||
@ -554,7 +554,7 @@ public final class SequenceExportTest {
|
||||
new EditedMediaItemSequence.Builder()
|
||||
.addGap(500_000)
|
||||
.addItem(audioVideoItem)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build();
|
||||
Composition composition = new Composition.Builder(sequence).build();
|
||||
|
||||
@ -574,7 +574,7 @@ public final class SequenceExportTest {
|
||||
new EditedMediaItemSequence.Builder()
|
||||
.addGap(300_000)
|
||||
.addGap(200_000)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build();
|
||||
Composition composition = new Composition.Builder(sequence).build();
|
||||
|
||||
@ -622,7 +622,7 @@ public final class SequenceExportTest {
|
||||
.addGap(200_000)
|
||||
.addGap(500_000)
|
||||
.addItem(audioItem)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build();
|
||||
Composition composition = new Composition.Builder(sequence).build();
|
||||
|
||||
@ -718,7 +718,7 @@ public final class SequenceExportTest {
|
||||
.addItem(firstAudioItem)
|
||||
.addGap(200_000)
|
||||
.addItem(secondAudioItem)
|
||||
.setForceAudioTrack(true)
|
||||
.experimentalSetForceAudioTrack(true)
|
||||
.build();
|
||||
Composition composition = new Composition.Builder(sequence).build();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user