V2404

Android 16 (API 36)

vivo · QTI SM7550

CameraBench
Codec maxima
HEVCverified100 Mbps
AVCverified100 Mbps
HEVC and AVC both verified at 3840×2160 @ 30fps on Rear
Bit depth
10-bit sensor → 8-bit encoder 😒
the encoder does 10-bit, but this Android version exposes no public HDR capture API, so the file is 8-bit · P010 input
Storage write
4.6 Gbps (raw)

Cameras

LensFacingFocal lengthSensor sizeMax resModesHW level
Rear #0BACK26mm (4.84mm)6.55 × 4.92 mm3840×216032LEVEL_3
Front #1FRONT28mm (3.74mm)4.61 × 3.46 mm2304×172825LEVEL_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.

Encoder frame ceilings

CodecLargest frameMacroblocksAdvertised max
HEVC4096×217634,8164096 × 4096 65,536 MB
AVC4096×217634,8164096 × 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

105 checks — 47 supported · 4 partial · 6 unsupported · 48 informational

Camera 0 (BACK) — Rear 28 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 72 – 3200Max analog ISO: 3200 (digital gain above this)
Exposure Range91.7µs – 13.4sFastest: ~1/10905
Bayer PatternBGGR
Physical Size6.55 × 4.92 mm (diag 8.19 mm)Larger sensor = more light = better DR for log
Pixel Array4096 × 3072 (12.6 MP)

RAW Formats

RAW_SENSOR4096×3072 @ 30.0 fpsVideo-rate RAW achievable! The HAL reports no stall, so the readout rate is the streaming rate.
RAW104096×3072 @ 30.0 fpsVideo-rate RAW achievable! The HAL reports no stall, so the readout rate is the streaming rate.
RAW12Not supported
RAW_PRIVATE4096×3072 @ 30.0 fpsVideo-rate RAW achievable! The HAL reports no stall, so the readout rate is the streaming rate.

Streams

Max Simultaneous OutputsRAW:1 Processed:3 Stalling:2Can capture RAW + encoded video simultaneously
YUV_420_888 Modes4096×3072 @ 30 fps 4096×2304 @ 30 fps 4096×2304 @ 30 fps 3840×2160 @ 30 fps 3200×2400 @ 30 fps … and 36 more

HDR / 10-Bit

Dynamic Range ProfilesNone reportedDevice does not advertise HDR profiles
10-Bit YUV (P010)4096×3072 @ 30 fps 4096×2304 @ 30 fps 4096×2304 @ 30 fps 3840×2160 @ 30 fps 3200×2400 @ 30 fps 4096×1844 @ 30 fps 3200×1800 @ 30 fps 2400×2400 @ 30 fps 2560×1920 @ 30 fps 3200×1440 @ 30 fps 2304×1728 @ 30 fps 2560×1440 @ 30 fps 1920×1920 @ 30 fps 2048×1536 @ 30 fps 2304×1296 @ 30 fps 1728×1728 @ 30 fps 1920×1440 @ 30 fps 2400×1080 @ 30 fps 2304×1036 @ 30 fps 2304×964 @ 30 fps 1920×1080 @ 30 fps 1632×1224 @ 30 fps 1600×1200 @ 30 fps 2032×920 @ 30 fps 1440×1080 @ 30 fps 1280×960 @ 30 fps 1080×1080 @ 30 fps 1600×720 @ 30 fps 1440×720 @ 30 fps 1280×720 @ 30 fps 960×960 @ 30 fps 1024×768 @ 30 fps 1280×576 @ 30 fps 960×540 @ 30 fps 800×600 @ 30 fps 800×480 @ 30 fps 720×480 @ 30 fps 640×480 @ 30 fps 352×288 @ 30 fps 320×240 @ 30 fps 176×144 @ 30 fps10-bit input available for HEVC Main10 encoder

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 / SharpeningFAST, HIGH_QUALITY, OFF, ZSLOFF available — can disable sharpening
Hot Pixel ModesOFF, FAST, HIGH_QUALITY
Lens Shading CorrectionOFF, FAST, HIGH_QUALITYOFF available — raw vignetting preserved for manual correction
Chromatic Aberration CorrectionOFF, FAST, HIGH_QUALITY

Vendor Tags

Vendor-Specific KeysNone foundNo OEM-specific camera extensions detected
Camera 1 (FRONT) — Front 28 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 – 800Max analog ISO: 800 (digital gain above this)
Exposure Range51.5µs – 0.6sFastest: ~1/19430
Bayer PatternGBRG
Physical Size4.61 × 3.46 mm (diag 5.76 mm)Larger sensor = more light = better DR for log
Pixel Array2304 × 1728 (4.0 MP)

RAW Formats

RAW_SENSOR2304×1728 @ 30.0 fpsVideo-rate RAW achievable! The HAL reports no stall, so the readout rate is the streaming rate.
RAW102304×1728 @ 30.0 fpsVideo-rate RAW achievable! The HAL reports no stall, so the readout rate is the streaming rate.
RAW12Not supported
RAW_PRIVATE2304×1728 @ 30.0 fpsVideo-rate RAW achievable! The HAL reports no stall, so the readout rate is the streaming rate.

