Add additional video files.

These are providing more variety and complexity.

All files are okay to be public.

PiperOrigin-RevId: 460935247
This commit is contained in:
samrobinson 2022-07-14 12:27:05 +00:00 committed by Rohit Singh
parent 7954eeb3c2
commit b87fa45fea
2 changed files with 190 additions and 29 deletions

View File

@ -15,6 +15,8 @@
*/
package androidx.media3.transformer;
import static androidx.media3.common.MimeTypes.VIDEO_H264;
import static androidx.media3.common.MimeTypes.VIDEO_H265;
import static androidx.media3.common.util.Assertions.checkNotNull;
import static androidx.media3.common.util.Assertions.checkState;
@ -39,11 +41,12 @@ import org.json.JSONObject;
public final class AndroidTestUtil {
private static final String TAG = "AndroidTestUtil";
// TODO(b/228865104): Add device capability based test skipping.
// Format values are sourced from `mediainfo` command.
public static final String MP4_ASSET_URI_STRING = "asset:///media/mp4/sample.mp4";
public static final Format MP4_ASSET_FORMAT =
new Format.Builder()
.setSampleMimeType(MimeTypes.VIDEO_H264)
.setSampleMimeType(VIDEO_H264)
.setWidth(1080)
.setHeight(720)
.setFrameRate(29.97f)
@ -53,7 +56,7 @@ public final class AndroidTestUtil {
"asset:///media/mp4/sample_with_increasing_timestamps.mp4";
public static final Format MP4_ASSET_WITH_INCREASING_TIMESTAMPS_FORMAT =
new Format.Builder()
.setSampleMimeType(MimeTypes.VIDEO_H264)
.setSampleMimeType(VIDEO_H264)
.setWidth(1920)
.setHeight(1080)
.setFrameRate(30.00f)
@ -65,7 +68,7 @@ public final class AndroidTestUtil {
public static final Format MP4_ASSET_WITH_INCREASING_TIMESTAMPS_320W_240H_15S_FORMAT =
new Format.Builder()
.setSampleMimeType(MimeTypes.VIDEO_H264)
.setSampleMimeType(VIDEO_H264)
.setWidth(320)
.setHeight(240)
.setFrameRate(30.00f)
@ -75,7 +78,7 @@ public final class AndroidTestUtil {
"asset:///media/mp4/sample_sef_slow_motion.mp4";
public static final Format MP4_ASSET_SEF_FORMAT =
new Format.Builder()
.setSampleMimeType(MimeTypes.VIDEO_H264)
.setSampleMimeType(VIDEO_H264)
.setWidth(320)
.setHeight(240)
.setFrameRate(30.472f)
@ -85,7 +88,7 @@ public final class AndroidTestUtil {
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/android-screens-10s.mp4";
public static final Format MP4_REMOTE_10_SECONDS_FORMAT =
new Format.Builder()
.setSampleMimeType(MimeTypes.VIDEO_H264)
.setSampleMimeType(VIDEO_H264)
.setWidth(1280)
.setHeight(720)
.setFrameRate(29.97f)
@ -97,7 +100,7 @@ public final class AndroidTestUtil {
public static final Format MP4_REMOTE_H264_MP3_FORMAT =
new Format.Builder()
.setSampleMimeType(MimeTypes.VIDEO_H264)
.setSampleMimeType(VIDEO_H264)
.setWidth(1280)
.setHeight(720)
.setFrameRate(29.97f)
@ -107,7 +110,7 @@ public final class AndroidTestUtil {
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/portrait_4k60.mp4";
public static final Format MP4_REMOTE_4K60_PORTRAIT_FORMAT =
new Format.Builder()
.setSampleMimeType(MimeTypes.VIDEO_H264)
.setSampleMimeType(VIDEO_H264)
.setWidth(3840)
.setHeight(2160)
.setFrameRate(57.39f)
@ -128,7 +131,7 @@ public final class AndroidTestUtil {
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/1280w_720h_highmotion.mp4";
public static final Format MP4_REMOTE_1280W_720H_5_SECOND_HIGHMOTION_FORMAT =
new Format.Builder()
.setSampleMimeType(MimeTypes.VIDEO_H264)
.setSampleMimeType(VIDEO_H264)
.setWidth(1280)
.setHeight(720)
.setAverageBitrate(8_939_000)
@ -139,7 +142,7 @@ public final class AndroidTestUtil {
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/1440w_1440h_highmotion.mp4";
public static final Format MP4_REMOTE_1440W_1440H_5_SECOND_HIGHMOTION_FORMAT =
new Format.Builder()
.setSampleMimeType(MimeTypes.VIDEO_H264)
.setSampleMimeType(VIDEO_H264)
.setWidth(1440)
.setHeight(1440)
.setAverageBitrate(17_000_000)
@ -150,7 +153,7 @@ public final class AndroidTestUtil {
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/1920w_1080h_highmotion.mp4";
public static final Format MP4_REMOTE_1920W_1080H_5_SECOND_HIGHMOTION_FORMAT =
new Format.Builder()
.setSampleMimeType(MimeTypes.VIDEO_H264)
.setSampleMimeType(VIDEO_H264)
.setWidth(1920)
.setHeight(1080)
.setAverageBitrate(17_100_000)
@ -161,7 +164,7 @@ public final class AndroidTestUtil {
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/3840w_2160h_highmotion.mp4";
public static final Format MP4_REMOTE_3840W_2160H_5_SECOND_HIGHMOTION_FORMAT =
new Format.Builder()
.setSampleMimeType(MimeTypes.VIDEO_H264)
.setSampleMimeType(VIDEO_H264)
.setWidth(3840)
.setHeight(2160)
.setAverageBitrate(48_300_000)
@ -172,7 +175,7 @@ public final class AndroidTestUtil {
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/1280w_720h_30s_highmotion.mp4";
public static final Format MP4_REMOTE_1280W_720H_30_SECOND_HIGHMOTION_FORMAT =
new Format.Builder()
.setSampleMimeType(MimeTypes.VIDEO_H264)
.setSampleMimeType(VIDEO_H264)
.setWidth(1280)
.setHeight(720)
.setAverageBitrate(9_962_000)
@ -183,7 +186,7 @@ public final class AndroidTestUtil {
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/1920w_1080h_30s_highmotion.mp4";
public static final Format MP4_REMOTE_1920W_1080H_30_SECOND_HIGHMOTION_FORMAT =
new Format.Builder()
.setSampleMimeType(MimeTypes.VIDEO_H264)
.setSampleMimeType(VIDEO_H264)
.setWidth(1920)
.setHeight(1080)
.setAverageBitrate(15_000_000)
@ -194,13 +197,122 @@ public final class AndroidTestUtil {
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/3840w_2160h_32s_highmotion.mp4";
public static final Format MP4_REMOTE_3840W_2160H_32_SECOND_HIGHMOTION_FORMAT =
new Format.Builder()
.setSampleMimeType(MimeTypes.VIDEO_H264)
.setSampleMimeType(VIDEO_H264)
.setWidth(3840)
.setHeight(2160)
.setAverageBitrate(47_800_000)
.setFrameRate(28.414f)
.build();
public static final String MP4_REMOTE_640W_480H_31_SECOND_ROOF_SONYXPERIAXZ3 =
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/device_videos/SonyXperiaXZ3_640w_480h_31s_roof.mp4";
public static final Format MP4_REMOTE_640W_480H_31_SECOND_ROOF_SONYXPERIAXZ3_FORMAT =
new Format.Builder()
.setSampleMimeType(VIDEO_H264)
.setWidth(640)
.setHeight(480)
.setAverageBitrate(3_578_000)
.setFrameRate(30)
.build();
public static final String MP4_REMOTE_1280W_720H_30_SECOND_ROOF_ONEPLUSNORD2 =
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/device_videos/OnePlusNord2_1280w_720h_30s_roof.mp4";
public static final Format MP4_REMOTE_1280W_720H_30_SECOND_ROOF_ONEPLUSNORD2_FORMAT =
new Format.Builder()
.setSampleMimeType(VIDEO_H264)
.setWidth(1280)
.setHeight(720)
.setAverageBitrate(8_966_000)
.setFrameRate(29.763f)
.build();
public static final String MP4_REMOTE_1280W_720H_32_SECOND_ROOF_REDMINOTE9 =
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/device_videos/RedmiNote9_1280w_720h_32s_roof.mp4";
public static final Format MP4_REMOTE_1280W_720H_32_SECOND_ROOF_REDMINOTE9_FORMAT =
new Format.Builder()
.setSampleMimeType(VIDEO_H264)
.setWidth(1280)
.setHeight(720)
.setAverageBitrate(14_100_000)
.setFrameRate(30)
.build();
public static final String MP4_REMOTE_1440W_1440H_31_SECOND_ROOF_SAMSUNGS20ULTRA5G =
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/device_videos/SsS20Ultra5G_1440hw_31s_roof.mp4";
public static final Format MP4_REMOTE_1440W_1440H_31_SECOND_ROOF_SAMSUNGS20ULTRA5G_FORMAT =
new Format.Builder()
.setSampleMimeType(VIDEO_H264)
.setWidth(1440)
.setHeight(1440)
.setAverageBitrate(16_300_000)
.setFrameRate(25.931f)
.build();
public static final String MP4_REMOTE_1920W_1080H_60_FPS_30_SECOND_ROOF_ONEPLUSNORD2 =
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/device_videos/OnePlusNord2_1920w_1080h_60fr_30s_roof.mp4";
public static final Format MP4_REMOTE_1920W_1080H_60_FPS_30_SECOND_ROOF_ONEPLUSNORD2_FORMAT =
new Format.Builder()
.setSampleMimeType(VIDEO_H264)
.setWidth(1920)
.setHeight(1080)
.setAverageBitrate(20_000_000)
.setFrameRate(59.94f)
.build();
public static final String MP4_REMOTE_1920W_1080H_60_FPS_30_SECOND_ROOF_REDMINOTE9 =
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/device_videos/RedmiNote9_1920w_1080h_60fps_30s_roof.mp4";
public static final Format MP4_REMOTE_1920W_1080H_60_FPS_30_SECOND_ROOF_REDMINOTE9_FORMAT =
new Format.Builder()
.setSampleMimeType(VIDEO_H264)
.setWidth(1920)
.setHeight(1080)
.setAverageBitrate(20_100_000)
.setFrameRate(61.069f)
.build();
public static final String MP4_REMOTE_2400W_1080H_34_SECOND_ROOF_SAMSUNGS20ULTRA5G =
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/device_videos/SsS20Ultra5G_2400w_1080h_34s_roof.mp4";
public static final Format MP4_REMOTE_2400W_1080H_34_SECOND_ROOF_SAMSUNGS20ULTRA5G_FORMAT =
new Format.Builder()
.setSampleMimeType(VIDEO_H265)
.setWidth(2400)
.setHeight(1080)
.setAverageBitrate(29_500_000)
.setFrameRate(27.472f)
.build();
public static final String MP4_REMOTE_3840W_2160H_30_SECOND_ROOF_ONEPLUSNORD2 =
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/device_videos/OnePlusNord2_3840w_2160h_30s_roof.mp4";
public static final Format MP4_REMOTE_3840W_2160H_30_SECOND_ROOF_ONEPLUSNORD2_FORMAT =
new Format.Builder()
.setSampleMimeType(VIDEO_H264)
.setWidth(3840)
.setHeight(2160)
.setAverageBitrate(49_800_000)
.setFrameRate(29.802f)
.build();
public static final String MP4_REMOTE_3840W_2160H_30_SECOND_ROOF_REDMINOTE9 =
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/device_videos/RedmiNote9_3840w_2160h_30s_roof.mp4";
public static final Format MP4_REMOTE_3840W_2160H_30_SECOND_ROOF_REDMINOTE9_FORMAT =
new Format.Builder()
.setSampleMimeType(VIDEO_H264)
.setWidth(3840)
.setHeight(2160)
.setAverageBitrate(42_100_000)
.setFrameRate(30)
.build();
public static final String MP4_REMOTE_7680W_4320H_31_SECOND_ROOF_SAMSUNGS20ULTRA5G =
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/device_videos/SsS20Ultra5G_7680w_4320h_31s_roof.mp4";
public static final Format MP4_REMOTE_7680W_4320H_31_SECOND_ROOF_SAMSUNGS20ULTRA5G_FORMAT =
new Format.Builder()
.setSampleMimeType(VIDEO_H265)
.setWidth(7680)
.setHeight(4320)
.setAverageBitrate(79_900_000)
.setFrameRate(23.163f)
.build();
/**
* Log in logcat and in an analysis file that this test was skipped.
*
@ -379,20 +491,40 @@ public final class AndroidTestUtil {
return MP4_REMOTE_H264_MP3_FORMAT;
case MP4_REMOTE_4K60_PORTRAIT_URI_STRING:
return MP4_REMOTE_4K60_PORTRAIT_FORMAT;
case MP4_REMOTE_640W_480H_31_SECOND_ROOF_SONYXPERIAXZ3:
return MP4_REMOTE_640W_480H_31_SECOND_ROOF_SONYXPERIAXZ3_FORMAT;
case MP4_REMOTE_1280W_720H_5_SECOND_HIGHMOTION:
return MP4_REMOTE_1280W_720H_5_SECOND_HIGHMOTION_FORMAT;
case MP4_REMOTE_1440W_1440H_5_SECOND_HIGHMOTION:
return MP4_REMOTE_1440W_1440H_5_SECOND_HIGHMOTION_FORMAT;
case MP4_REMOTE_1920W_1080H_5_SECOND_HIGHMOTION:
return MP4_REMOTE_1920W_1080H_5_SECOND_HIGHMOTION_FORMAT;
case MP4_REMOTE_3840W_2160H_5_SECOND_HIGHMOTION:
return MP4_REMOTE_3840W_2160H_5_SECOND_HIGHMOTION_FORMAT;
case MP4_REMOTE_1280W_720H_30_SECOND_HIGHMOTION:
return MP4_REMOTE_1280W_720H_30_SECOND_HIGHMOTION_FORMAT;
case MP4_REMOTE_1280W_720H_30_SECOND_ROOF_ONEPLUSNORD2:
return MP4_REMOTE_1280W_720H_30_SECOND_ROOF_ONEPLUSNORD2_FORMAT;
case MP4_REMOTE_1280W_720H_32_SECOND_ROOF_REDMINOTE9:
return MP4_REMOTE_1280W_720H_32_SECOND_ROOF_REDMINOTE9_FORMAT;
case MP4_REMOTE_1440W_1440H_5_SECOND_HIGHMOTION:
return MP4_REMOTE_1440W_1440H_5_SECOND_HIGHMOTION_FORMAT;
case MP4_REMOTE_1440W_1440H_31_SECOND_ROOF_SAMSUNGS20ULTRA5G:
return MP4_REMOTE_1440W_1440H_31_SECOND_ROOF_SAMSUNGS20ULTRA5G_FORMAT;
case MP4_REMOTE_1920W_1080H_5_SECOND_HIGHMOTION:
return MP4_REMOTE_1920W_1080H_5_SECOND_HIGHMOTION_FORMAT;
case MP4_REMOTE_1920W_1080H_30_SECOND_HIGHMOTION:
return MP4_REMOTE_1920W_1080H_30_SECOND_HIGHMOTION_FORMAT;
case MP4_REMOTE_1920W_1080H_60_FPS_30_SECOND_ROOF_ONEPLUSNORD2:
return MP4_REMOTE_1920W_1080H_60_FPS_30_SECOND_ROOF_ONEPLUSNORD2_FORMAT;
case MP4_REMOTE_1920W_1080H_60_FPS_30_SECOND_ROOF_REDMINOTE9:
return MP4_REMOTE_1920W_1080H_60_FPS_30_SECOND_ROOF_REDMINOTE9_FORMAT;
case MP4_REMOTE_2400W_1080H_34_SECOND_ROOF_SAMSUNGS20ULTRA5G:
return MP4_REMOTE_2400W_1080H_34_SECOND_ROOF_SAMSUNGS20ULTRA5G_FORMAT;
case MP4_REMOTE_3840W_2160H_5_SECOND_HIGHMOTION:
return MP4_REMOTE_3840W_2160H_5_SECOND_HIGHMOTION_FORMAT;
case MP4_REMOTE_3840W_2160H_32_SECOND_HIGHMOTION:
return MP4_REMOTE_3840W_2160H_32_SECOND_HIGHMOTION_FORMAT;
case MP4_REMOTE_3840W_2160H_30_SECOND_ROOF_ONEPLUSNORD2:
return MP4_REMOTE_3840W_2160H_30_SECOND_ROOF_ONEPLUSNORD2_FORMAT;
case MP4_REMOTE_3840W_2160H_30_SECOND_ROOF_REDMINOTE9:
return MP4_REMOTE_3840W_2160H_30_SECOND_ROOF_REDMINOTE9_FORMAT;
case MP4_REMOTE_7680W_4320H_31_SECOND_ROOF_SAMSUNGS20ULTRA5G:
return MP4_REMOTE_7680W_4320H_31_SECOND_ROOF_SAMSUNGS20ULTRA5G_FORMAT;
default:
throw new IllegalArgumentException("The format for the given uri is not found.");
}

View File

@ -17,6 +17,24 @@ package androidx.media3.transformer.mh.analysis;
import static android.media.MediaCodecInfo.EncoderCapabilities.BITRATE_MODE_CBR;
import static android.media.MediaCodecInfo.EncoderCapabilities.BITRATE_MODE_VBR;
import static androidx.media3.transformer.AndroidTestUtil.MP4_REMOTE_1280W_720H_30_SECOND_HIGHMOTION;
import static androidx.media3.transformer.AndroidTestUtil.MP4_REMOTE_1280W_720H_30_SECOND_ROOF_ONEPLUSNORD2;
import static androidx.media3.transformer.AndroidTestUtil.MP4_REMOTE_1280W_720H_32_SECOND_ROOF_REDMINOTE9;
import static androidx.media3.transformer.AndroidTestUtil.MP4_REMOTE_1280W_720H_5_SECOND_HIGHMOTION;
import static androidx.media3.transformer.AndroidTestUtil.MP4_REMOTE_1440W_1440H_31_SECOND_ROOF_SAMSUNGS20ULTRA5G;
import static androidx.media3.transformer.AndroidTestUtil.MP4_REMOTE_1440W_1440H_5_SECOND_HIGHMOTION;
import static androidx.media3.transformer.AndroidTestUtil.MP4_REMOTE_1920W_1080H_30_SECOND_HIGHMOTION;
import static androidx.media3.transformer.AndroidTestUtil.MP4_REMOTE_1920W_1080H_5_SECOND_HIGHMOTION;
import static androidx.media3.transformer.AndroidTestUtil.MP4_REMOTE_1920W_1080H_60_FPS_30_SECOND_ROOF_ONEPLUSNORD2;
import static androidx.media3.transformer.AndroidTestUtil.MP4_REMOTE_1920W_1080H_60_FPS_30_SECOND_ROOF_REDMINOTE9;
import static androidx.media3.transformer.AndroidTestUtil.MP4_REMOTE_2400W_1080H_34_SECOND_ROOF_SAMSUNGS20ULTRA5G;
import static androidx.media3.transformer.AndroidTestUtil.MP4_REMOTE_3840W_2160H_30_SECOND_ROOF_ONEPLUSNORD2;
import static androidx.media3.transformer.AndroidTestUtil.MP4_REMOTE_3840W_2160H_30_SECOND_ROOF_REDMINOTE9;
import static androidx.media3.transformer.AndroidTestUtil.MP4_REMOTE_3840W_2160H_32_SECOND_HIGHMOTION;
import static androidx.media3.transformer.AndroidTestUtil.MP4_REMOTE_3840W_2160H_5_SECOND_HIGHMOTION;
import static androidx.media3.transformer.AndroidTestUtil.MP4_REMOTE_640W_480H_31_SECOND_ROOF_SONYXPERIAXZ3;
import static androidx.media3.transformer.AndroidTestUtil.MP4_REMOTE_7680W_4320H_31_SECOND_ROOF_SAMSUNGS20ULTRA5G;
import static androidx.media3.transformer.AndroidTestUtil.skipAndLogIfInsufficientCodecSupport;
import android.content.Context;
import android.net.Uri;
@ -47,13 +65,24 @@ import org.junit.runners.Parameterized.Parameters;
public class BitrateAnalysisTest {
private static final ImmutableList<String> INPUT_FILES =
ImmutableList.of(
AndroidTestUtil.MP4_REMOTE_1280W_720H_5_SECOND_HIGHMOTION,
AndroidTestUtil.MP4_REMOTE_1440W_1440H_5_SECOND_HIGHMOTION,
AndroidTestUtil.MP4_REMOTE_1920W_1080H_5_SECOND_HIGHMOTION,
AndroidTestUtil.MP4_REMOTE_3840W_2160H_5_SECOND_HIGHMOTION,
AndroidTestUtil.MP4_REMOTE_1280W_720H_30_SECOND_HIGHMOTION,
AndroidTestUtil.MP4_REMOTE_1920W_1080H_30_SECOND_HIGHMOTION,
AndroidTestUtil.MP4_REMOTE_3840W_2160H_32_SECOND_HIGHMOTION);
MP4_REMOTE_640W_480H_31_SECOND_ROOF_SONYXPERIAXZ3,
MP4_REMOTE_1280W_720H_5_SECOND_HIGHMOTION,
MP4_REMOTE_1280W_720H_30_SECOND_HIGHMOTION,
MP4_REMOTE_1280W_720H_30_SECOND_ROOF_ONEPLUSNORD2,
MP4_REMOTE_1280W_720H_32_SECOND_ROOF_REDMINOTE9,
MP4_REMOTE_1440W_1440H_5_SECOND_HIGHMOTION,
MP4_REMOTE_1440W_1440H_31_SECOND_ROOF_SAMSUNGS20ULTRA5G,
MP4_REMOTE_1920W_1080H_5_SECOND_HIGHMOTION,
MP4_REMOTE_1920W_1080H_30_SECOND_HIGHMOTION,
MP4_REMOTE_1920W_1080H_60_FPS_30_SECOND_ROOF_ONEPLUSNORD2,
MP4_REMOTE_1920W_1080H_60_FPS_30_SECOND_ROOF_REDMINOTE9,
MP4_REMOTE_2400W_1080H_34_SECOND_ROOF_SAMSUNGS20ULTRA5G,
MP4_REMOTE_3840W_2160H_5_SECOND_HIGHMOTION,
MP4_REMOTE_3840W_2160H_32_SECOND_HIGHMOTION,
MP4_REMOTE_3840W_2160H_30_SECOND_ROOF_ONEPLUSNORD2,
MP4_REMOTE_3840W_2160H_30_SECOND_ROOF_REDMINOTE9,
MP4_REMOTE_7680W_4320H_31_SECOND_ROOF_SAMSUNGS20ULTRA5G);
private static final ImmutableList<Integer> INPUT_BITRATE_MODES =
ImmutableList.of(BITRATE_MODE_VBR, BITRATE_MODE_CBR);
@ -100,7 +129,7 @@ public class BitrateAnalysisTest {
}
Context context = ApplicationProvider.getApplicationContext();
if (AndroidTestUtil.skipAndLogIfInsufficientCodecSupport(
if (skipAndLogIfInsufficientCodecSupport(
context,
testId,
/* decodingFormat= */ AndroidTestUtil.getFormatForTestFile(fileUri),