diff --git a/camera2/extensions/advancedSample/src/java/androidx/camera/extensions/impl/advanced/BaseAdvancedExtenderImpl.java b/camera2/extensions/advancedSample/src/java/androidx/camera/extensions/impl/advanced/BaseAdvancedExtenderImpl.java
index 1b61d93..a090d7d 100644
--- a/camera2/extensions/advancedSample/src/java/androidx/camera/extensions/impl/advanced/BaseAdvancedExtenderImpl.java
+++ b/camera2/extensions/advancedSample/src/java/androidx/camera/extensions/impl/advanced/BaseAdvancedExtenderImpl.java
@@ -127,7 +127,7 @@
     @Override
     public Map<Integer, List<Size>> getSupportedCaptureOutputResolutions(String cameraId) {
         return filterOutputResolutions(Arrays.asList(ImageFormat.JPEG, ImageFormat.YUV_420_888,
-                ImageFormat.JPEG_R, ImageFormat.YCBCR_P010));
+                ImageFormat.DEPTH_JPEG, ImageFormat.JPEG_R, ImageFormat.YCBCR_P010));
     }
 
     @Override
@@ -223,8 +223,9 @@
             // Image Capture
             if (mCaptureOutputSurfaceConfig.getSurface() != null) {
 
-                // For this sample, JPEG_R or YCBCR_P010 will not be processed
-                if (isJpegR(mCaptureOutputSurfaceConfig)) {
+                // For this sample, DEPTH_JPEG, JPEG_R or YCBCR_P010 will not be processed
+                if (isJpegR(mCaptureOutputSurfaceConfig) ||
+                        isDepthJpeg(mCaptureOutputSurfaceConfig)) {
                     Camera2OutputConfigImplBuilder captureOutputConfigBuilder;
 
                     captureOutputConfigBuilder =
@@ -353,6 +354,14 @@
                     (surfaceConfig.getImageFormat() == ImageFormat.JPEG_R);
         }
 
+        protected boolean isDepthJpeg(OutputSurfaceImpl surfaceConfig) {
+            // The surface configuration format for DepthJpeg can be specified in either format.
+            // Camera2 uses HAL_PIXEL_FORMAT_BLOB and CameraX uses ImageFormat.DEPTH_JPEG.
+            return ((surfaceConfig.getImageFormat() == JpegEncoder.HAL_PIXEL_FORMAT_BLOB) &&
+                    (surfaceConfig.getDataspace() == DataSpace.DATASPACE_DYNAMIC_DEPTH)) ||
+                    (surfaceConfig.getImageFormat() == ImageFormat.DEPTH_JPEG);
+        }
+
         protected boolean isJpeg(OutputSurfaceImpl surfaceConfig) {
             return (JpegEncoder.imageFormatToPublic(surfaceConfig.getImageFormat()) ==
                     ImageFormat.JPEG) || (surfaceConfig.getImageFormat() == ImageFormat.JPEG);
diff --git a/camera2/extensions/advancedSample/src/java/androidx/camera/extensions/impl/advanced/NightAdvancedExtenderImpl.java b/camera2/extensions/advancedSample/src/java/androidx/camera/extensions/impl/advanced/NightAdvancedExtenderImpl.java
index 86ea363..f3a27eb 100644
--- a/camera2/extensions/advancedSample/src/java/androidx/camera/extensions/impl/advanced/NightAdvancedExtenderImpl.java
+++ b/camera2/extensions/advancedSample/src/java/androidx/camera/extensions/impl/advanced/NightAdvancedExtenderImpl.java
@@ -131,8 +131,9 @@
             // Image Capture
             if (mCaptureOutputSurfaceConfig.getSurface() != null) {
 
-                // For this sample, JPEG_R or YCBCR_P010 will not be processed
-                if (isJpegR(mCaptureOutputSurfaceConfig)) {
+                // For this sample, DEPTH_JPEG, JPEG_R or YCBCR_P010 will not be processed
+                if (isJpegR(mCaptureOutputSurfaceConfig) ||
+                        isDepthJpeg(mCaptureOutputSurfaceConfig)) {
                     Camera2OutputConfigImplBuilder captureOutputConfigBuilder;
 
                     captureOutputConfigBuilder =