Streams

Max Simultaneous OutputsRAW:1 Processed:3 Stalling:2Can capture RAW + encoded video simultaneously
YUV_420_888 Modes2304×1728 @ 30 fps 2048×1536 @ 30 fps 2304×1296 @ 30 fps 1728×1728 @ 30 fps 1920×1440 @ 30 fps … and 23 more

HDR / 10-Bit

Dynamic Range ProfilesNone reportedDevice does not advertise HDR profiles
10-Bit YUV (P010)2304×1728 @ 30 fps 2048×1536 @ 30 fps 2304×1296 @ 30 fps 1728×1728 @ 30 fps 1920×1440 @ 30 fps 2304×1036 @ 30 fps 2304×964 @ 30 fps 1920×1080 @ 30 fps 1632×1224 @ 30 fps 1600×1200 @ 30 fps 2032×920 @ 30 fps 1440×1080 @ 30 fps 1280×960 @ 30 fps 1080×1080 @ 30 fps 1600×720 @ 30 fps 1440×720 @ 30 fps 1280×720 @ 30 fps 960×960 @ 30 fps 1024×768 @ 30 fps 1280×576 @ 30 fps 960×540 @ 30 fps 800×600 @ 30 fps 800×480 @ 30 fps 720×480 @ 30 fps 640×480 @ 30 fps 352×288 @ 30 fps 320×240 @ 30 fps 176×144 @ 30 fps10-bit input available for HEVC Main10 encoder

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 / SharpeningFAST, HIGH_QUALITY, OFF, ZSLOFF available — can disable sharpening
Hot Pixel ModesOFF, FAST, HIGH_QUALITY
Lens Shading CorrectionOFF, FAST, HIGH_QUALITYOFF available — raw vignetting preserved for manual correction
Chromatic Aberration CorrectionOFF, FAST, HIGH_QUALITY

Vendor Tags

Vendor-Specific KeysNone foundNo OEM-specific camera extensions detected
Concurrent Cameras 1 checks

Concurrent Cameras

Concurrent Camera Sets0 (BACK)Each set can stream simultaneously, but only at the platform's constrained concurrent stream limits (~720p per camera)
Startup Ramp 2 checks

Startup Ramp

First Frame Latency147 msCamera start → first encoded frame, at 3840×2160 HEVC — the dead time between pressing record and the first frame of video existing. 3 runs: 146 / 148 / 147 ms
Frames Dropped at Startup8 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: 8 / 8 / 8
Video Encoders 42 checks

Encoders

HEVC (H.265) — c2.qti.hevc.encoderMax bitrate: 100 MbpsExcellent — high enough for quality log
HEVC (H.265) Max Resolution4096 × 4096
HEVC (H.265) Max Macroblocks/Frame34,816 MB — largest frame 4096×2176Max 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 ProfilesMain10, Main10HDR10, Main10HDR10Plus10-bit encoding supported
HEVC (H.265) Bitrate ModesCBR:Yes VBR:Yes CQ:NoCQ not available — use VBR with high target bitrate
HEVC (H.265) Color Formats0x7f000789 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) 0x7f00aaa2 (vendor-specific / unknown) 0x00000036 (vendor-specific / unknown)
HEVC (H.265) — c2.qti.hevc.encoder.cqMax bitrate: 100 MbpsExcellent — high enough for quality log
HEVC (H.265) Max Resolution512 × 512
HEVC (H.265) Max Macroblocks/Frame1,024 MB — largest frame 512×512Frame-area budget at 16×16 macroblocks; any shape must fit inside it
HEVC (H.265) Dimension Alignmentwidth ×2 height ×2Any even size accepted
HEVC (H.265) 10-Bit ProfilesMain10, Main10HDR10, Main10HDR10Plus10-bit encoding supported
HEVC (H.265) Bitrate ModesCBR:No VBR:No CQ:YesCQ (constant quality) available — ideal for log footage
HEVC (H.265) Color Formats0x7f000789 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) 0x7f00aaa2 (vendor-specific / unknown) 0x00000036 (vendor-specific / unknown)
HEVC (H.265) — OMX.qcom.video.encoder.hevcMax bitrate: 100 MbpsExcellent — high enough for quality log
HEVC (H.265) Max Resolution4096 × 4096
HEVC (H.265) Max Macroblocks/Frame34,816 MB — largest frame 4096×2176Max 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 ProfilesMain10, Main10HDR10, Main10HDR10Plus10-bit encoding supported
HEVC (H.265) Bitrate ModesCBR:Yes VBR:Yes CQ:NoCQ not available — use VBR with high target bitrate
HEVC (H.265) Color Formats0x7f000789 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) 0x7f00aaa2 (vendor-specific / unknown) 0x00000036 (vendor-specific / unknown)
HEVC (H.265) — OMX.qcom.video.encoder.hevc.cqMax bitrate: 100 MbpsExcellent — high enough for quality log
HEVC (H.265) Max Resolution512 × 512
HEVC (H.265) Max Macroblocks/Frame1,024 MB — largest frame 512×512Frame-area budget at 16×16 macroblocks; any shape must fit inside it
HEVC (H.265) Dimension Alignmentwidth ×2 height ×2Any even size accepted
HEVC (H.265) 10-Bit ProfilesMain10, Main10HDR10, Main10HDR10Plus10-bit encoding supported
HEVC (H.265) Bitrate ModesCBR:No VBR:No CQ:YesCQ (constant quality) available — ideal for log footage
HEVC (H.265) Color Formats0x7f000789 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) 0x7f00aaa2 (vendor-specific / unknown) 0x00000036 (vendor-specific / unknown)
AVC (H.264) — c2.qti.avc.encoderMax bitrate: 100 MbpsExcellent — high enough for quality log
AVC (H.264) Max Resolution4096 × 4096
AVC (H.264) Max Macroblocks/Frame34,816 MB — largest frame 4096×2176Max 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 Formats0x7f000789 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) 0x7f00aaa2 (vendor-specific / unknown) 0x00000036 (vendor-specific / unknown)
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,816 MB — largest frame 4096×2176Max 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 Formats0x7f000789 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) 0x7f00aaa2 (vendor-specific / unknown) 0x00000036 (vendor-specific / unknown)

