MediaMetadataTest.java revision f013e1afd1e68af5e3b868c26a653bbfb39538f8
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 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 //Bug# 1440173 - skip this test case now 134 @Suppress 135 @MediumTest 136 public static void testM4A1_Metadata() throws Exception { 137 validateMetatData(non_mp3_test_file.M4A1.ordinal(), MediaNames.META_DATA_OTHERS); 138 } 139 140 @MediumTest 141 public static void testM4v_Metadata() throws Exception { 142 validateMetatData(non_mp3_test_file.M4V.ordinal(), MediaNames.META_DATA_OTHERS); 143 } 144 145 @MediumTest 146 public static void testH264_Metadata() throws Exception { 147 validateMetatData(non_mp3_test_file.H264.ordinal(), MediaNames.META_DATA_OTHERS); 148 } 149 //bug# 1440489 150 @Suppress 151 @MediumTest 152 public static void testOgg1_Metadata() throws Exception { 153 validateMetatData(non_mp3_test_file.OGG1.ordinal(), MediaNames.META_DATA_OTHERS); 154 } 155 156 @Suppress 157 @MediumTest 158 public static void testOgg2_Metadata() throws Exception { 159 validateMetatData(non_mp3_test_file.OGG2.ordinal(), MediaNames.META_DATA_OTHERS); 160 } 161 162 @Suppress 163 @MediumTest 164 public static void testMidi_Metadata() throws Exception { 165 validateMetatData(non_mp3_test_file.MIDI.ordinal(), MediaNames.META_DATA_OTHERS); 166 } 167 168 @MediumTest 169 public static void testWav_Metadata() throws Exception { 170 validateMetatData(non_mp3_test_file.WAV.ordinal(), MediaNames.META_DATA_OTHERS); 171 } 172 173 @MediumTest 174 public static void testWma9_Metadata() throws Exception { 175 validateMetatData(non_mp3_test_file.WMA9.ordinal(), MediaNames.META_DATA_OTHERS); 176 } 177 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 @MediumTest 184 public static void testWmv9_Metadata() throws Exception { 185 validateMetatData(non_mp3_test_file.WMV9.ordinal(), MediaNames.META_DATA_OTHERS); 186 } 187 188 @MediumTest 189 public static void testWmv10_Metadata() throws Exception { 190 validateMetatData(non_mp3_test_file.WMV7.ordinal(), MediaNames.META_DATA_OTHERS); 191 } 192 193 private static void validateMetatData(int fileIndex, String meta_data_file[][]) { 194 String value = null; 195 MediaMetadataRetriever retriever = new MediaMetadataRetriever(); 196 retriever.setMode(MediaMetadataRetriever.MODE_GET_METADATA_ONLY); 197 try { 198 retriever.setDataSource(meta_data_file[fileIndex][0]); 199 Log.v(TAG, "filePath = "+ meta_data_file[fileIndex][0]); 200 } catch(Exception e) { 201 Log.v(TAG, "Failed: "+meta_data_file[fileIndex][0] + " " + e.toString()); 202 //Set the test case failure whenever it failed to setDataSource 203 assertTrue("Failed to setDataSource ", false); 204 } 205 206 //METADATA_KEY_CD_TRACK_NUMBER should return the TCRK value 207 value = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_CD_TRACK_NUMBER); 208 Log.v(TAG, "CD_TRACK_NUMBER : " + value); 209 assertEquals(TAG, meta_data_file[fileIndex][meta.CD_TRACK.ordinal()], value); 210 211 value = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM); 212 Log.v(TAG, "Album : "+ value); 213 assertEquals(TAG, meta_data_file[fileIndex][meta.ALBUM.ordinal()], value); 214 215 value = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST); 216 Log.v(TAG, "Artist : "+ value); 217 assertEquals(TAG, meta_data_file[fileIndex][meta.ARTIST.ordinal()], value); 218 219 value = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_AUTHOR); 220 Log.v(TAG, "Author : "+ value); 221 assertEquals(TAG, meta_data_file[fileIndex][meta.AUTHOR.ordinal()], value); 222 223 value = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_COMPOSER); 224 Log.v(TAG, "Composer : "+ value); 225 assertEquals(TAG, meta_data_file[fileIndex][meta.COMPOSER.ordinal()], value); 226 227 value = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DATE); 228 Log.v(TAG, "Date : "+ value); 229 assertEquals(TAG, meta_data_file[fileIndex][meta.DATE.ordinal()], value); 230 231 value = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_GENRE); 232 Log.v(TAG, "Genre : "+ value); 233 assertEquals(TAG, meta_data_file[fileIndex][meta.GENRE.ordinal()], value); 234 235 value = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE); 236 Log.v(TAG, "Title : "+ value); 237 assertEquals(TAG, meta_data_file[fileIndex][meta.TITLE.ordinal()], value); 238 239 value = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_YEAR); 240 Log.v(TAG, "Year : "+ value); 241 assertEquals(TAG, meta_data_file[fileIndex][meta.YEAR.ordinal()], value); 242 243 value = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); 244 Log.v(TAG, "Expected = " + meta_data_file[fileIndex][meta.DURATION.ordinal()] + "reult = " + value); 245 assertEquals(TAG, meta_data_file[fileIndex][meta.DURATION.ordinal()], value); 246 247 //METADATA_KEY_NUM_TRACKS should return the total number of tracks in the media 248 //include the video and audio 249 value = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_NUM_TRACKS); 250 Log.v(TAG, "Track : "+ value); 251 assertEquals(TAG,meta_data_file[fileIndex][meta.NUM_TRACKS.ordinal()], value); 252 253 retriever.release(); 254 } 255} 256