EmulatedFakeCamera2: Use HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED

Stop using CAMERA2_HAL_PIXEL_FORMAT_OPAQUE.

Bug: 6243944
Change-Id: I96ea30228b126b4eed560a760269cb50bbbb62f7
This commit is contained in:
Eino-Ville Talvala
2012-08-28 14:39:59 -07:00
parent eb502a31bc
commit 33c3f77760
3 changed files with 10 additions and 23 deletions

View File

@@ -24,18 +24,6 @@
#define BUFFER_HANDLE_MAGIC ((int)0xabfabfab) #define BUFFER_HANDLE_MAGIC ((int)0xabfabfab)
#define CB_HANDLE_NUM_INTS(nfds) (int)((sizeof(cb_handle_t) - (nfds)*sizeof(int)) / sizeof(int)) #define CB_HANDLE_NUM_INTS(nfds) (int)((sizeof(cb_handle_t) - (nfds)*sizeof(int)) / sizeof(int))
//
// Emulator-specific gralloc formats
//
enum {
// Request that gralloc select the proper format given the usage
// flags. Pass this as the format to gralloc_alloc, and then the concrete
// format can be found in cb_handle_t.format. It is invalid for
// cb_handle_t.format to be AUTO; it must be a concrete format in either the
// standard HAL_PIXEL_FORMAT enum or other values in this enum.
GRALLOC_EMULATOR_PIXEL_FORMAT_AUTO = 0x100
};
// //
// Our buffer handle structure // Our buffer handle structure
// //

View File

@@ -156,7 +156,7 @@ static int gralloc_alloc(alloc_device_t* dev,
// Pick the right concrete pixel format given the endpoints as encoded in // Pick the right concrete pixel format given the endpoints as encoded in
// the usage bits. Every end-point pair needs explicit listing here. // the usage bits. Every end-point pair needs explicit listing here.
if (format == GRALLOC_EMULATOR_PIXEL_FORMAT_AUTO) { if (format == HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED) {
// Camera as producer // Camera as producer
if (usage & GRALLOC_USAGE_HW_CAMERA_WRITE) { if (usage & GRALLOC_USAGE_HW_CAMERA_WRITE) {
if (usage & GRALLOC_USAGE_HW_TEXTURE) { if (usage & GRALLOC_USAGE_HW_TEXTURE) {
@@ -165,10 +165,13 @@ static int gralloc_alloc(alloc_device_t* dev,
} else if (usage & GRALLOC_USAGE_HW_VIDEO_ENCODER) { } else if (usage & GRALLOC_USAGE_HW_VIDEO_ENCODER) {
// Camera-to-encoder is NV21 // Camera-to-encoder is NV21
format = HAL_PIXEL_FORMAT_YCrCb_420_SP; format = HAL_PIXEL_FORMAT_YCrCb_420_SP;
} else if (usage & GRALLOC_USAGE_HW_CAMERA_ZSL) {
// Camera-to-ZSL-queue is RGB_888
format = HAL_PIXEL_FORMAT_RGB_888;
} }
} }
if (format == GRALLOC_EMULATOR_PIXEL_FORMAT_AUTO) { if (format == HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED) {
ALOGE("gralloc_alloc: Requested auto format selection, " ALOGE("gralloc_alloc: Requested auto format selection, "
"but no known format for this usage: %d x %d, usage %x", "but no known format for this usage: %d x %d, usage %x",
w, h, usage); w, h, usage);

View File

@@ -259,7 +259,7 @@ int EmulatedFakeCamera2::allocateStream(
uint32_t *max_buffers) { uint32_t *max_buffers) {
Mutex::Autolock l(mMutex); Mutex::Autolock l(mMutex);
if (format != CAMERA2_HAL_PIXEL_FORMAT_OPAQUE) { if (format != HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED) {
unsigned int numFormats = sizeof(kAvailableFormats) / sizeof(uint32_t); unsigned int numFormats = sizeof(kAvailableFormats) / sizeof(uint32_t);
unsigned int formatIdx = 0; unsigned int formatIdx = 0;
unsigned int sizeOffsetIdx = 0; unsigned int sizeOffsetIdx = 0;
@@ -270,10 +270,6 @@ int EmulatedFakeCamera2::allocateStream(
ALOGE("%s: Format 0x%x is not supported", __FUNCTION__, format); ALOGE("%s: Format 0x%x is not supported", __FUNCTION__, format);
return BAD_VALUE; return BAD_VALUE;
} }
} else {
// Translate to emulator's magic format.
// Note: It is assumed that this is a processed format (not raw or JPEG).
format = GRALLOC_EMULATOR_PIXEL_FORMAT_AUTO;
} }
const uint32_t *availableSizes; const uint32_t *availableSizes;
@@ -290,7 +286,7 @@ int EmulatedFakeCamera2::allocateStream(
sizeof(kAvailableJpegSizesBack)/sizeof(uint32_t) : sizeof(kAvailableJpegSizesBack)/sizeof(uint32_t) :
sizeof(kAvailableJpegSizesFront)/sizeof(uint32_t); sizeof(kAvailableJpegSizesFront)/sizeof(uint32_t);
break; break;
case GRALLOC_EMULATOR_PIXEL_FORMAT_AUTO: case HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED:
case HAL_PIXEL_FORMAT_RGBA_8888: case HAL_PIXEL_FORMAT_RGBA_8888:
case HAL_PIXEL_FORMAT_YV12: case HAL_PIXEL_FORMAT_YV12:
case HAL_PIXEL_FORMAT_YCrCb_420_SP: case HAL_PIXEL_FORMAT_YCrCb_420_SP:
@@ -384,9 +380,9 @@ int EmulatedFakeCamera2::registerStreamBuffers(
int finalFormat = streamBuffer->format; int finalFormat = streamBuffer->format;
if (finalFormat == GRALLOC_EMULATOR_PIXEL_FORMAT_AUTO) { if (finalFormat == HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED) {
ALOGE("%s: Stream %d: Bad final pixel format " ALOGE("%s: Stream %d: Bad final pixel format "
"GRALLOC_EMULATOR_PIXEL_FORMAT_AUTO; " "HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED; "
"concrete pixel format required!", __FUNCTION__, stream_id); "concrete pixel format required!", __FUNCTION__, stream_id);
return BAD_VALUE; return BAD_VALUE;
} }
@@ -669,7 +665,7 @@ bool EmulatedFakeCamera2::ConfigureThread::threadLoop() {
for (size_t i = 0; i < streams.count; i++) { for (size_t i = 0; i < streams.count; i++) {
int streamId = streams.data.u8[i]; int streamId = streams.data.u8[i];
const Stream &s = mParent->getStreamInfo(streamId); const Stream &s = mParent->getStreamInfo(streamId);
if (s.format == GRALLOC_EMULATOR_PIXEL_FORMAT_AUTO) { if (s.format == HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED) {
ALOGE("%s: Stream %d does not have a concrete pixel format, but " ALOGE("%s: Stream %d does not have a concrete pixel format, but "
"is included in a request!", __FUNCTION__, streamId); "is included in a request!", __FUNCTION__, streamId);
mParent->signalError(); mParent->signalError();