diff --git a/tests/tests/graphics/src/android/graphics/cts/PixelFormatTest.java b/tests/tests/graphics/src/android/graphics/cts/PixelFormatTest.java
index 65dadda..3127c4e 100644
--- a/tests/tests/graphics/src/android/graphics/cts/PixelFormatTest.java
+++ b/tests/tests/graphics/src/android/graphics/cts/PixelFormatTest.java
@@ -94,14 +94,6 @@
         assertEquals(1, mPixelFormat.bytesPerPixel);
         assertEquals(8, mPixelFormat.bitsPerPixel);
 
-        PixelFormat.getPixelFormatInfo(PixelFormat.YCbCr_422_SP, mPixelFormat);
-        assertEquals(1, mPixelFormat.bytesPerPixel);
-        assertEquals(16, mPixelFormat.bitsPerPixel);
-
-        PixelFormat.getPixelFormatInfo(PixelFormat.YCbCr_420_SP, mPixelFormat);
-        assertEquals(1, mPixelFormat.bytesPerPixel);
-        assertEquals(12, mPixelFormat.bitsPerPixel);
-
         try {
             PixelFormat.getPixelFormatInfo(PixelFormat.UNKNOWN, mPixelFormat);
             fail("Should throw IllegalArgumentException!");
@@ -155,8 +147,6 @@
         assertFalse(PixelFormat.formatHasAlpha(PixelFormat.L_8));
         assertTrue(PixelFormat.formatHasAlpha(PixelFormat.LA_88));
         assertFalse(PixelFormat.formatHasAlpha(PixelFormat.RGB_332));
-        assertFalse(PixelFormat.formatHasAlpha(PixelFormat.YCbCr_422_SP));
-        assertFalse(PixelFormat.formatHasAlpha(PixelFormat.YCbCr_420_SP));
         assertFalse(PixelFormat.formatHasAlpha(PixelFormat.UNKNOWN));
     }
 
diff --git a/tests/tests/hardware/src/android/hardware/cts/CameraTest.java b/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
index b6da1b1..853eaa8 100644
--- a/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
@@ -24,7 +24,7 @@
 
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
-import android.graphics.PixelFormat;
+import android.graphics.ImageFormat;
 import android.hardware.Camera;
 import android.hardware.Camera.AutoFocusCallback;
 import android.hardware.Camera.ErrorCallback;
@@ -498,8 +498,8 @@
     // Also test Camera.Parameters
     private void assertParameters(Parameters parameters) {
         // Parameters constants
-        final int PICTURE_FORMAT = PixelFormat.JPEG;
-        final int PREVIEW_FORMAT = PixelFormat.YCbCr_420_SP;
+        final int PICTURE_FORMAT = ImageFormat.JPEG;
+        final int PREVIEW_FORMAT = ImageFormat.NV21;
         final int PREVIEW_FRAMERATE = 10;
 
         // Before setting Parameters
@@ -518,10 +518,10 @@
         assertTrue(origPreviewFrameRate > 0);
 
         // The default preview format must be yuv420 (NV21).
-        assertTrue(origPreviewFormat == PixelFormat.YCbCr_420_SP);
+        assertTrue(origPreviewFormat == ImageFormat.NV21);
 
         // The default picture format must be Jpeg.
-        assertTrue(origPictureFormat == PixelFormat.JPEG);
+        assertTrue(origPictureFormat == ImageFormat.JPEG);
 
         // If camera supports flash, the default flash mode must be off.
         String flashMode = parameters.getFlashMode();
@@ -612,8 +612,8 @@
     }
 
     private boolean isValidPixelFormat(int format) {
-        return (format == PixelFormat.RGB_565) || (format == PixelFormat.YCbCr_420_SP)
-                || (format == PixelFormat.JPEG) || (format == PixelFormat.YCbCr_422_I);
+        return (format == ImageFormat.RGB_565) || (format == ImageFormat.NV21)
+                || (format == ImageFormat.JPEG) || (format == ImageFormat.YUY2);
     }
 
     @TestTargets({
