Pixel 2
Android 11 (API 30)
Google · Qualcomm Snapdragon 835
Cameras
| Lens | Facing | Focal length | Sensor size | Max res | Modes | HW level |
|---|---|---|---|---|---|---|
| Rear #0 | BACK | 27mm (4.44mm) | 5.64 × 4.24 mm | not tested | 23 | LEVEL_3 |
| Front #1 | FRONT | 25mm (3.38mm) | 4.59 × 3.45 mm | not tested | 22 | 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×2160 | 34,560 | |
| AVC | 4096×2160 | 34,560 |
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. The advertised maximum width and height are struck through where their product exceeds that budget. They are independent limits that cannot be used together, so the figure they imply is not a resolution this encoder will accept: design against the macroblock count, not the advertised pair.
Diagnostics
76 checks — 33 supported · 3 partial · 10 unsupported · 30 informational
Camera 0 (BACK) — Rear 30 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 50 – 3200Max analog ISO: 400 (digital gain above this) |
| Exposure Range | 56.3µs – 4.1sFastest: ~1/17759 |
| Bayer Pattern | BGGR |
| Physical Size | 5.64 × 4.24 mm (diag 7.06 mm)Larger sensor = more light = better DR for log |
| Pixel Array | 4032 × 3032 (12.2 MP) |
RAW Formats
| RAW_SENSOR | 4032×3032 @ 30.1 fpsVideo-rate RAW achievable! |
| RAW10 | 4032×3032 @ 30.1 fpsVideo-rate RAW achievable! |
| RAW12 | Not supported |
| RAW_PRIVATE | 4032×3032 @ 30.1 fpsVideo-rate RAW achievable! |
Streams
| Max Simultaneous Outputs | RAW:1 Processed:3 Stalling:1Can capture RAW + encoded video simultaneously |
| YUV_420_888 Modes | 4032×3024 @ 30 fps 4000×3000 @ 30 fps 2976×2976 @ 30 fps 3840×2160 @ 30 fps 3264×2448 @ 30 fps … and 21 more |
HDR / 10-Bit
| Dynamic Range Profiles | Requires API 33+ (Android 13)Device is on API 30 |
| 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 | OFF, FAST, HIGH_QUALITY, ZSLOFF available — can disable sharpening |
| Hot Pixel Modes | 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 | 24 vendor tags foundOEM-specific extensions available |
| com.google (10) | com.google.nexus.experimental2017.stats.availableHistogramBucketCounts = [256, 128, 64, 32, 16] com.google.nexus.experimental2017.sensorEepromInfo = [77, 97, 107, 101, 114, 58, 83, 44, 68, 97, 116, 101, 58, 50, 48, 49, 55, 45, 57… com.google.nexus.experimental2017.sensorEepromPDAFRightGains = [-13, 3, 100, 3, 2, 3, -67, 2, -122, 2, 80, 2, 37, 2, 2, 2, -22, 1, -30, 1, -25,… com.google.nexus.experimental2017.sensorEepromPDAFLeftGains = [-5, 2, -113, 2, 66, 2, 13, 2, -25, 1, -53, 1, -69, 1, -77, 1, -73, 1, -54, 1, -… com.google.nexus.experimental2017.sensorEepromPDAFConvCoeff = [68, 0, 58, 0, 50, 0, 47, 0, 46, 0, 49, 0, 57, 0, 69, 0, 66, 0, 56, 0, 49, 0, 46… com.google.nexus.experimental2017.sensorEepromWbNumLights = [16] com.google.nexus.experimental2017.sensorEepromWbRGRatios = [0.47258624, 0.4369262, 0.8738911, 0.6372644, 0.5761719, 1.0958048, 0.55083495, … com.google.nexus.experimental2017.sensorEepromWbBGRatios = [0.70102066, 0.78568774, 0.3453303, 0.45418066, 0.40422478, 0.27330023, 0.568835… com.google.nexus.experimental2017.sensorEepromWbGrGbRatio = [1.0029297] com.google.nexus.experimental2017.sensor.pd_data_dimensions = [4032, 758, 8064] |
| org.codeaurora (14) | org.codeaurora.qcamera3.opaque_raw.opaque_raw_strides = [4032, 3032, 4032] org.codeaurora.qcamera3.opaque_raw.opaque_raw_format = [0] org.codeaurora.qcamera3.iso_exp_priority.iso_available_modes = [0, 1, 2, 3, 4, 5, 6, 7] org.codeaurora.qcamera3.iso_exp_priority.exposure_time_range = [56311, 4070205952] org.codeaurora.qcamera3.saturation.range = [0, 10, 5, 1] org.codeaurora.qcamera3.exposure_metering.available_modes = [0, 1, 2, 1, 5, 6] org.codeaurora.qcamera3.sensor_meta_data.is_mono_only = [0] org.codeaurora.qcamera3.dualcam_calib_meta_data.dualcam_calib_meta_data_blob = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0… org.codeaurora.qcamera3.video_hdr_mode.vhdr_supported_modes = [0, 1] org.codeaurora.qcamera3.instant_aec.instant_aec_available_modes = [0, 1, 2] org.codeaurora.qcamera3.sharpness.range = [0, 36] org.codeaurora.qcamera3.histogram.buckets = [256] org.codeaurora.qcamera3.histogram.max_count = [256] org.codeaurora.qcamera3.stats.bsgc_available = [0] |
Camera 1 (FRONT) — Front 30 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 50 – 6000Max analog ISO: 400 (digital gain above this) |
| Exposure Range | 25.3µs – 0.9sFastest: ~1/39480 |
| Bayer Pattern | RGGB |
| Physical Size | 4.59 × 3.45 mm (diag 5.74 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:1Can 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 2048×1536 @ 30 fps … and 17 more |
HDR / 10-Bit
| Dynamic Range Profiles | Requires API 33+ (Android 13)Device is on API 30 |
| 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 | OFF, FAST, HIGH_QUALITY, ZSLOFF available — can disable sharpening |
| Hot Pixel Modes | 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 | 19 vendor tags foundOEM-specific extensions available |
| com.google (5) | com.google.nexus.experimental2017.stats.availableHistogramBucketCounts = [256, 128, 64, 32, 16] com.google.nexus.experimental2017.sensorEepromWbNumLights = [16] com.google.nexus.experimental2017.sensorEepromWbRGRatios = [0.4568255, 0.44494012, 0.8158008, 0.6027077, 0.5601166, 1.0456505, 0.5261783, 0… com.google.nexus.experimental2017.sensorEepromWbBGRatios = [0.72036976, 0.7580776, 0.37199476, 0.45719182, 0.44292307, 0.28167507, 0.593167… com.google.nexus.experimental2017.sensorEepromWbGrGbRatio = [1.0029383] |
| org.codeaurora (14) | org.codeaurora.qcamera3.opaque_raw.opaque_raw_strides = [3280, 2464, 3288] org.codeaurora.qcamera3.opaque_raw.opaque_raw_format = [0] org.codeaurora.qcamera3.iso_exp_priority.iso_available_modes = [0, 1, 2, 3, 4, 5, 6, 7] org.codeaurora.qcamera3.iso_exp_priority.exposure_time_range = [25329, 870906990] org.codeaurora.qcamera3.saturation.range = [0, 10, 5, 1] org.codeaurora.qcamera3.exposure_metering.available_modes = [0, 1, 2, 1, 5, 6] org.codeaurora.qcamera3.sensor_meta_data.is_mono_only = [0] org.codeaurora.qcamera3.dualcam_calib_meta_data.dualcam_calib_meta_data_blob = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0… org.codeaurora.qcamera3.video_hdr_mode.vhdr_supported_modes = [0, 1] org.codeaurora.qcamera3.instant_aec.instant_aec_available_modes = [0, 1, 2] org.codeaurora.qcamera3.sharpness.range = [0, 36] org.codeaurora.qcamera3.histogram.buckets = [256] org.codeaurora.qcamera3.histogram.max_count = [256] org.codeaurora.qcamera3.stats.bsgc_available = [0] |
Concurrent Cameras 1 checks
Concurrent Cameras
| Concurrent Camera Sets | NoneDevice advertises no camera combination that can stream concurrently |
Video Encoders 13 checks
Encoders
| HEVC (H.265) — OMX.qcom.video.encoder.hevc | Max bitrate: 40 MbpsLow — may show banding in graded log footage |
| HEVC (H.265) Max Resolution | 4096 × 4096 |
| HEVC (H.265) Max Macroblocks/Frame | 34,560 MB — largest frame 4096×2160Max width × max height (65,536 MB) exceeds this — those two cannot be combined |
| HEVC (H.265) Dimension Alignment | width ×2 height ×2Any even size accepted |
| HEVC (H.265) 10-Bit Profiles | None — 8-bit onlyLog footage limited to 8-bit (256 levels) |
| HEVC (H.265) Bitrate Modes | CBR:Yes VBR:Yes CQ:NoCQ not available — use VBR with high target bitrate |
| HEVC (H.265) Color Formats | 0x7fa30c06 QCOM YUV420SemiPlanar32mCompressed (UBWC NV12 — lossless tile) 0x7fa30c04 QCOM YUV420SemiPlanar32m (NV12 32-macroblock-aligned stride) 0x7fa30c08 QCOM YVU420SemiPlanar32mCompressed (UBWC NV21 tile) 0x7fa30c07 QCOM YUV420SemiPlanar32m10bitCompressed (UBWC NV12 10-bit) 0x7f000789 AndroidOpaque (opaque buffer — OMX_COLOR_FormatAndroidOpaque) 0x7f420888 YUV420Flexible (COLOR_FormatYUV420Flexible — framework maps to NV12) 0x00000015 YUV420SemiPlanar (NV12) |
| AVC (H.264) — OMX.qcom.video.encoder.avc | Max bitrate: 100 MbpsExcellent — high enough for quality log |
| AVC (H.264) Max Resolution | 4096 × 4096 |
| AVC (H.264) Max Macroblocks/Frame | 34,560 MB — largest frame 4096×2160Max width × max height (65,536 MB) exceeds this — those two cannot be combined |
| 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 | 0x7fa30c06 QCOM YUV420SemiPlanar32mCompressed (UBWC NV12 — lossless tile) 0x7fa30c04 QCOM YUV420SemiPlanar32m (NV12 32-macroblock-aligned stride) 0x7fa30c08 QCOM YVU420SemiPlanar32mCompressed (UBWC NV21 tile) 0x7fa30c07 QCOM YUV420SemiPlanar32m10bitCompressed (UBWC NV12 10-bit) 0x7f000789 AndroidOpaque (opaque buffer — OMX_COLOR_FormatAndroidOpaque) 0x7f420888 YUV420Flexible (COLOR_FormatYUV420Flexible — framework maps to NV12) 0x00000015 YUV420SemiPlanar (NV12) |
Native Camera Libraries 2 checks
Native Libs
| Vendor libs (/vendor/lib64/) | camera.device@3.2-impl.so libdisppower-pixel.so libmmcamera2_q3a_core.so libmmcamera2_stats_algorithm.so libmmcamera2_stats_lib.so libmmcamera_dbg.so libmmcamera_faceproc.so libmmcamera_faceproc2.so libmmcamera_tintless_algo.so pixelpowerstats_provider_aidl_interface-V1-cpp.soCamera-related native libraries found |
| Detected Platform | Qualcomm Snapdragon 835 (msm8998)CamX/Chi HAL likely available |