summaryrefslogtreecommitdiff
path: root/media/jni/android_media_ImageReader.cpp
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2019-01-25 15:20:24 -0800
committerJohn Reck <jreck@google.com>2019-01-25 16:03:58 -0800
commit4d312b212c0c7fa7978c788e2a8f5b6b51621c9c (patch)
tree27acb3de33d921429429a898830299b424cf924c /media/jni/android_media_ImageReader.cpp
parent3f7e640844e7672d18dd17ad1c387fd267984eac (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.cpp21
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) {