Hi freescale, For using platform I.MX6QP and Android 6.0.1, test camera format is failed in CTSV R13. CTSV need to test format N21, YV12, YUY2,(160x120, 176x144, 320x180, 320x240, ...,640x480). Question list : (1.) It test YUY2 format is failed for handing preview screen was show green screen. For logcat issue log: 01-18 03:10:50.856 221 1252 E imx6.gralloc: int GPUBufferManager::lockYUVHandle(private_handle_t*, android_ycbcr*) not support format:0x14 01-18 03:10:50.856 221 1252 W GraphicBufferMapper: lock(...) failed -22 (Invalid argument) 01-18 03:10:50.892 221 311 E FslCameraHAL: processBufferWithIPU:320, IPU_CHECK_TASK ret=12 01-18 03:10:50.892 221 1252 E imx6.gralloc: int GPUBufferManager::lockYUVHandle(private_handle_t*, android_ycbcr*) not support format:0x14 01-18 03:10:50.892 221 1252 W GraphicBufferMapper: lock(...) failed -22 (Invalid argument) 01-18 03:10:50.924 221 311 E FslCameraHAL: processBufferWithIPU:320, IPU_CHECK_TASK ret=12 01-18 03:10:50.924 221 1252 E imx6.gralloc: int GPUBufferManager::lockYUVHandle(private_handle_t*, android_ycbcr*) For failed status: Test_fail_picture (2.) For test YV12 , 424X240, the result is failed. Logcat failed log: 01-18 03:29:51.547 1213 1229 D OpenGLRenderer: endAllStagingAnimators on 0x917f0700 (ListPopupWindow$DropDownListView) with handle 0x92564f30 01-18 03:29:51.637 221 1259 I FslCameraHAL: Stream::Stream(int, camera3_stream_t*, Camera*) create preview stream 01-18 03:29:51.637 221 1259 I FslCameraHAL: stream: w:424, h:240, format:0x103, usage:0x8000302, buffers:3 01-18 03:29:51.637 221 1259 I FslCameraHAL: create callback stream 01-18 03:29:51.637 221 1259 I FslCameraHAL: stream: w:424, h:240, format:0x101, usage:0x8000303, buffers:3 01-18 03:29:51.650 221 1325 I FslCameraHAL: int32_t VideoStream::configure(android::sp<Stream>): w:160, h:120, sensor format:0x14, stream format:0x103, fps:15, num:3 01-18 03:29:51.651 221 311 I FslCameraHAL: virtual int32_t UvcDevice::UvcStream::onDeviceStopLocked() 01-18 03:29:51.664 221 311 I FslCameraHAL: virtual int32_t DMAStream::freeBuffersLocked() 01-18 03:29:51.664 221 311 I FslCameraHAL: freeBufferToIon buffer num:3 01-18 03:29:51.664 221 311 I FslCameraHAL: virtual int32_t UvcDevice::UvcStream::onDeviceConfigureLocked() 01-18 03:29:51.664 221 311 I FslCameraHAL: virtual int32_t DMAStream::onDeviceConfigureLocked() 01-18 03:29:51.664 221 311 I FslCameraHAL: virtual int32_t USPStream::onDeviceConfigureLocked() 01-18 03:29:51.664 221 311 I FslCameraHAL: virtual int32_t MMAPStream::onDeviceConfigureLocked() 01-18 03:29:51.664 221 311 I FslCameraHAL: Width * Height 424 x 240 format YUYV, fps: 15 01-18 03:29:51.664 221 311 E FslCameraHAL: width:424 height:240 is not supported. 01-18 03:29:51.694 221 311 I FslCameraHAL: virtual int32_t DMAStream::allocateBuffersLocked() 01-18 03:29:51.694 221 311 I FslCameraHAL: allocateBufferFromIon buffer num:3 01-18 03:29:51.696 221 311 I FslCameraHAL: phyalloc ptr:0xa9b8d000, phy:0x26180000, ionSize:208896 01-18 03:29:51.698 221 311 I FslCameraHAL: phyalloc ptr:0xa9b21000, phy:0x261c0000, ionSize:208896 01-18 03:29:51.701 221 311 I FslCameraHAL: phyalloc ptr:0xa9aee000, phy:0x26200000, ionSize:208896 01-18 03:29:51.701 221 311 I FslCameraHAL: virtual int32_t UvcDevice::UvcStream::onDeviceStartLocked() 01-18 03:29:51.701 221 311 I FslCameraHAL: buf[0] length:203520 01-18 03:29:51.701 221 311 I FslCameraHAL: buf[1] length:203520 01-18 03:29:51.701 221 311 I FslCameraHAL: buf[2] length:203520 Fail Piture: YV12_test_fail For freescale camera HAL description ./hardware/imx/mx6/libcamera3/CameraHAL.cpp /* Hardware limitation on I.MX6DQ platform * VPU only support NV12&I420 format. * IPU doesn't support NV21 format. * But android framework requires NV21&YV12 format support. * YV12&I420 Y/UV stride doesn't match between android framework and IPU/GPU. ** Android YV12&I420 define: * - a horizontal stride multiple of 16 pixels * - a vertical stride equal to the height * - y_size = stride * height * - c_stride = ALIGN(stride/2, 16) * ** GPU YV12&I420 limitation: * - GPU limit Y stride to be 32 alignment, and UV stride 16 alignment. * ** IPU hardware YV12&I420 limitation: * - IPU limit the Y stride to be 2x of the UV stride alignment. ** IPU driver YV12&I420 define: * - y_stride = width * - uv_stride = y_stride / 2; * So there is work around to treat the format on I.MX6DQ platform: * Change format NV21&YV12 to NV12&I420 in Camera framework. * The NV21 format required by CTS is treated as NV12. * YUV alignment required by CTS doesn't match on I.MX6DQ platform. */ How to fix the issue in IMX6qp for CTSV?
View full article