Pixel 3 XL
Android 12 (API 31)
Google · Qualcomm SDM845
Cameras
| Lens | Facing | Focal length | Sensor size | Max res | Modes | HW level |
|---|---|---|---|---|---|---|
| Rear #0 | BACK | 27mm (4.44mm) | 5.64 × 4.23 mm | 3840×2160 | 25 | LEVEL_3 |
| Front #2 | FRONT | 28mm (2.97mm) | 3.67 × 2.76 mm | none | 23 | LEVEL_3 |
Focal lengths show the 35mm equivalent first; the sensor's native focal length is in parentheses. Only the equivalent is comparable between phones.
Max res is the largest frame this lens was proven to record: a real clip written to disk and read back with frames in it.
A lens with no recorded size has no proven maximum: either the record tests have not been run on it, or they ran and it recorded nothing at any size it was offered.
Encoder frame ceilings
| Codec | Largest frame | Macroblocks | Advertised max |
|---|---|---|---|
| HEVC | 4096×2304 | 36,864 | 4096 × 2304 |
| AVC | 4096×2304 | 36,864 | 4096 × 2304 |
One macroblock is 16×16 pixels. The macroblock count is the encoder's real ceiling — a budget every frame has to fit, landscape or portrait — and the largest frame beside it is simply the biggest shape that spends it.
Diagnostics
91 checks — 40 supported · 2 partial · 9 unsupported · 40 informational
Camera 0 (BACK) — Rear 29 checks
Hardware
| Hardware Level | LEVEL_3Best tier — RAW + YUV + reprocessing guaranteed |
Capabilities
| Manual Sensor Control | YesRequired for manual ISO/exposure in log shooting |
| RAW Capture | YesEnables access to raw Bayer sensor data |
| Burst Capture | YesSustained high-framerate capture |
| Read Sensor Settings | YesPer-frame sensor metadata readback |
| Dynamic Range Profiles | NoNot available — may need API 33+ or device support |
Sensor
| Bit Depth | 10-bit (white level = 1023)Good — standard for mobile sensors |
| Sensitivity Range | ISO 55 – 7111Max analog ISO: 444 (digital gain above this) |
| Exposure Range | 54.4µs – 4.0sFastest: ~1/18367 |
| Bayer Pattern | BGGR |
| Physical Size | 5.64 × 4.23 mm (diag 7.06 mm)Larger sensor = more light = better DR for log |
| Pixel Array | 4032 × 3024 (12.2 MP) |
RAW Formats
| RAW_SENSOR | 4032×3024 @ 30.0 fpsVideo-rate RAW achievable! |
| RAW10 | 4032×3024 @ 30.0 fpsVideo-rate RAW achievable! |
| RAW12 | Not supported |
| RAW_PRIVATE | 4032×3024 @ 30.0 fpsVideo-rate RAW achievable! |
Streams
| Max Simultaneous Outputs | RAW:1 Processed:3 Stalling:2Can capture RAW + encoded video simultaneously |
| YUV_420_888 Modes | 4032×3024 @ 30 fps 4000×3000 @ 30 fps 3840×2160 @ 30 fps 4000×2000 @ 30 fps 3264×2448 @ 30 fps … and 24 more |
HDR / 10-Bit
| Dynamic Range Profiles | Requires API 33+ (Android 13)Device is on API 31 |
| 10-Bit YUV (P010) | Not supportedEncoder may only receive 8-bit data even if Main10 is available |
Tonemap / ISP
| Tonemap Modes | CONTRAST_CURVE, FAST, HIGH_QUALITYCONTRAST_CURVE available — can define custom log curve (64 points max) |
| Max Curve Points | 64Plenty for smooth log curve |
| Noise Reduction | OFF, FAST, HIGH_QUALITY, MINIMAL, ZSLOFF available — can disable NR for clean log |
| Edge / Sharpening | FAST, HIGH_QUALITY, OFF, ZSLOFF available — can disable sharpening |
| Hot Pixel Modes | OFF, FAST, HIGH_QUALITY |
| Lens Shading Correction | OFF, FAST, HIGH_QUALITYOFF available — raw vignetting preserved for manual correction |
| Chromatic Aberration Correction | OFF, FAST, HIGH_QUALITY |
Vendor Tags
| Count | 1 vendor tags foundOEM-specific extensions available |
| com.google (1) | com.google.nexus.experimental2018.faceLandmark.availableIds = [1, 2, 3, 4, 5, 6] |
Camera 2 (FRONT) — Front 29 checks
Hardware
| Hardware Level | LEVEL_3Best tier — RAW + YUV + reprocessing guaranteed |
Capabilities
| Manual Sensor Control | YesRequired for manual ISO/exposure in log shooting |
| RAW Capture | YesEnables access to raw Bayer sensor data |
| Burst Capture | YesSustained high-framerate capture |
| Read Sensor Settings | YesPer-frame sensor metadata readback |
| Dynamic Range Profiles | NoNot available — may need API 33+ or device support |
Sensor
| Bit Depth | 10-bit (white level = 1023)Good — standard for mobile sensors |
| Sensitivity Range | ISO 43 – 11130Max analog ISO: 695 (digital gain above this) |
| Exposure Range | 17.7µs – 0.8sFastest: ~1/56644 |
| Bayer Pattern | BGGR |
| Physical Size | 3.67 × 2.76 mm (diag 4.59 mm)Larger sensor = more light = better DR for log |
| Pixel Array | 3280 × 2464 (8.1 MP) |
RAW Formats
| RAW_SENSOR | 3280×2464 @ 30.0 fpsVideo-rate RAW achievable! |
| RAW10 | 3280×2464 @ 30.0 fpsVideo-rate RAW achievable! |
| RAW12 | Not supported |
| RAW_PRIVATE | 3280×2464 @ 30.0 fpsVideo-rate RAW achievable! |
Streams
| Max Simultaneous Outputs | RAW:1 Processed:3 Stalling:2Can capture RAW + encoded video simultaneously |
| YUV_420_888 Modes | 3264×2448 @ 30 fps 3200×2400 @ 30 fps 2592×1944 @ 30 fps 2688×1512 @ 30 fps 2560×1280 @ 30 fps … and 20 more |
HDR / 10-Bit
| Dynamic Range Profiles | Requires API 33+ (Android 13)Device is on API 31 |
| 10-Bit YUV (P010) | Not supportedEncoder may only receive 8-bit data even if Main10 is available |
Tonemap / ISP
| Tonemap Modes | CONTRAST_CURVE, FAST, HIGH_QUALITYCONTRAST_CURVE available — can define custom log curve (64 points max) |
| Max Curve Points | 64Plenty for smooth log curve |
| Noise Reduction | OFF, FAST, HIGH_QUALITY, MINIMAL, ZSLOFF available — can disable NR for clean log |
| Edge / Sharpening | FAST, HIGH_QUALITY, OFF, ZSLOFF available — can disable sharpening |
| Hot Pixel Modes | OFF, FAST, HIGH_QUALITY |
| Lens Shading Correction | OFF, FAST, HIGH_QUALITYOFF available — raw vignetting preserved for manual correction |
| Chromatic Aberration Correction | OFF, FAST, HIGH_QUALITY |
Vendor Tags
| Count | 2 vendor tags foundOEM-specific extensions available |
| com.google (2) | com.google.nexus.experimental2018.faceLandmark.availableIds = [1, 2, 3, 4, 5, 6] com.google.nexus.experimental2018.stereo.front_cal_data = [123, 10, 32, 32, 32, 32, 34, 99, 97, 109, 101, 114, 97, 115, 34, 58, 32, 91, 10… |
Concurrent Cameras 1 checks
Concurrent Cameras
| Concurrent Camera Sets | NoneDevice advertises no camera combination that can stream concurrently |
Startup Ramp 2 checks
Startup Ramp
| First Frame Latency | 427 msCamera start → first encoded frame, at 3840×2160 HEVC — the dead time between pressing record and the first frame of video existing. 3 runs: 437 / 425 / 427 ms |
| Frames Dropped at Startup | 14 framesFrames the camera produced but the encoder dropped while warming up (rate control and 3A settling) — the cost of starting a recording, not throttling. 3 runs: 14 / 14 / 14 |
Video Encoders 26 checks
Encoders
| HEVC (H.265) — c2.qti.hevc.encoder | Max bitrate: 120 MbpsExcellent — high enough for quality log |
| HEVC (H.265) Max Resolution | 4096 × 2304 |
| HEVC (H.265) Max Macroblocks/Frame | 36,864 MB — largest frame 4096×2304Frame-area budget at 16×16 macroblocks; any shape must fit inside it |
| HEVC (H.265) Dimension Alignment | width ×2 height ×2Any even size accepted |
| HEVC (H.265) 10-Bit Profiles | Main1010-bit encoding supported |
| HEVC (H.265) Bitrate Modes | CBR:Yes VBR:Yes CQ:YesCQ (constant quality) available — ideal for log footage |
| HEVC (H.265) Color Formats | 0x7f000789 AndroidOpaque (opaque buffer — OMX_COLOR_FormatAndroidOpaque) 0x7f420888 YUV420Flexible (COLOR_FormatYUV420Flexible — framework maps to NV12) 0x00000013 YUV420Planar (I420) 0x00000015 YUV420SemiPlanar (NV12) 0x00000014 YUV420PackedPlanar 0x00000027 (vendor-specific / unknown) |
| HEVC (H.265) — OMX.qcom.video.encoder.hevc | Max bitrate: 120 MbpsExcellent — high enough for quality log |
| HEVC (H.265) Max Resolution | 4096 × 2304 |
| HEVC (H.265) Max Macroblocks/Frame | 36,864 MB — largest frame 4096×2304Frame-area budget at 16×16 macroblocks; any shape must fit inside it |
| HEVC (H.265) Dimension Alignment | width ×2 height ×2Any even size accepted |
| HEVC (H.265) 10-Bit Profiles | Main1010-bit encoding supported |
| HEVC (H.265) Bitrate Modes | CBR:Yes VBR:Yes CQ:YesCQ (constant quality) available — ideal for log footage |
| HEVC (H.265) Color Formats | 0x7f000789 AndroidOpaque (opaque buffer — OMX_COLOR_FormatAndroidOpaque) 0x7f420888 YUV420Flexible (COLOR_FormatYUV420Flexible — framework maps to NV12) 0x00000013 YUV420Planar (I420) 0x00000015 YUV420SemiPlanar (NV12) 0x00000014 YUV420PackedPlanar 0x00000027 (vendor-specific / unknown) |
| AVC (H.264) — c2.qti.avc.encoder | Max bitrate: 120 MbpsExcellent — high enough for quality log |
| AVC (H.264) Max Resolution | 4096 × 2304 |
| AVC (H.264) Max Macroblocks/Frame | 36,864 MB — largest frame 4096×2304Frame-area budget at 16×16 macroblocks; any shape must fit inside it |
| AVC (H.264) Dimension Alignment | width ×2 height ×2Any even size accepted |
| AVC (H.264) Bitrate Modes | CBR:Yes VBR:Yes CQ:NoCQ not available — use VBR with high target bitrate |
| AVC (H.264) Color Formats | 0x7f000789 AndroidOpaque (opaque buffer — OMX_COLOR_FormatAndroidOpaque) 0x7f420888 YUV420Flexible (COLOR_FormatYUV420Flexible — framework maps to NV12) 0x00000013 YUV420Planar (I420) 0x00000015 YUV420SemiPlanar (NV12) 0x00000014 YUV420PackedPlanar 0x00000027 (vendor-specific / unknown) |
| AVC (H.264) — OMX.qcom.video.encoder.avc | Max bitrate: 120 MbpsExcellent — high enough for quality log |
| AVC (H.264) Max Resolution | 4096 × 2304 |
| AVC (H.264) Max Macroblocks/Frame | 36,864 MB — largest frame 4096×2304Frame-area budget at 16×16 macroblocks; any shape must fit inside it |
| AVC (H.264) Dimension Alignment | width ×2 height ×2Any even size accepted |
| AVC (H.264) Bitrate Modes | CBR:Yes VBR:Yes CQ:NoCQ not available — use VBR with high target bitrate |
| AVC (H.264) Color Formats | 0x7f000789 AndroidOpaque (opaque buffer — OMX_COLOR_FormatAndroidOpaque) 0x7f420888 YUV420Flexible (COLOR_FormatYUV420Flexible — framework maps to NV12) 0x00000013 YUV420Planar (I420) 0x00000015 YUV420SemiPlanar (NV12) 0x00000014 YUV420PackedPlanar 0x00000027 (vendor-specific / unknown) |
Native Camera Libraries 4 checks
Native Libs
| Camera HAL (/vendor/lib64/hw/) | com.qti.chi.override.so android.hardware.camera.provider@2.4-impl.so camera.sdm845.soCamera-related native libraries found |
| Camera plugins (/vendor/lib64/camera/) | com.qti.sensormodule.metric_imx363.bin com.qti.sensor.imx363.so com.qti.sensor.imx355_wide.so com.google.tuned.pixel3_imx355_wide.bin com.qti.sensormodule.primax_imx355_wide.bin com.google.tuned.pixel3_imx355_normal.bin com.google.tuned.pixel3_imx363.bin com.qti.sensor.imx355_normal.so com.qti.sensormodule.primax_imx355_normal.binCamera-related native libraries found |
| Vendor libs (/vendor/lib64/) | android.hardware.camera.common@1.0.so android.hardware.camera.device@1.0.so android.hardware.camera.device@3.2.so android.hardware.camera.device@3.3.so android.hardware.camera.device@3.4.so android.hardware.camera.device@3.5.so android.hardware.camera.device@3.6.so android.hardware.camera.provider@2.4-external.so android.hardware.camera.provider@2.4-legacy.so android.hardware.camera.provider@2.4.so camera camera.device@1.0-impl.so camera.device@3.2-impl.so camera.device@3.3-impl.so camera.device@3.4-external-impl.so camera.device@3.4-impl.so camera.device@3.5-external-impl.so camera.device@3.5-impl.so camera.device@3.6-external-impl.so libOpenCL-pixel.so lib_camera_sensors.so libcameradepthcalibrator.so libcamxfdalgov7.so libcamxfdengine.so libcamxncs.so libcamxstatscore.so libcamxtintlessalgo.so libcom.qti.chinodeutils.so libdisppower-pixel.so libgcam.so libgcam_ae.so libgcam_frsdk.so libgoog_pdaf_core_imx363.so libpixelhealth.so libpixelstats.so pixel-power-ext-V1-ndk_platform.so pixelatoms-cpp.so pixelpowerstats_provider_aidl_interface-cpp.soCamera-related native libraries found |
| Detected Platform | Qualcomm SDM845CamX/Chi HAL likely available |