Pixel 2

Android 11 (API 30)

Google · Qualcomm Snapdragon 835

CameraBench
Codec maxima
AVC100 Mbps
HEVC40 Mbps
AVC and HEVC advertised only — the codec tests were not run on this device
Bit depth
10-bit sensor → 8-bit encoder 😒
the sensor's extra bits never reach the file
Storage write
1.4 Gbps (raw)

Cameras

LensFacingFocal lengthSensor sizeMax resModesHW level
Rear #0BACK27mm (4.44mm)5.64 × 4.24 mmnot tested23LEVEL_3
Front #1FRONT25mm (3.38mm)4.59 × 3.45 mmnot tested22LEVEL_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

CodecLargest frameMacroblocksAdvertised max
HEVC4096×216034,5604096 × 4096 65,536 MB
AVC4096×216034,5604096 × 4096 65,536 MB

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 LevelLEVEL_3Best tier — RAW + YUV + reprocessing guaranteed

Capabilities

Manual Sensor ControlYesRequired for manual ISO/exposure in log shooting
RAW CaptureYesEnables access to raw Bayer sensor data
Burst CaptureYesSustained high-framerate capture
Read Sensor SettingsYesPer-frame sensor metadata readback
Dynamic Range ProfilesNoNot available — may need API 33+ or device support

Sensor

Bit Depth10-bit (white level = 1023)Good — standard for mobile sensors
Sensitivity RangeISO 50 – 3200Max analog ISO: 400 (digital gain above this)
Exposure Range56.3µs – 4.1sFastest: ~1/17759
Bayer PatternBGGR
Physical Size5.64 × 4.24 mm (diag 7.06 mm)Larger sensor = more light = better DR for log
Pixel Array4032 × 3032 (12.2 MP)

RAW Formats

RAW_SENSOR4032×3032 @ 30.1 fpsVideo-rate RAW achievable!
RAW104032×3032 @ 30.1 fpsVideo-rate RAW achievable!
RAW12Not supported
RAW_PRIVATE4032×3032 @ 30.1 fpsVideo-rate RAW achievable!

Streams

Max Simultaneous OutputsRAW:1 Processed:3 Stalling:1Can capture RAW + encoded video simultaneously
YUV_420_888 Modes4032×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 ProfilesRequires 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 ModesCONTRAST_CURVE, FAST, HIGH_QUALITYCONTRAST_CURVE available — can define custom log curve (64 points max)
Max Curve Points64Plenty for smooth log curve
Noise ReductionOFF, FAST, HIGH_QUALITY, MINIMAL, ZSLOFF available — can disable NR for clean log
Edge / SharpeningOFF, FAST, HIGH_QUALITY, ZSLOFF available — can disable sharpening
Hot Pixel ModesFAST, HIGH_QUALITY
Lens Shading CorrectionOFF, FAST, HIGH_QUALITYOFF available — raw vignetting preserved for manual correction
Chromatic Aberration CorrectionOFF, FAST, HIGH_QUALITY

Vendor Tags

Count24 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 LevelLEVEL_3Best tier — RAW + YUV + reprocessing guaranteed

Capabilities

Manual Sensor ControlYesRequired for manual ISO/exposure in log shooting
RAW CaptureYesEnables access to raw Bayer sensor data
Burst CaptureYesSustained high-framerate capture
Read Sensor SettingsYesPer-frame sensor metadata readback
Dynamic Range ProfilesNoNot available — may need API 33+ or device support

Sensor

Bit Depth10-bit (white level = 1023)Good — standard for mobile sensors
Sensitivity RangeISO 50 – 6000Max analog ISO: 400 (digital gain above this)
Exposure Range25.3µs – 0.9sFastest: ~1/39480
Bayer PatternRGGB
Physical Size4.59 × 3.45 mm (diag 5.74 mm)Larger sensor = more light = better DR for log
Pixel Array3280 × 2464 (8.1 MP)

RAW Formats

RAW_SENSOR3280×2464 @ 30.0 fpsVideo-rate RAW achievable!
RAW103280×2464 @ 30.0 fpsVideo-rate RAW achievable!
RAW12Not supported
RAW_PRIVATE3280×2464 @ 30.0 fpsVideo-rate RAW achievable!

Streams

Max Simultaneous OutputsRAW:1 Processed:3 Stalling:1Can capture RAW + encoded video simultaneously
YUV_420_888 Modes3264×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 ProfilesRequires 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 ModesCONTRAST_CURVE, FAST, HIGH_QUALITYCONTRAST_CURVE available — can define custom log curve (64 points max)
Max Curve Points64Plenty for smooth log curve
Noise ReductionOFF, FAST, HIGH_QUALITY, MINIMAL, ZSLOFF available — can disable NR for clean log
Edge / SharpeningOFF, FAST, HIGH_QUALITY, ZSLOFF available — can disable sharpening
Hot Pixel ModesFAST, HIGH_QUALITY
Lens Shading CorrectionOFF, FAST, HIGH_QUALITYOFF available — raw vignetting preserved for manual correction
Chromatic Aberration CorrectionOFF, FAST, HIGH_QUALITY

Vendor Tags

Count19 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 SetsNoneDevice advertises no camera combination that can stream concurrently
Video Encoders 13 checks

Encoders

HEVC (H.265) — OMX.qcom.video.encoder.hevcMax bitrate: 40 MbpsLow — may show banding in graded log footage
HEVC (H.265) Max Resolution4096 × 4096
HEVC (H.265) Max Macroblocks/Frame34,560 MB — largest frame 4096×2160Max width × max height (65,536 MB) exceeds this — those two cannot be combined
HEVC (H.265) Dimension Alignmentwidth ×2 height ×2Any even size accepted
HEVC (H.265) 10-Bit ProfilesNone — 8-bit onlyLog footage limited to 8-bit (256 levels)
HEVC (H.265) Bitrate ModesCBR:Yes VBR:Yes CQ:NoCQ not available — use VBR with high target bitrate
HEVC (H.265) Color Formats0x7fa30c06 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.avcMax bitrate: 100 MbpsExcellent — high enough for quality log
AVC (H.264) Max Resolution4096 × 4096
AVC (H.264) Max Macroblocks/Frame34,560 MB — largest frame 4096×2160Max width × max height (65,536 MB) exceeds this — those two cannot be combined
AVC (H.264) Dimension Alignmentwidth ×2 height ×2Any even size accepted
AVC (H.264) Bitrate ModesCBR:Yes VBR:Yes CQ:NoCQ not available — use VBR with high target bitrate
AVC (H.264) Color Formats0x7fa30c06 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 PlatformQualcomm Snapdragon 835 (msm8998)CamX/Chi HAL likely available