diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaMetadataTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaMetadataTest.java
index 364e1af..3715913 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaMetadataTest.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaMetadataTest.java
@@ -170,21 +170,25 @@
         validateMetatData(non_mp3_test_file.WAV.ordinal(), MediaNames.META_DATA_OTHERS);
     }
     
+    @Suppress
     @MediumTest
     public static void testWma9_Metadata() throws Exception {
         validateMetatData(non_mp3_test_file.WMA9.ordinal(), MediaNames.META_DATA_OTHERS);
     }
     
+    @Suppress
     @MediumTest
     public static void testWma10_Metadata() throws Exception {
         validateMetatData(non_mp3_test_file.WMA10.ordinal(), MediaNames.META_DATA_OTHERS);
     }
     
+    @Suppress
     @MediumTest
     public static void testWmv9_Metadata() throws Exception {
         validateMetatData(non_mp3_test_file.WMV9.ordinal(), MediaNames.META_DATA_OTHERS);
     }
     
+    @Suppress
     @MediumTest
     public static void testWmv10_Metadata() throws Exception {
         validateMetatData(non_mp3_test_file.WMV7.ordinal(), MediaNames.META_DATA_OTHERS);
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaPlayerApiTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaPlayerApiTest.java
index cfcc521..8be7058 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaPlayerApiTest.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaPlayerApiTest.java
@@ -78,6 +78,7 @@
       assertTrue("MIDI getDuration", duratoinWithinTolerence);  
     }
     
+    @Suppress
     @MediumTest
     public void testWMA9GetDuration() throws Exception {
       int duration = CodecTest.getDuration(MediaNames.WMA9); 
@@ -118,7 +119,8 @@
       boolean currentPosition = CodecTest.getCurrentPosition(MediaNames.MIDI);  
       assertTrue("MIDI GetCurrentPosition", currentPosition);  
     }
-   
+    
+    @Suppress
     @LargeTest
     public void testWMA9GetCurrentPosition() throws Exception {
       boolean currentPosition = CodecTest.getCurrentPosition(MediaNames.WMA9);  
@@ -156,6 +158,7 @@
       assertTrue("MIDI Pause", isPaused);  
     }
    
+    @Suppress
     @LargeTest
     public void testWMA9Pause() throws Exception {
       boolean isPaused = CodecTest.pause(MediaNames.WMA9);  
@@ -227,6 +230,7 @@
       assertTrue("MIDI setLooping", isLoop);  
     }
     
+    @Suppress
     @LargeTest
     public void testWMA9SetLooping() throws Exception {
       boolean isLoop = CodecTest.setLooping(MediaNames.WMA9);  
@@ -265,6 +269,7 @@
       assertTrue("MIDI seekTo", isLoop);  
     }
     
+    @Suppress
     @LargeTest
     public void testWMA9SeekTo() throws Exception {
       boolean isLoop = CodecTest.seekTo(MediaNames.WMA9);  
@@ -304,6 +309,7 @@
       assertTrue("MIDI seekToEnd", isEnd);  
     }
     
+    @Suppress
     @LargeTest
     public void testWMA9SeekToEnd() throws Exception {
       boolean isEnd = CodecTest.seekToEnd(MediaNames.WMA9);  
@@ -379,7 +385,8 @@
       boolean isSeek = CodecTest.videoSeekTo(MediaNames.VIDEO_H264_AMR);
       assertTrue("H264AMR SeekTo", isSeek);         
     }
-    
+   
+    @Suppress
     @LargeTest
     public void testVideoWMVSeekTo() throws Exception {
       boolean isSeek = CodecTest.videoSeekTo(MediaNames.VIDEO_WMV);
@@ -450,4 +457,3 @@
         assertTrue("StreamH264PrepareAsyncCallback", onPrepareSuccess);
     }
 }
-
