summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorZhijun He <zhijunhe@google.com>2014-07-25 09:06:11 -0700
committerZhijun He <zhijunhe@google.com>2014-07-28 18:42:10 +0000
commit4c4064fa66f551f49b7e1017b1ebe65a05f9df21 (patch)
tree186dcb938887a03315257f6cfdeb99873a5f0f77 /media
parent39c12fab49075b715c253c68c84b5c10c3150197 (diff)
downloadframeworks_base-4c4064fa66f551f49b7e1017b1ebe65a05f9df21.zip
frameworks_base-4c4064fa66f551f49b7e1017b1ebe65a05f9df21.tar.gz
frameworks_base-4c4064fa66f551f49b7e1017b1ebe65a05f9df21.tar.bz2
ImageFormat: update raw10 spec to allow row padding
Change-Id: Id191b92037487f16538d111fc6171d3be9a02acf
Diffstat (limited to 'media')
-rw-r--r--media/jni/android_media_ImageReader.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/media/jni/android_media_ImageReader.cpp b/media/jni/android_media_ImageReader.cpp
index 35317e1..fa4439d 100644
--- a/media/jni/android_media_ImageReader.cpp
+++ b/media/jni/android_media_ImageReader.cpp
@@ -420,8 +420,11 @@ static void Image_getLockedBufferInfo(JNIEnv* env, CpuConsumer::LockedBuffer* bu
"Width is not multiple of 4 %d", buffer->width);
LOG_ALWAYS_FATAL_IF(buffer->height % 2,
"Height is not even %d", buffer->height);
+ LOG_ALWAYS_FATAL_IF(buffer->stride < (buffer->width * 10 / 8),
+ "stride (%d) should be at least %d",
+ buffer->stride, buffer->width * 10 / 8);
pData = buffer->data;
- dataSize = buffer->width * buffer->height * 10 / 8;
+ dataSize = buffer->stride * buffer->height;
break;
case HAL_PIXEL_FORMAT_RGBA_8888:
case HAL_PIXEL_FORMAT_RGBX_8888:
@@ -535,12 +538,15 @@ static jint Image_imageGetRowStride(JNIEnv* env, CpuConsumer::LockedBuffer* buff
rowStride = (idx == 0) ? buffer->stride : ALIGN(buffer->stride / 2, 16);
break;
case HAL_PIXEL_FORMAT_BLOB:
- case HAL_PIXEL_FORMAT_RAW10:
// Blob is used for JPEG data, RAW10 is used for 10-bit raw data, they are
// single plane, row and pixel strides are 0.
ALOG_ASSERT(idx == 0, "Wrong index: %d", idx);
rowStride = 0;
break;
+ case HAL_PIXEL_FORMAT_RAW10:
+ ALOG_ASSERT(idx == 0, "Wrong index: %d", idx);
+ rowStride = buffer->stride;
+ break;
case HAL_PIXEL_FORMAT_Y8:
ALOG_ASSERT(idx == 0, "Wrong index: %d", idx);
LOG_ALWAYS_FATAL_IF(buffer->stride % 16,