diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/AssetLoader.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/AssetLoader.java index e6f122591e..525eaee102 100644 --- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/AssetLoader.java +++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/AssetLoader.java @@ -64,17 +64,21 @@ public interface AssetLoader { EditedMediaItem editedMediaItem, Looper looper, Listener listener); } - /** - * A listener of {@link AssetLoader} events. - * - *
This listener can be called from any thread. - */ + /** A listener of {@link AssetLoader} events. */ interface Listener { - /** Called when the duration of the input media is known. */ + /** + * Called when the duration of the input media is known. + * + *
Can be called from any thread. + */ void onDurationUs(long durationUs); - /** Called when the number of tracks output by the asset loader is known. */ + /** + * Called when the number of tracks output by the asset loader is known. + * + *
Can be called from any thread. + */ void onTrackCount(@IntRange(from = 1) int trackCount); /** @@ -85,6 +89,10 @@ public interface AssetLoader { * *
Must be called once per {@linkplain #onTrackCount(int) declared} track. * + *
Must be called from the thread that will be used to call the returned {@link + * SampleConsumer}'s methods. This thread is generally different from the one used to access the + * {@link AssetLoader} methods. + * * @param format The {@link Format} of the input media (prior to video slow motion flattening or * to decoding). * @param supportedOutputTypes The output {@linkplain SupportedOutputTypes types} supported by @@ -107,6 +115,8 @@ public interface AssetLoader { /** * Called if an error occurs in the asset loader. In this case, the asset loader will be * {@linkplain #release() released} automatically. + * + *
Can be called from any thread.
*/
void onError(ExportException exportException);
}
diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/EncodedSamplePipeline.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/EncodedSamplePipeline.java
index 97543a2a38..c9b010c2cd 100644
--- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/EncodedSamplePipeline.java
+++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/EncodedSamplePipeline.java
@@ -37,7 +37,8 @@ import java.util.concurrent.atomic.AtomicLong;
private final Queue Can be called from any thread.
- *
* @param editedMediaItem The {@link MediaItem} with the transformations to apply to it.
* @param durationUs The duration of the {@link MediaItem}, in microseconds.
* @param trackFormat The {@link Format} of the {@link MediaItem} track corresponding to the
diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/SampleConsumer.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/SampleConsumer.java
index 8b82e86079..63ff140930 100644
--- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/SampleConsumer.java
+++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/SampleConsumer.java
@@ -21,11 +21,7 @@ import androidx.annotation.Nullable;
import com.google.android.exoplayer2.decoder.DecoderInputBuffer;
import com.google.android.exoplayer2.video.ColorInfo;
-/**
- * Consumer of encoded media samples, raw audio or raw video frames.
- *
- * All the methods in this class can be called from any thread.
- */
+/** Consumer of encoded media samples, raw audio or raw video frames. */
public interface SampleConsumer {
/**
diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/SamplePipeline.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/SamplePipeline.java
index b8372b4549..16321667a0 100644
--- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/SamplePipeline.java
+++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/SamplePipeline.java
@@ -36,6 +36,11 @@ import java.util.List;
* Pipeline for processing media data.
*
* This pipeline can be used to implement transformations of audio or video samples.
+ *
+ * The {@link SampleConsumer} and {@link OnMediaItemChangedListener} methods must be called from
+ * the same thread. This thread can change when the {@link
+ * OnMediaItemChangedListener#onMediaItemChanged(EditedMediaItem, Format, long) MediaItem} changes,
+ * and can be different from the thread used to call the other {@code SamplePipeline} methods.
*/
/* package */ abstract class SamplePipeline implements SampleConsumer, OnMediaItemChangedListener {