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