diff options
author | John Reck <jreck@google.com> | 2019-01-25 15:20:24 -0800 |
---|---|---|
committer | John Reck <jreck@google.com> | 2019-01-25 16:03:58 -0800 |
commit | 4d312b212c0c7fa7978c788e2a8f5b6b51621c9c (patch) | |
tree | 27acb3de33d921429429a898830299b424cf924c /media/jni/android_media_ImageReader.cpp | |
parent | 3f7e640844e7672d18dd17ad1c387fd267984eac (diff) |
Fix ImageReader#newInstace with usage
Need to actually respect the given usage or the API doesn't
work. Shift the default to be done Java-side where it's clear
if usage was user-provided or not. Remove the incorrect
validations and assertions around usages.
Add missing HardwareBuffer#isSupported to let users
check if a usage & format combination is supported.
Change-Id: I70bfe6e6c41e78425a38af6b17d421f0e80e818b
Fixes: 123423319
Test: HardwareBuffer CTS tests
Diffstat (limited to 'media/jni/android_media_ImageReader.cpp')
-rw-r--r-- | media/jni/android_media_ImageReader.cpp | 21 |
1 files changed, 3 insertions, 18 deletions
diff --git a/media/jni/android_media_ImageReader.cpp b/media/jni/android_media_ImageReader.cpp index a45aa90f5f19..88671ecd27fc 100644 --- a/media/jni/android_media_ImageReader.cpp +++ b/media/jni/android_media_ImageReader.cpp @@ -379,24 +379,9 @@ static void ImageReader_init(JNIEnv* env, jobject thiz, jobject weakThiz, jint w String8 consumerName = String8::format("ImageReader-%dx%df%xm%d-%d-%d", width, height, format, maxImages, getpid(), createProcessUniqueId()); - uint32_t consumerUsage = GRALLOC_USAGE_SW_READ_OFTEN; - bool needUsageOverride = ndkUsage != CONSUMER_BUFFER_USAGE_UNKNOWN; - uint64_t outProducerUsage = 0; - uint64_t outConsumerUsage = 0; - android_hardware_HardwareBuffer_convertToGrallocUsageBits(&outProducerUsage, &outConsumerUsage, - ndkUsage, 0); - - if (isFormatOpaque(nativeFormat)) { - // Use the SW_READ_NEVER usage to tell producer that this format is not for preview or video - // encoding. The only possibility will be ZSL output. - consumerUsage = GRALLOC_USAGE_SW_READ_NEVER; - if (needUsageOverride) { - consumerUsage = android_convertGralloc1To0Usage(0, outConsumerUsage); - } - } else if (needUsageOverride) { - ALOGW("Consumer usage override for non-opaque format is not implemented yet, " - "ignore the provided usage from the application"); - } + uint64_t consumerUsage = + android_hardware_HardwareBuffer_convertToGrallocUsageBits(ndkUsage); + bufferConsumer = new BufferItemConsumer(gbConsumer, consumerUsage, maxImages, /*controlledByApp*/true); if (bufferConsumer == nullptr) { |