MediaMetadataTest.java revision c9706f0262a2f399f95e0d78ba2b7616e08d0069
1/* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.mediaframeworktest.functional; 18 19import android.media.MediaMetadataRetriever; 20import android.test.AndroidTestCase; 21import android.test.suitebuilder.annotation.MediumTest; 22import android.test.suitebuilder.annotation.Suppress; 23import android.util.Log; 24 25import com.android.mediaframeworktest.MediaNames; 26/** 27 * This metadata test suite test the basic functionality of the 28 * MediaMetadataRetriever 29 * 30 */ 31public class MediaMetadataTest extends AndroidTestCase { 32 33 private static final String TAG = "MediaMetadataTest"; 34 35 public static enum METADATA_EXPECTEDRESULT{ 36 FILE_PATH,CD_TRACK, ALBUM, 37 ARTIST, AUTHOR, COMPOSER, 38 DATE, GENRE, TITLE, 39 YEAR, DURATION, NUM_TRACKS, WRITER 40 } 41 42 public static enum MP3_TEST_FILE{ 43 ID3V1V2, ID3V2, ID3V1, 44 CORRUPTED_ID3V1, CORRUPTED_ID3V2_TALB, CORRUPTED_ID3V2_TCOM, 45 CORRUPTED_ID3V2_TCOM_2, CORRUPTED_ID3V2_TRCK, CORRUPTED_D3V2_TRCK_2, 46 CORRUPTED_ID3V2_TYER, CORRUPTED_ID3V2_TYER_2, CORRUPTED_ID3V2_TIT 47 } 48 49 public static enum NON_MP3_TEST_FILE{ 50 THREE3GP, AMRNB, AMRWB, M4A1, M4V, MIDI, 51 H264, OGG1, OGG2, WAV, WMA9, WMA10, WMV9, WMV7 52 } 53 54 public static METADATA_EXPECTEDRESULT meta; 55 public static MP3_TEST_FILE mp3_test_file; 56 public static NON_MP3_TEST_FILE non_mp3_test_file; 57 58 @MediumTest 59 public static void testID3V1V2Metadata() throws Exception { 60 validateMetatData(mp3_test_file.ID3V1V2.ordinal(), MediaNames.META_DATA_MP3); 61 } 62 63 @MediumTest 64 public static void testID3V2Metadata() throws Exception { 65 validateMetatData(mp3_test_file.ID3V2.ordinal(), MediaNames.META_DATA_MP3); 66 } 67 68 @MediumTest 69 public static void testID3V1Metadata() throws Exception { 70 validateMetatData(mp3_test_file.ID3V1.ordinal(), MediaNames.META_DATA_MP3); 71 } 72 73 @MediumTest 74 public static void testCorruptedID3V1Metadata() throws Exception { 75 validateMetatData(mp3_test_file.CORRUPTED_ID3V1.ordinal(), MediaNames.META_DATA_MP3); 76 } 77 78 @MediumTest 79 public static void testCorrupted_ID3V2_TALBMetadata() throws Exception { 80 validateMetatData(mp3_test_file.CORRUPTED_ID3V2_TALB.ordinal(), MediaNames.META_DATA_MP3); 81 } 82 83 @MediumTest 84 public static void testCorrupted_ID3V2_TCOMMetadata() throws Exception { 85 validateMetatData(mp3_test_file.CORRUPTED_ID3V2_TCOM.ordinal(), MediaNames.META_DATA_MP3); 86 } 87 88 @MediumTest 89 public static void testCorrupted_ID3V2_TCOMM2etadata() throws Exception { 90 validateMetatData(mp3_test_file.CORRUPTED_ID3V2_TCOM_2.ordinal(), MediaNames.META_DATA_MP3); 91 } 92 93 @MediumTest 94 public static void testCorrupted_ID3V2_TRCKMetadata() throws Exception { 95 validateMetatData(mp3_test_file.CORRUPTED_ID3V2_TRCK.ordinal(), MediaNames.META_DATA_MP3); 96 } 97 98 @MediumTest 99 public static void testCorrupted_ID3V2_TRCK2Metadata() throws Exception { 100 validateMetatData(mp3_test_file.CORRUPTED_D3V2_TRCK_2.ordinal(), MediaNames.META_DATA_MP3); 101 } 102 103 @MediumTest 104 public static void testCorrupted_ID3V2_TYERMetadata() throws Exception { 105 validateMetatData(mp3_test_file.CORRUPTED_ID3V2_TYER.ordinal(), MediaNames.META_DATA_MP3); 106 } 107 108 @MediumTest 109 public static void testCorrupted_ID3V2_TYER2Metadata() throws Exception { 110 validateMetatData(mp3_test_file.CORRUPTED_ID3V2_TYER_2.ordinal(), MediaNames.META_DATA_MP3); 111 } 112 113 @MediumTest 114 public static void testCorrupted_ID3V2_TITMetadata() throws Exception { 115 validateMetatData(mp3_test_file.CORRUPTED_ID3V2_TIT.ordinal(), MediaNames.META_DATA_MP3); 116 } 117 118 @MediumTest 119 public static void test3gp_Metadata() throws Exception { 120 validateMetatData(non_mp3_test_file.THREE3GP.ordinal(), MediaNames.META_DATA_OTHERS); 121 } 122 123 @MediumTest 124 public static void testAmr_Metadata() throws Exception { 125 validateMetatData(non_mp3_test_file.AMRNB.ordinal(), MediaNames.META_DATA_OTHERS); 126 } 127 128 @MediumTest 129 public static void testAmrWb_Metadata() throws Exception { 130 validateMetatData(non_mp3_test_file.AMRWB.ordinal(), MediaNames.META_DATA_OTHERS); 131 } 132 133 @MediumTest 134 public static void testM4A1_Metadata() throws Exception { 135 validateMetatData(non_mp3_test_file.M4A1.ordinal(), MediaNames.META_DATA_OTHERS); 136 } 137 138 @MediumTest 139 public static void testM4v_Metadata() throws Exception { 140 validateMetatData(non_mp3_test_file.M4V.ordinal(), MediaNames.META_DATA_OTHERS); 141 } 142 143 @MediumTest 144 public static void testH264_Metadata() throws Exception { 145 validateMetatData(non_mp3_test_file.H264.ordinal(), MediaNames.META_DATA_OTHERS); 146 } 147 //bug# 1440489 148 @Suppress 149 @MediumTest 150 public static void testOgg1_Metadata() throws Exception { 151 validateMetatData(non_mp3_test_file.OGG1.ordinal(), MediaNames.META_DATA_OTHERS); 152 } 153 154 @Suppress 155 @MediumTest 156 public static void testOgg2_Metadata() throws Exception { 157 validateMetatData(non_mp3_test_file.OGG2.ordinal(), MediaNames.META_DATA_OTHERS); 158 } 159 160 @Suppress 161 @MediumTest 162 public static void testMidi_Metadata() throws Exception { 163 validateMetatData(non_mp3_test_file.MIDI.ordinal(), MediaNames.META_DATA_OTHERS); 164 } 165 166 @MediumTest 167 public static void testWav_Metadata() throws Exception { 168 validateMetatData(non_mp3_test_file.WAV.ordinal(), MediaNames.META_DATA_OTHERS); 169 } 170 171 @Suppress 172 @MediumTest 173 public static void testWma9_Metadata() throws Exception { 174 validateMetatData(non_mp3_test_file.WMA9.ordinal(), MediaNames.META_DATA_OTHERS); 175 } 176 177 @Suppress 178 @MediumTest 179 public static void testWma10_Metadata() throws Exception { 180 validateMetatData(non_mp3_test_file.WMA10.ordinal(), MediaNames.META_DATA_OTHERS); 181 } 182 183 @Suppress 184 @MediumTest 185 public static void testWmv9_Metadata() throws Exception { 186 validateMetatData(non_mp3_test_file.WMV9.ordinal(), MediaNames.META_DATA_OTHERS); 187 } 188 189 @Suppress 190 @MediumTest 191 public static void testWmv10_Metadata() throws Exception { 192 validateMetatData(non_mp3_test_file.WMV7.ordinal(), MediaNames.META_DATA_OTHERS); 193 } 194 195 private static void validateMetatData(int fileIndex, String meta_data_file[][]) { 196 String value = null; 197 MediaMetadataRetriever retriever = new MediaMetadataRetriever(); 198 retriever.setMode(MediaMetadataRetriever.MODE_GET_METADATA_ONLY); 199 try { 200 retriever.setDataSource(meta_data_file[fileIndex][0]); 201 Log.v(TAG, "filePath = "+ meta_data_file[fileIndex][0]); 202 } catch(Exception e) { 203 Log.v(TAG, "Failed: "+meta_data_file[fileIndex][0] + " " + e.toString()); 204 //Set the test case failure whenever it failed to setDataSource 205 assertTrue("Failed to setDataSource ", false); 206 } 207 208 //METADATA_KEY_CD_TRACK_NUMBER should return the TCRK value 209 value = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_CD_TRACK_NUMBER); 210 Log.v(TAG, "CD_TRACK_NUMBER : " + value); 211 assertEquals(TAG, meta_data_file[fileIndex][meta.CD_TRACK.ordinal()], value); 212 213 value = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM); 214 Log.v(TAG, "Album : "+ value); 215 assertEquals(TAG, meta_data_file[fileIndex][meta.ALBUM.ordinal()], value); 216 217 value = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST); 218 Log.v(TAG, "Artist : "+ value); 219 assertEquals(TAG, meta_data_file[fileIndex][meta.ARTIST.ordinal()], value); 220 221 value = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_AUTHOR); 222 Log.v(TAG, "Author : "+ value); 223 assertEquals(TAG, meta_data_file[fileIndex][meta.AUTHOR.ordinal()], value); 224 225 value = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_COMPOSER); 226 Log.v(TAG, "Composer : "+ value); 227 assertEquals(TAG, meta_data_file[fileIndex][meta.COMPOSER.ordinal()], value); 228 229 value = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DATE); 230 Log.v(TAG, "Date : "+ value); 231 assertEquals(TAG, meta_data_file[fileIndex][meta.DATE.ordinal()], value); 232 233 value = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_GENRE); 234 Log.v(TAG, "Genre : "+ value); 235 assertEquals(TAG, meta_data_file[fileIndex][meta.GENRE.ordinal()], value); 236 237 value = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE); 238 Log.v(TAG, "Title : "+ value); 239 assertEquals(TAG, meta_data_file[fileIndex][meta.TITLE.ordinal()], value); 240 241 value = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_YEAR); 242 Log.v(TAG, "Year : "+ value); 243 assertEquals(TAG, meta_data_file[fileIndex][meta.YEAR.ordinal()], value); 244 245 value = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); 246 Log.v(TAG, "Expected = " + meta_data_file[fileIndex][meta.DURATION.ordinal()] + "reult = " + value); 247 assertEquals(TAG, meta_data_file[fileIndex][meta.DURATION.ordinal()], value); 248 249 //METADATA_KEY_NUM_TRACKS should return the total number of tracks in the media 250 //include the video and audio 251 value = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_NUM_TRACKS); 252 Log.v(TAG, "Track : "+ value); 253 assertEquals(TAG,meta_data_file[fileIndex][meta.NUM_TRACKS.ordinal()], value); 254 255 value = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_WRITER); 256 Log.v(TAG, "Writer : "+ value); 257 assertEquals(TAG,meta_data_file[fileIndex][meta.WRITER.ordinal()], value); 258 259 retriever.release(); 260 } 261} 262