xref: /aosp_15_r20/cts/tests/media/README.md (revision b7c941bb3fa97aba169d73cee0bed2de8ac964bf)
1*b7c941bbSAndroid Build Coastguard Worker## Media V2 CTS Tests
2*b7c941bbSAndroid Build Coastguard WorkerCurrent folder comprises of files necessary for testing media extractor, media muxer, media codec SDK and NDK Api. These tests aims to test all codecs advertised in MediaCodecList, available muxers and extractors.
3*b7c941bbSAndroid Build Coastguard Worker
4*b7c941bbSAndroid Build Coastguard WorkerThe aim of these tests is not solely to verify the CDD requirements but also to test components, their plugins and their interactions with media framework.
5*b7c941bbSAndroid Build Coastguard Worker
6*b7c941bbSAndroid Build Coastguard WorkerThe test vectors used by the test suite is available at [link](https://dl.google.com/android/xts/cts/tests/media/CtsMediaV2TestCases-5.1.zip) and is downloaded automatically while running tests. Manual installation of these can be done using copy_media.sh script in this directory.
7*b7c941bbSAndroid Build Coastguard Worker
8*b7c941bbSAndroid Build Coastguard WorkerAll Big Buck Bunny(bbb) test vectors are of 8-bit format. They are downloaded from [link](https://peach.blender.org/download/) and resampled according to the test requirements.
9*b7c941bbSAndroid Build Coastguard WorkerAll Cosmos Laundromat(cosmat) test vectors are of 10-bit format. They are downloaded from [link](https://media.xiph.org/) and resampled according to the test requirements.
10*b7c941bbSAndroid Build Coastguard WorkerVideoEncoderParamTest uses stefan_sif_yuv420p_30fps.yuv. This is downloaded from [link](https://media.xiph.org/).
11*b7c941bbSAndroid Build Coastguard Worker
12*b7c941bbSAndroid Build Coastguard WorkerThe test suite looks to cover sdk/ndk api in normal and error scenarios. Error scenarios are separated from regular usage and are placed under class *UnitTest (MuxerUnitTest, ExtractorUnitTest, ...).
13*b7c941bbSAndroid Build Coastguard Worker
14*b7c941bbSAndroid Build Coastguard Worker### Commands
15*b7c941bbSAndroid Build Coastguard Worker```sh
16*b7c941bbSAndroid Build Coastguard Worker$ atest android.mediav2.cts
17*b7c941bbSAndroid Build Coastguard Worker$ atest android.mediav2.cts.CodecEncoderTest android.mediav2.cts.CodecDecoderTest
18*b7c941bbSAndroid Build Coastguard Worker$ atest android.mediav2.cts.MuxerTest android.mediav2.cts.MuxerUnitTest
19*b7c941bbSAndroid Build Coastguard Worker$ atest android.mediav2.cts.ExtractorTest android.mediav2.cts.ExtractorUnitTest
20*b7c941bbSAndroid Build Coastguard Worker```
21*b7c941bbSAndroid Build Coastguard Worker
22*b7c941bbSAndroid Build Coastguard Worker### Features
23*b7c941bbSAndroid Build Coastguard WorkerAll tests accepts attributes that offer selective run of tests.
24*b7c941bbSAndroid Build Coastguard Worker
25*b7c941bbSAndroid Build Coastguard Worker#### Select codecs by name
26*b7c941bbSAndroid Build Coastguard WorkerTo select codecs by name, *codec-prefix* can be passed to media codec tests to select one or more codecs that start with a given prefix.
27*b7c941bbSAndroid Build Coastguard Worker
28*b7c941bbSAndroid Build Coastguard WorkerExample: To limit the tests to run for codecs whose names start with c2.android.
29*b7c941bbSAndroid Build Coastguard Worker
30*b7c941bbSAndroid Build Coastguard Worker```sh
31*b7c941bbSAndroid Build Coastguard Workeratest CtsMediaV2TestCases -- --module-arg CtsMediaV2TestCases:instrumentation-arg:codec-prefix:=c2.android.
32*b7c941bbSAndroid Build Coastguard Worker```
33*b7c941bbSAndroid Build Coastguard Worker
34*b7c941bbSAndroid Build Coastguard WorkerExample: To limit the tests to run for c2.android.hevc.decoder
35*b7c941bbSAndroid Build Coastguard Worker
36*b7c941bbSAndroid Build Coastguard Worker```sh
37*b7c941bbSAndroid Build Coastguard Workeratest CtsMediaV2TestCases -- --module-arg CtsMediaV2TestCases:instrumentation-arg:codec-prefix:=c2.android.hevc.decoder
38*b7c941bbSAndroid Build Coastguard Worker```
39*b7c941bbSAndroid Build Coastguard Worker
40*b7c941bbSAndroid Build Coastguard Worker#### Select codecs using regular expressions
41*b7c941bbSAndroid Build Coastguard WorkerTo select codecs by applying regular expressions, *codec-filter* can be passed to media codec tests to select one or more codecs that match with a specified regular expression pattern.
42*b7c941bbSAndroid Build Coastguard Worker
43*b7c941bbSAndroid Build Coastguard WorkerExample: To limit the tests to run for c2.android.avc.encoder and c2.exynos.hevc.encoder
44*b7c941bbSAndroid Build Coastguard Worker
45*b7c941bbSAndroid Build Coastguard Worker```sh
46*b7c941bbSAndroid Build Coastguard Workeratest CtsMediaV2TestCases -- --module-arg CtsMediaV2TestCases:instrumentation-arg:codec-filter:="c2\.android\.avc\.encoder\|c2\.exynos\.hevc\.encoder"
47*b7c941bbSAndroid Build Coastguard Worker```
48*b7c941bbSAndroid Build Coastguard Worker
49*b7c941bbSAndroid Build Coastguard Worker#### Select codecs by type
50*b7c941bbSAndroid Build Coastguard WorkerTo select codecs by type, *media-type-sel* can be passed to media codec tests to select one or more codecs.
51*b7c941bbSAndroid Build Coastguard Worker
52*b7c941bbSAndroid Build Coastguard WorkerExample: To limit media codec decoder tests to mp3 and vorbis decoder
53*b7c941bbSAndroid Build Coastguard Worker
54*b7c941bbSAndroid Build Coastguard Worker```sh
55*b7c941bbSAndroid Build Coastguard Workeratest android.mediav2.cts.CodecDecoderTest -- --module-arg  CtsMediaV2TestCases:instrumentation-arg:media-type-sel:=mp3,vorbis
56*b7c941bbSAndroid Build Coastguard Worker```
57*b7c941bbSAndroid Build Coastguard Worker
58*b7c941bbSAndroid Build Coastguard Worker#### Select extractors by type
59*b7c941bbSAndroid Build Coastguard WorkerTo select extractors by type, *ext-sel* can be passed to extractor tests to select one or more extractors.
60*b7c941bbSAndroid Build Coastguard Worker
61*b7c941bbSAndroid Build Coastguard WorkerExample: To limit extractor tests to mp4 and webm types
62*b7c941bbSAndroid Build Coastguard Worker```sh
63*b7c941bbSAndroid Build Coastguard Workeratest android.mediav2.cts.ExtractorTest -- --module-arg  CtsMediaV2TestCases:instrumentation-arg:ext-sel:=mp4,webm
64*b7c941bbSAndroid Build Coastguard Worker```
65*b7c941bbSAndroid Build Coastguard Worker
66*b7c941bbSAndroid Build Coastguard Worker#### Select muxers by type
67*b7c941bbSAndroid Build Coastguard WorkerTo select muxers by type, *mux-sel* can be passed to muxer tests to select one or more muxers.
68*b7c941bbSAndroid Build Coastguard Worker
69*b7c941bbSAndroid Build Coastguard WorkerExample: To limit muxer tests to mp4 and webm types
70*b7c941bbSAndroid Build Coastguard Worker```sh
71*b7c941bbSAndroid Build Coastguard Workeratest android.mediav2.cts.MuxerTest -- --module-arg  CtsMediaV2TestCases:instrumentation-arg:mux-sel:=mp4,webm
72*b7c941bbSAndroid Build Coastguard Worker```
73*b7c941bbSAndroid Build Coastguard Worker
74*b7c941bbSAndroid Build Coastguard Worker### Appendix
75*b7c941bbSAndroid Build Coastguard Worker| Identifier for codec-sel | Mime |
76*b7c941bbSAndroid Build Coastguard Worker| ------ | ------ |
77*b7c941bbSAndroid Build Coastguard Worker|default|all|
78*b7c941bbSAndroid Build Coastguard Worker|vp8|mimetype_video_vp8|
79*b7c941bbSAndroid Build Coastguard Worker|vp9|mimetype_video_vp9|
80*b7c941bbSAndroid Build Coastguard Worker|av1|mimetype_video_av1|
81*b7c941bbSAndroid Build Coastguard Worker|avc|mimetype_video_avc|
82*b7c941bbSAndroid Build Coastguard Worker|hevc|mimetype_video_hevc|
83*b7c941bbSAndroid Build Coastguard Worker|mpeg4|mimetype_video_mpeg4|
84*b7c941bbSAndroid Build Coastguard Worker|h263|mimetype_video_h263|
85*b7c941bbSAndroid Build Coastguard Worker|mpeg2|mimetype_video_mpeg2|
86*b7c941bbSAndroid Build Coastguard Worker|vraw|mimetype_video_raw|
87*b7c941bbSAndroid Build Coastguard Worker|amrnb|mimetype_audio_amr_nb|
88*b7c941bbSAndroid Build Coastguard Worker|amrwb|mimetype_audio_amr_wb|
89*b7c941bbSAndroid Build Coastguard Worker|mp3|mimetype_audio_mpeg|
90*b7c941bbSAndroid Build Coastguard Worker|aac|mimetype_audio_aac|
91*b7c941bbSAndroid Build Coastguard Worker|vorbis|mimetype_audio_vorbis|
92*b7c941bbSAndroid Build Coastguard Worker|opus|mimetype_audio_opus|
93*b7c941bbSAndroid Build Coastguard Worker|g711alaw|mimetype_audio_g711_alaw|
94*b7c941bbSAndroid Build Coastguard Worker|g711mlaw|mimetype_audio_g711_mlaw|
95*b7c941bbSAndroid Build Coastguard Worker|araw|mimetype_audio_raw|
96*b7c941bbSAndroid Build Coastguard Worker|flac|mimetype_audio_flac|
97*b7c941bbSAndroid Build Coastguard Worker|gsm|mimetype_audio_msgsm|
98*b7c941bbSAndroid Build Coastguard Worker
99*b7c941bbSAndroid Build Coastguard Worker
100*b7c941bbSAndroid Build Coastguard Worker| Identifier for ext-sel | Extractor format |
101*b7c941bbSAndroid Build Coastguard Worker| ------ | ------ |
102*b7c941bbSAndroid Build Coastguard Worker|mp4|Mpeg4|
103*b7c941bbSAndroid Build Coastguard Worker|webm|Matroska|
104*b7c941bbSAndroid Build Coastguard Worker|3gp|Mpeg4|
105*b7c941bbSAndroid Build Coastguard Worker|mkv|Matroska|
106*b7c941bbSAndroid Build Coastguard Worker|ogg|Ogg|
107*b7c941bbSAndroid Build Coastguard Worker
108*b7c941bbSAndroid Build Coastguard Worker
109*b7c941bbSAndroid Build Coastguard Worker| Identifier for mux-sel | Muxer Format |
110*b7c941bbSAndroid Build Coastguard Worker| ------ | ------ |
111*b7c941bbSAndroid Build Coastguard Worker|mp4|muxer_output_mpeg4|
112*b7c941bbSAndroid Build Coastguard Worker|webm|muxer_output_webm|
113*b7c941bbSAndroid Build Coastguard Worker|3gp|muxer_output_3gpp|
114*b7c941bbSAndroid Build Coastguard Worker|ogg|muxer_output_ogg|
115