Move video track extraction method to AndroidTestUtil

The method can be reused in other tests as well

PiperOrigin-RevId: 729528829
This commit is contained in:
sheenachhabra 2025-02-21 07:55:13 -08:00 committed by Copybara-Service
parent 05c8a66dc2
commit b6aa21a427
2 changed files with 18 additions and 12 deletions

View File

@ -62,6 +62,8 @@ import androidx.media3.exoplayer.mediacodec.MediaCodecSelector;
import androidx.media3.exoplayer.mediacodec.MediaCodecUtil; import androidx.media3.exoplayer.mediacodec.MediaCodecUtil;
import androidx.media3.muxer.MuxerException; import androidx.media3.muxer.MuxerException;
import androidx.media3.test.utils.BitmapPixelTestUtil; import androidx.media3.test.utils.BitmapPixelTestUtil;
import androidx.media3.test.utils.FakeExtractorOutput;
import androidx.media3.test.utils.FakeTrackOutput;
import androidx.media3.test.utils.VideoDecodingWrapper; import androidx.media3.test.utils.VideoDecodingWrapper;
import com.google.common.base.Ascii; import com.google.common.base.Ascii;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
@ -1138,6 +1140,21 @@ public final class AndroidTestUtil {
.isAnyOf(C.COLOR_SPACE_BT709, C.COLOR_SPACE_BT601, Format.NO_VALUE); .isAnyOf(C.COLOR_SPACE_BT709, C.COLOR_SPACE_BT601, Format.NO_VALUE);
} }
/**
* Returns the {@linkplain FakeTrackOutput video track} from the {@link FakeExtractorOutput} or
* {@code null} if a video track is not found.
*/
@Nullable
public static FakeTrackOutput getVideoTrackOutput(FakeExtractorOutput extractorOutput) {
for (int i = 0; i < extractorOutput.numberOfTracks; i++) {
FakeTrackOutput trackOutput = extractorOutput.trackOutputs.get(i);
if (MimeTypes.isVideo(checkNotNull(trackOutput.lastFormat).sampleMimeType)) {
return trackOutput;
}
}
return null;
}
public static ImmutableList<Bitmap> extractBitmapsFromVideo(Context context, String filePath) public static ImmutableList<Bitmap> extractBitmapsFromVideo(Context context, String filePath)
throws IOException, InterruptedException { throws IOException, InterruptedException {
return extractBitmapsFromVideo(context, filePath, Config.ARGB_8888); return extractBitmapsFromVideo(context, filePath, Config.ARGB_8888);

View File

@ -46,6 +46,7 @@ import static androidx.media3.transformer.AndroidTestUtil.createFrameCountingEff
import static androidx.media3.transformer.AndroidTestUtil.createOpenGlObjects; import static androidx.media3.transformer.AndroidTestUtil.createOpenGlObjects;
import static androidx.media3.transformer.AndroidTestUtil.generateTextureFromBitmap; import static androidx.media3.transformer.AndroidTestUtil.generateTextureFromBitmap;
import static androidx.media3.transformer.AndroidTestUtil.getMuxerFactoryBasedOnApi; import static androidx.media3.transformer.AndroidTestUtil.getMuxerFactoryBasedOnApi;
import static androidx.media3.transformer.AndroidTestUtil.getVideoTrackOutput;
import static androidx.media3.transformer.AndroidTestUtil.recordTestSkipped; import static androidx.media3.transformer.AndroidTestUtil.recordTestSkipped;
import static androidx.media3.transformer.ExportResult.CONVERSION_PROCESS_NA; import static androidx.media3.transformer.ExportResult.CONVERSION_PROCESS_NA;
import static androidx.media3.transformer.ExportResult.CONVERSION_PROCESS_TRANSCODED; import static androidx.media3.transformer.ExportResult.CONVERSION_PROCESS_TRANSCODED;
@ -70,7 +71,6 @@ import android.os.HandlerThread;
import android.os.Looper; import android.os.Looper;
import android.os.Message; import android.os.Message;
import android.util.Pair; import android.util.Pair;
import androidx.annotation.Nullable;
import androidx.media3.common.C; import androidx.media3.common.C;
import androidx.media3.common.Effect; import androidx.media3.common.Effect;
import androidx.media3.common.Format; import androidx.media3.common.Format;
@ -2537,17 +2537,6 @@ public class TransformerEndToEndTest {
} }
} }
@Nullable
private static FakeTrackOutput getVideoTrackOutput(FakeExtractorOutput extractorOutput) {
for (int i = 0; i < extractorOutput.numberOfTracks; i++) {
FakeTrackOutput trackOutput = extractorOutput.trackOutputs.get(i);
if (MimeTypes.isVideo(checkNotNull(trackOutput.lastFormat).sampleMimeType)) {
return trackOutput;
}
}
return null;
}
private static final class VideoUnsupportedEncoderFactory implements Codec.EncoderFactory { private static final class VideoUnsupportedEncoderFactory implements Codec.EncoderFactory {
private final Codec.EncoderFactory encoderFactory; private final Codec.EncoderFactory encoderFactory;