How to test pass CTSV for camera

Document created by Tzeng Terry on Jan 17, 2017
Version 1Show Document
  • View in full screen mode

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?

Attachments

    Outcomes