HDR / 10-Bit

10-Bit Encode (measured)Yes — verifiedA hardware encoder accepted real 10-bit input via p010_imagewriter
10-Bit Display (measured)Yes — verified on screenA 10-bit (RGBA_1010102) surface rendered and read back correctly; display reports HDR10, HLG, HDR10_PLUS
Native Camera Libraries 4 checks

Native Libs

Camera HAL (/vendor/lib64/hw/)camera.qcom.so com.qti.chi.offline.so com.qti.chi.override.so vendor.vivo.hardware.camera.jpegencoder@1.0-impl.so vendor.vivo.hardware.camera.provider@1.0-impl.so vendor.vivo.hardware.camera.vif@1.0-impl.so vendor.vivo.hardware.camera.vivodevice@1.0-impl.so vendor.vivo.hardware.camera.vivopostproc@1.0-impl.so vendor.vivo.hardware.camera.vivoreprocess@1.0-impl.so vendor.vivo.hardware.camera3rd.provider@1.0-impl.soCamera-related native libraries found
Camera plugins (/vendor/lib64/camera/)com.qti.sensor.imx882.so com.qti.sensormodule.pd2404f_ex_imx882_ois.bin com.qti.tuned.pd2404f_ex_imx882.bin libVivoCameraConfig.so tuning_imx882_engineer_vivohaf.so tuning_imx882_thirdpartyapp_vivohaf.so tuning_imx882_vivohaf.soCamera-related native libraries found
Vendor libs (/vendor/lib64/)android.hardware.camera.common@1.0.so camera camx.device-impl.so camx.provider-impl.so com.qti.camx.chiiqutils.so com.qti.chiusecaseselector.so libbatching.so libc.vivo.CameraConfig.so libcamerapostproc.so libcamxcommonutils.so libcamxexternalformatutils.so libcamxfacialfeatures.so libcamxfdalgo.so libcamxfdengine.so libcamxhwnodecontext.so libcamxifestriping.so libcamximageformatutils.so libcamxsettingsmanager.so libcamxstatscore.so libcamxswispiqmodule.so libcamxswprocessalgo.so libcamxtintlessalgo.so libchifeature2.so libchilog.so libcom.qti.chinodeutils.so libcommonchiutils.so libcvkit_camera.so libmmcamera_bestats.so libmmcamera_cac.so libmmcamera_lscv35.so libmmcamera_mfnr.so libmmcamera_mfnr_t4.so libmmcamera_pdpc.so libqshcamera.so libvcf_camera_aidl_device.so libvcf_camera_aidl_provider.so libvivo.camera3rd.log.so libvivo.pap.vivocameraprovider.client.so libvivo.vas.cameralog.so libvivo_facetrack_camera.so libvivocameraconfig.so libvivochihook.so vendor.qti.hardware.camera.aon-service-impl.so vendor.qti.hardware.camera.aon@1.0.so vendor.qti.hardware.camera.postproc@1.0-service-impl.so vendor.qti.hardware.camera.postproc@1.0.so vendor.vivo.hardware.camera.cameralog@1.0.so vendor.vivo.hardware.camera.jpegencoder@1.0.so vendor.vivo.hardware.camera.provider@1.0.so vendor.vivo.hardware.camera.vif3ainfotransmitter@1.0.so vendor.vivo.hardware.camera.vif@1.0.so vendor.vivo.hardware.camera.vivodevice@1.0.so vendor.vivo.hardware.camera.vivopostproc@1.0.so vendor.vivo.hardware.camera.vivoreprocess@1.0.so vendor.vivo.hardware.camera3rd.context@1.0-impl.so vendor.vivo.hardware.camera3rd.context@1.0.so vendor.vivo.hardware.camera3rd.provider@1.0.so vendor.vivo.hardware.nativecamera.provider@1.0.so vendor.vivo.hardware.nativecamera.vivodevice@1.0.soCamera-related native libraries found
Detected PlatformQTI SM7550 (crow)check vendor tags for capabilities