/*
|
* Copyright (c) 2021 by Allwinnertech Co., Ltd.
|
*
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
* you may not use this file except in compliance with the License.
|
* You may obtain a copy of the License at
|
*
|
* http://www.apache.org/licenses/LICENSE-2.0
|
*
|
* Unless required by applicable law or agreed to in writing, software
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* See the License for the specific language governing permissions and
|
* limitations under the License.
|
*/
|
|
#include "common.h"
|
|
#include <stdio.h>
|
#include <stdlib.h>
|
#include <unistd.h>
|
#include <string.h>
|
#include <errno.h>
|
|
#include <cutils/properties.h>
|
|
#include "v4l2_log.h"
|
|
typedef struct camera3_jpeg_blob {
|
void * vaddr;
|
int share_fd;
|
} camera_save_buffer_t;
|
|
bool saveBuffers(char *str, void *p, unsigned int length, bool is_oneframe) {
|
int fd;
|
HAL_LOGD("Debug to save a frame!");
|
if ((access(str, 0) != -1) && (is_oneframe)) {
|
HAL_LOGD("File %s is exists!!!\n", str);
|
}
|
if (is_oneframe) {
|
fd = open(str, O_CREAT|O_RDWR|O_TRUNC, 0777); // save one frame data
|
} else {
|
fd = open(str, O_CREAT|O_RDWR|O_APPEND, 0777); // save more frames
|
}
|
if (!fd) {
|
HAL_LOGE("Open file error %s", strerror(errno));
|
return false;
|
}
|
if (write(fd, p, length)) {
|
HAL_LOGE("Write file fail %s", strerror(errno));
|
close(fd);
|
return true;
|
} else {
|
HAL_LOGE("Write file fail");
|
close(fd);
|
return false;
|
}
|
}
|
|
bool saveSizes(int width, int height) {
|
int fd;
|
char buf[128];
|
fd = open("/data/camera/size.txt", O_CREAT|O_RDWR|O_APPEND, 0777);
|
if (!fd) {
|
HAL_LOGE("Open file error %s", strerror(errno));
|
return false;
|
}
|
sprintf(buf, "width:%d height:%d", width, height);
|
if (write(fd, reinterpret_cast<void*>(buf), sizeof(buf))) {
|
close(fd);
|
return true;
|
} else {
|
HAL_LOGE("Write file fail %s", strerror(errno));
|
close(fd);
|
return false;
|
}
|
}
|
|
int getSingleCameraId() {
|
char singleCameraId[PROPERTY_VALUE_MAX];
|
if (!(property_get("persist.vendor.SingleCameraId",
|
singleCameraId, NULL) > 0)) {
|
return -1;
|
} else {
|
int id = atoi(singleCameraId);
|
return id;
|
}
|
}
|
|
int getSupportCameraId(int cameraId) {
|
int res = getSingleCameraId();
|
if (res < 0) {
|
return cameraId;
|
} else {
|
return res;
|
}
|
}
|
|
std::string getV4l2IoctlString(int v4l2_ioctl_request) {
|
return v4l2_ioctl_map[v4l2_ioctl_request];
|
}
|
|
std::string getHalPixelFormatString(int hal_pixel_format) {
|
return hal_pixel_format_map[hal_pixel_format];
|
}
|
|
std::string getV4l2PixelFormatString(int v4l2_pixel_format) {
|
return v4l2_pixel_format_map[v4l2_pixel_format];
|
}
|
|
std::string getGrallocUsageString(int usage) {
|
return gralloc_usage_map[usage];
|
}
|
|
std::map<int, std::string> v4l2_ioctl_map = {
|
{VIDIOC_QUERYCAP, "VIDIOC_QUERYCAP"},
|
{VIDIOC_RESERVED, "VIDIOC_RESERVED"},
|
{VIDIOC_ENUM_FMT, "VIDIOC_ENUM_FMT"},
|
{VIDIOC_G_FMT, "VIDIOC_G_FMT"},
|
{VIDIOC_S_FMT, "VIDIOC_S_FMT"},
|
{VIDIOC_REQBUFS, "VIDIOC_REQBUFS"},
|
{VIDIOC_QUERYBUF, "VIDIOC_QUERYBUF"},
|
{VIDIOC_G_FBUF, "VIDIOC_G_FBUF"},
|
{VIDIOC_S_FBUF, "VIDIOC_S_FBUF"},
|
{VIDIOC_OVERLAY, "VIDIOC_OVERLAY"},
|
{VIDIOC_QBUF, "VIDIOC_QBUF"},
|
{VIDIOC_EXPBUF, "VIDIOC_EXPBUF"},
|
{VIDIOC_DQBUF, "VIDIOC_DQBUF"},
|
{VIDIOC_STREAMON, "VIDIOC_STREAMON"},
|
{VIDIOC_STREAMOFF, "VIDIOC_STREAMOFF"},
|
{VIDIOC_G_PARM, "VIDIOC_G_PARM"},
|
{VIDIOC_S_PARM, "VIDIOC_S_PARM"},
|
{VIDIOC_G_STD, "VIDIOC_G_STD"},
|
{VIDIOC_S_STD, "VIDIOC_S_STD"},
|
{VIDIOC_ENUMSTD, "VIDIOC_ENUMSTD"},
|
{VIDIOC_ENUMINPUT, "VIDIOC_ENUMINPUT"},
|
{VIDIOC_G_CTRL, "VIDIOC_G_CTRL"},
|
{VIDIOC_S_CTRL, "VIDIOC_S_CTRL"},
|
{VIDIOC_G_TUNER, "VIDIOC_G_TUNER"},
|
{VIDIOC_S_TUNER, "VIDIOC_S_TUNER"},
|
{VIDIOC_G_AUDIO, "VIDIOC_G_AUDIO"},
|
{VIDIOC_S_AUDIO, "VIDIOC_S_AUDIO"},
|
{VIDIOC_QUERYCTRL, "VIDIOC_QUERYCTRL"},
|
{VIDIOC_QUERYMENU, "VIDIOC_QUERYMENU"},
|
{VIDIOC_G_INPUT, "VIDIOC_G_INPUT"},
|
{VIDIOC_S_INPUT, "VIDIOC_S_INPUT"},
|
{VIDIOC_G_EDID, "VIDIOC_G_EDID"},
|
{VIDIOC_S_EDID, "VIDIOC_S_EDID"},
|
{VIDIOC_G_OUTPUT, "VIDIOC_G_OUTPUT"},
|
{VIDIOC_S_OUTPUT, "VIDIOC_S_OUTPUT"},
|
{VIDIOC_ENUMOUTPUT, "VIDIOC_ENUMOUTPUT"},
|
{VIDIOC_G_AUDOUT, "VIDIOC_G_AUDOUT"},
|
{VIDIOC_S_AUDOUT, "VIDIOC_S_AUDOUT"},
|
{VIDIOC_G_MODULATOR, "VIDIOC_G_MODULATOR"},
|
{VIDIOC_S_MODULATOR, "VIDIOC_S_MODULATOR"},
|
{VIDIOC_G_FREQUENCY, "VIDIOC_G_FREQUENCY"},
|
{VIDIOC_S_FREQUENCY, "VIDIOC_S_FREQUENCY"},
|
{VIDIOC_CROPCAP, "VIDIOC_CROPCAP"},
|
{VIDIOC_G_CROP, "VIDIOC_G_CROP"},
|
{VIDIOC_S_CROP, "VIDIOC_S_CROP"},
|
{VIDIOC_G_JPEGCOMP, "VIDIOC_G_JPEGCOMP"},
|
{VIDIOC_S_JPEGCOMP, "VIDIOC_S_JPEGCOMP"},
|
{VIDIOC_QUERYSTD, "VIDIOC_QUERYSTD"},
|
{VIDIOC_TRY_FMT, "VIDIOC_TRY_FMT"},
|
{VIDIOC_ENUMAUDIO, "VIDIOC_ENUMAUDIO"},
|
{VIDIOC_ENUMAUDOUT, "VIDIOC_ENUMAUDOUT"},
|
{VIDIOC_G_PRIORITY, "VIDIOC_G_PRIORITY"},
|
{VIDIOC_S_PRIORITY, "VIDIOC_S_PRIORITY"},
|
{VIDIOC_G_SLICED_VBI_CAP, "VIDIOC_G_SLICED_VBI_CAP"},
|
{VIDIOC_LOG_STATUS, "VIDIOC_LOG_STATUS"},
|
{VIDIOC_G_EXT_CTRLS, "VIDIOC_G_EXT_CTRLS"},
|
{VIDIOC_S_EXT_CTRLS, "VIDIOC_S_EXT_CTRLS"},
|
{VIDIOC_TRY_EXT_CTRLS, "VIDIOC_TRY_EXT_CTRLS"},
|
{VIDIOC_ENUM_FRAMESIZES, "VIDIOC_ENUM_FRAMESIZES"},
|
{VIDIOC_ENUM_FRAMEINTERVALS, "VIDIOC_ENUM_FRAMEINTERVALS"},
|
{VIDIOC_G_ENC_INDEX, "VIDIOC_G_ENC_INDEX"},
|
{VIDIOC_ENCODER_CMD, "VIDIOC_ENCODER_CMD"},
|
{VIDIOC_TRY_ENCODER_CMD, "VIDIOC_TRY_ENCODER_CMD"},
|
{VIDIOC_DBG_S_REGISTER, "VIDIOC_DBG_S_REGISTER"},
|
{VIDIOC_DBG_G_REGISTER, "VIDIOC_DBG_G_REGISTER"},
|
{VIDIOC_S_HW_FREQ_SEEK, "VIDIOC_S_HW_FREQ_SEEK"},
|
{VIDIOC_S_DV_TIMINGS, "VIDIOC_S_DV_TIMINGS"},
|
{VIDIOC_G_DV_TIMINGS, "VIDIOC_G_DV_TIMINGS"},
|
{VIDIOC_DQEVENT, "VIDIOC_DQEVENT"},
|
{VIDIOC_SUBSCRIBE_EVENT, "VIDIOC_SUBSCRIBE_EVENT"},
|
{VIDIOC_UNSUBSCRIBE_EVENT, "VIDIOC_UNSUBSCRIBE_EVENT"},
|
{VIDIOC_CREATE_BUFS, "VIDIOC_CREATE_BUFS"},
|
{VIDIOC_PREPARE_BUF, "VIDIOC_PREPARE_BUF"},
|
{VIDIOC_G_SELECTION, "VIDIOC_G_SELECTION"},
|
{VIDIOC_S_SELECTION, "VIDIOC_S_SELECTION"},
|
{VIDIOC_DECODER_CMD, "VIDIOC_DECODER_CMD"},
|
{VIDIOC_TRY_DECODER_CMD, "VIDIOC_TRY_DECODER_CMD"},
|
{VIDIOC_ENUM_DV_TIMINGS, "VIDIOC_ENUM_DV_TIMINGS"},
|
{VIDIOC_QUERY_DV_TIMINGS, "VIDIOC_QUERY_DV_TIMINGS"},
|
{VIDIOC_DV_TIMINGS_CAP, "VIDIOC_DV_TIMINGS_CAP"},
|
{VIDIOC_ENUM_FREQ_BANDS, "VIDIOC_ENUM_FREQ_BANDS"}
|
};
|
|
std::map<int, std::string> hal_pixel_format_map = {
|
{HAL_PIXEL_FORMAT_RGBA_8888, "FORMAT_RGBA_8888"},
|
{HAL_PIXEL_FORMAT_RGBX_8888, "FORMAT_RGBX_8888"},
|
{HAL_PIXEL_FORMAT_RGB_888, "FORMAT_RGB_888"},
|
{HAL_PIXEL_FORMAT_RGB_565, "FORMAT_RGB_565"},
|
{HAL_PIXEL_FORMAT_BGRA_8888, "FORMAT_BGRA_8888"},
|
{HAL_PIXEL_FORMAT_YCBCR_422_SP, "FORMAT_YCBCR_422_SP"},
|
{HAL_PIXEL_FORMAT_YCRCB_420_SP, "FORMAT_YCRCB_420_SP"},
|
{HAL_PIXEL_FORMAT_YCBCR_422_I, "FORMAT_YCBCR_422_I"},
|
{HAL_PIXEL_FORMAT_RGBA_FP16, "FORMAT_RGBA_FP16"},
|
{HAL_PIXEL_FORMAT_RAW16, "FORMAT_RAW16"},
|
{HAL_PIXEL_FORMAT_BLOB, "FORMAT_BLOB"},
|
{HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, "FORMAT_IMPLEMENTATION_DEFINED"},
|
{HAL_PIXEL_FORMAT_YCBCR_420_888, "FORMAT_YCBCR_420_888"},
|
{HAL_PIXEL_FORMAT_RAW_OPAQUE, "FORMAT_RAW_OPAQUE"},
|
{HAL_PIXEL_FORMAT_RAW10, "FORMAT_RAW10"},
|
{HAL_PIXEL_FORMAT_RAW12, "FORMAT_RAW12"},
|
{HAL_PIXEL_FORMAT_RGBA_1010102, "FORMAT_RGBA_1010102"},
|
{HAL_PIXEL_FORMAT_Y8, "FORMAT_Y8"},
|
{HAL_PIXEL_FORMAT_Y16, "FORMAT_Y16"},
|
{HAL_PIXEL_FORMAT_YV12, "FORMAT_YV12"}
|
};
|
|
std::map<int, std::string> v4l2_pixel_format_map = {
|
{V4L2_PIX_FMT_RGB332, "FMT_RGB332"},
|
{V4L2_PIX_FMT_RGB444, "FMT_RGB444"},
|
{V4L2_PIX_FMT_RGB555, "FMT_RGB555"},
|
{V4L2_PIX_FMT_RGB565, "FMT_RGB565"},
|
{V4L2_PIX_FMT_RGB555X, "FMT_RGB555X"},
|
{V4L2_PIX_FMT_RGB565X, "FMT_RGB565X"},
|
{V4L2_PIX_FMT_BGR666, "FMT_BGR666"},
|
{V4L2_PIX_FMT_BGR24, "FMT_BGR24"},
|
{V4L2_PIX_FMT_RGB24, "FMT_RGB24"},
|
{V4L2_PIX_FMT_BGR32, "FMT_BGR32"},
|
{V4L2_PIX_FMT_RGB32, "FMT_RGB32"},
|
{V4L2_PIX_FMT_GREY, "FMT_GREY"},
|
{V4L2_PIX_FMT_Y4, "FMT_Y4"},
|
{V4L2_PIX_FMT_Y6, "FMT_Y6"},
|
{V4L2_PIX_FMT_Y10, "FMT_Y10"},
|
{V4L2_PIX_FMT_Y12, "FMT_Y12"},
|
{V4L2_PIX_FMT_Y16, "FMT_Y16"},
|
{V4L2_PIX_FMT_Y10BPACK, "FMT_Y10BPACK"},
|
{V4L2_PIX_FMT_PAL8, "FMT_PAL8"},
|
{V4L2_PIX_FMT_UV8, "FMT_UV8"},
|
{V4L2_PIX_FMT_YVU410, "FMT_YVU410"},
|
{V4L2_PIX_FMT_YVU420, "FMT_YVU420"},
|
{V4L2_PIX_FMT_YUYV, "FMT_YUYV"},
|
{V4L2_PIX_FMT_YYUV, "FMT_YYUV"},
|
{V4L2_PIX_FMT_YVYU, "FMT_YVYU"},
|
{V4L2_PIX_FMT_UYVY, "FMT_UYVY"},
|
{V4L2_PIX_FMT_VYUY, "FMT_VYUY"},
|
{V4L2_PIX_FMT_YUV422P, "FMT_YUV422P"},
|
{V4L2_PIX_FMT_YUV411P, "FMT_YUV411P"},
|
{V4L2_PIX_FMT_Y41P, "FMT_Y41P"},
|
{V4L2_PIX_FMT_YUV444, "FMT_YUV444"},
|
{V4L2_PIX_FMT_YUV555, "FMT_YUV555"},
|
{V4L2_PIX_FMT_YUV565, "FMT_YUV565"},
|
{V4L2_PIX_FMT_YUV32, "FMT_YUV32"},
|
{V4L2_PIX_FMT_YUV410, "FMT_YUV410"},
|
{V4L2_PIX_FMT_YUV420, "FMT_YUV420"},
|
{V4L2_PIX_FMT_HI240, "FMT_HI240"},
|
{V4L2_PIX_FMT_HM12, "FMT_HM12"},
|
{V4L2_PIX_FMT_M420, "FMT_M420"},
|
{V4L2_PIX_FMT_NV12, "FMT_NV12"},
|
{V4L2_PIX_FMT_NV21, "FMT_NV21"},
|
{V4L2_PIX_FMT_NV16, "FMT_NV16"},
|
{V4L2_PIX_FMT_NV61, "FMT_NV61"},
|
{V4L2_PIX_FMT_NV24, "FMT_NV24"},
|
{V4L2_PIX_FMT_NV42, "FMT_NV42"},
|
{V4L2_PIX_FMT_NV12M, "FMT_NV12M"},
|
{V4L2_PIX_FMT_NV21M, "FMT_NV21M"},
|
{V4L2_PIX_FMT_NV16M, "FMT_NV16M"},
|
{V4L2_PIX_FMT_NV61M, "FMT_NV61M"},
|
{V4L2_PIX_FMT_NV12MT, "FMT_NV12MT"},
|
{V4L2_PIX_FMT_NV12MT_16X16, "FMT_NV12MT_16X16"},
|
{V4L2_PIX_FMT_YUV420M, "FMT_YUV420M"},
|
{V4L2_PIX_FMT_YVU420M, "FMT_YVU420M"},
|
{V4L2_PIX_FMT_SBGGR8, "FMT_SBGGR8"},
|
{V4L2_PIX_FMT_SGBRG8, "FMT_SGBRG8"},
|
{V4L2_PIX_FMT_SGRBG8, "FMT_SGRBG8"},
|
{V4L2_PIX_FMT_SRGGB8, "FMT_SRGGB8"},
|
{V4L2_PIX_FMT_SBGGR10, "FMT_SBGGR10"},
|
{V4L2_PIX_FMT_SGBRG10, "FMT_SGBRG10"},
|
{V4L2_PIX_FMT_SGRBG10, "FMT_SGRBG10"},
|
{V4L2_PIX_FMT_SRGGB10, "FMT_SRGGB10"},
|
{V4L2_PIX_FMT_SBGGR12, "FMT_SBGGR12"},
|
{V4L2_PIX_FMT_SGBRG12, "FMT_SGBRG12"},
|
{V4L2_PIX_FMT_SGRBG12, "FMT_SGRBG12"},
|
{V4L2_PIX_FMT_SRGGB12, "FMT_SRGGB12"},
|
{V4L2_PIX_FMT_SBGGR10ALAW8, "FMT_SBGGR10ALAW8"},
|
{V4L2_PIX_FMT_SGBRG10ALAW8, "FMT_SGBRG10ALAW8"},
|
{V4L2_PIX_FMT_SGRBG10ALAW8, "FMT_SGRBG10ALAW8"},
|
{V4L2_PIX_FMT_SRGGB10ALAW8, "FMT_SRGGB10ALAW8"},
|
{V4L2_PIX_FMT_SBGGR10DPCM8, "FMT_SBGGR10DPCM8"},
|
{V4L2_PIX_FMT_SGBRG10DPCM8, "FMT_SGBRG10DPCM8"},
|
{V4L2_PIX_FMT_SGRBG10DPCM8, "FMT_SGRBG10DPCM8"},
|
{V4L2_PIX_FMT_SRGGB10DPCM8, "FMT_SRGGB10DPCM8"},
|
{V4L2_PIX_FMT_SBGGR16, "FMT_SBGGR16"},
|
{V4L2_PIX_FMT_MJPEG, "FMT_MJPEG"},
|
{V4L2_PIX_FMT_JPEG, "FMT_JPEG"},
|
{V4L2_PIX_FMT_DV, "FMT_DV"},
|
{V4L2_PIX_FMT_MPEG, "FMT_MPEG"},
|
{V4L2_PIX_FMT_H264, "FMT_H264"},
|
{V4L2_PIX_FMT_H264_NO_SC, "FMT_H264_NO_SC"},
|
{V4L2_PIX_FMT_H264_MVC, "FMT_H264_MVC"},
|
{V4L2_PIX_FMT_H263, "FMT_H263"},
|
{V4L2_PIX_FMT_MPEG1, "FMT_MPEG1"},
|
{V4L2_PIX_FMT_MPEG2, "FMT_MPEG2"},
|
{V4L2_PIX_FMT_MPEG4, "FMT_MPEG4"},
|
{V4L2_PIX_FMT_XVID, "FMT_XVID"},
|
{V4L2_PIX_FMT_VC1_ANNEX_G, "FMT_VC1_ANNEX_G"},
|
{V4L2_PIX_FMT_VC1_ANNEX_L, "FMT_VC1_ANNEX_L"},
|
{V4L2_PIX_FMT_VP8, "FMT_VP8"},
|
{V4L2_PIX_FMT_CPIA1, "FMT_CPIA1"},
|
{V4L2_PIX_FMT_WNVA, "FMT_WNVA"},
|
{V4L2_PIX_FMT_SN9C10X, "FMT_SN9C10X"},
|
{V4L2_PIX_FMT_SN9C20X_I420, "FMT_SN9C20X_I420"},
|
{V4L2_PIX_FMT_PWC1, "FMT_PWC1"},
|
{V4L2_PIX_FMT_PWC2, "FMT_PWC2"},
|
{V4L2_PIX_FMT_ET61X251, "FMT_ET61X251"},
|
{V4L2_PIX_FMT_SPCA501, "FMT_SPCA501"},
|
{V4L2_PIX_FMT_SPCA505, "FMT_SPCA505"},
|
{V4L2_PIX_FMT_SPCA508, "FMT_SPCA508"},
|
{V4L2_PIX_FMT_SPCA561, "FMT_SPCA561"},
|
{V4L2_PIX_FMT_PAC207, "FMT_PAC207"},
|
{V4L2_PIX_FMT_MR97310A, "FMT_MR97310A"},
|
{V4L2_PIX_FMT_JL2005BCD, "FMT_JL2005BCD"},
|
{V4L2_PIX_FMT_SN9C2028, "FMT_SN9C2028"},
|
{V4L2_PIX_FMT_SQ905C, "FMT_SQ905C"},
|
{V4L2_PIX_FMT_PJPG, "FMT_PJPG"},
|
{V4L2_PIX_FMT_OV511, "FMT_OV511"},
|
{V4L2_PIX_FMT_OV518, "FMT_OV518"},
|
{V4L2_PIX_FMT_STV0680, "FMT_STV0680"},
|
{V4L2_PIX_FMT_TM6000, "FMT_TM6000"},
|
{V4L2_PIX_FMT_CIT_YYVYUY, "FMT_CIT_YYVYUY"},
|
{V4L2_PIX_FMT_KONICA420, "FMT_KONICA420"},
|
{V4L2_PIX_FMT_JPGL, "FMT_JPGL"},
|
{V4L2_PIX_FMT_SE401, "FMT_SE401"},
|
{V4L2_PIX_FMT_S5C_UYVY_JPG, "FMT_S5C_UYVY_JPG"}
|
};
|
|
std::map<int, std::string> gralloc_usage_map = {
|
{GRALLOC_USAGE_SW_READ_NEVER, "USAGE_SW_READ_NEVER"},
|
{GRALLOC_USAGE_SW_READ_RARELY, "USAGE_SW_READ_RARELY"},
|
{GRALLOC_USAGE_SW_READ_OFTEN, "USAGE_SW_READ_OFTEN"},
|
{GRALLOC_USAGE_SW_READ_MASK, "USAGE_SW_READ_MASK"},
|
{GRALLOC_USAGE_SW_WRITE_NEVER, "USAGE_SW_WRITE_NEVER"},
|
{GRALLOC_USAGE_SW_WRITE_RARELY, "USAGE_SW_WRITE_RARELY"},
|
{GRALLOC_USAGE_SW_WRITE_OFTEN, "USAGE_SW_WRITE_OFTEN"},
|
{GRALLOC_USAGE_SW_WRITE_MASK, "USAGE_SW_WRITE_MASK"},
|
{GRALLOC_USAGE_HW_TEXTURE, "USAGE_HW_TEXTURE"},
|
{GRALLOC_USAGE_HW_RENDER, "USAGE_HW_RENDER"},
|
{GRALLOC_USAGE_HW_2D, "USAGE_HW_2D"},
|
{GRALLOC_USAGE_HW_COMPOSER, "USAGE_HW_COMPOSER"},
|
{GRALLOC_USAGE_HW_FB, "USAGE_HW_FB"},
|
{GRALLOC_USAGE_EXTERNAL_DISP, "USAGE_EXTERNAL_DISP"},
|
{GRALLOC_USAGE_PROTECTED, "USAGE_PROTECTED"},
|
{GRALLOC_USAGE_CURSOR, "USAGE_CURSOR"},
|
{GRALLOC_USAGE_HW_VIDEO_ENCODER, "USAGE_HW_VIDEO_ENCODER"},
|
{GRALLOC_USAGE_HW_CAMERA_WRITE, "USAGE_HW_CAMERA_WRITE"},
|
{GRALLOC_USAGE_HW_CAMERA_READ, "USAGE_HW_CAMERA_READ"},
|
{GRALLOC_USAGE_HW_CAMERA_ZSL, "USAGE_HW_CAMERA_ZSL"},
|
{GRALLOC_USAGE_HW_CAMERA_MASK, "USAGE_HW_CAMERA_MASK"},
|
{GRALLOC_USAGE_HW_MASK, "USAGE_HW_MASK"},
|
{GRALLOC_USAGE_RENDERSCRIPT, "USAGE_RENDERSCRIPT"},
|
{GRALLOC_USAGE_FOREIGN_BUFFERS, "USAGE_FOREIGN_BUFFERS"},
|
{GRALLOC_USAGE_HW_IMAGE_ENCODER, "USAGE_HW_IMAGE_ENCODER"},
|
{GRALLOC_USAGE_ALLOC_MASK, "USAGE_ALLOC_MASK"},
|
{GRALLOC_USAGE_PRIVATE_0, "USAGE_PRIVATE_0"},
|
{GRALLOC_USAGE_PRIVATE_1, "USAGE_PRIVATE_1"},
|
{GRALLOC_USAGE_PRIVATE_2, "USAGE_PRIVATE_2"},
|
{GRALLOC_USAGE_PRIVATE_3, "USAGE_PRIVATE_3"},
|
{GRALLOC_USAGE_PRIVATE_MASK, "USAGE_PRIVATE_MASK"}
|
};
|