am 8c52d9a0: Merge "Camera2: Fix early EOF in DngCreator#writeByteBuffer." into lmp-mr1-dev
* commit '8c52d9a092452837e7222d8416c3b4accf9a99d7': Camera2: Fix early EOF in DngCreator#writeByteBuffer.
This commit is contained in:
@@ -35,6 +35,7 @@
|
||||
#include <cutils/properties.h>
|
||||
|
||||
#include <string.h>
|
||||
#include <inttypes.h>
|
||||
|
||||
#include "android_runtime/AndroidRuntime.h"
|
||||
#include "android_runtime/android_hardware_camera2_CameraMetadata.h"
|
||||
@@ -360,15 +361,18 @@ ssize_t JniInputByteBuffer::read(uint8_t* buf, size_t offset, size_t count) {
|
||||
realCount = count;
|
||||
}
|
||||
|
||||
mEnv->CallObjectMethod(mInBuf, gInputByteBufferClassInfo.mGetMethod, mByteArray, 0,
|
||||
jobject chainingBuf = mEnv->CallObjectMethod(mInBuf, gInputByteBufferClassInfo.mGetMethod, mByteArray, 0,
|
||||
realCount);
|
||||
mEnv->DeleteLocalRef(chainingBuf);
|
||||
|
||||
if (mEnv->ExceptionCheck()) {
|
||||
ALOGE("%s: Exception while reading from input into byte buffer.", __FUNCTION__);
|
||||
return BAD_VALUE;
|
||||
}
|
||||
|
||||
mEnv->GetByteArrayRegion(mByteArray, 0, realCount, reinterpret_cast<jbyte*>(buf + offset));
|
||||
if (mEnv->ExceptionCheck()) {
|
||||
ALOGE("%s: Exception while reading from byte buffer.", __FUNCTION__);
|
||||
return BAD_VALUE;
|
||||
}
|
||||
return realCount;
|
||||
@@ -469,15 +473,17 @@ status_t InputStripSource::writeToStream(Output& stream, uint32_t count) {
|
||||
|
||||
for (uint32_t i = 0; i < mHeight; ++i) {
|
||||
size_t rowFillAmt = 0;
|
||||
size_t rowSize = mPixStride;
|
||||
size_t rowSize = mRowStride;
|
||||
|
||||
while (rowFillAmt < mRowStride) {
|
||||
ssize_t bytesRead = mInput->read(rowBytes, rowFillAmt, rowSize);
|
||||
if (bytesRead <= 0) {
|
||||
if (bytesRead == NOT_ENOUGH_DATA || bytesRead == 0) {
|
||||
ALOGE("%s: Early EOF on row %" PRIu32 ", received bytesRead %zd",
|
||||
__FUNCTION__, i, bytesRead);
|
||||
jniThrowExceptionFmt(mEnv, "java/io/IOException",
|
||||
"Early EOF encountered, not enough pixel data for image of size %u",
|
||||
fullSize);
|
||||
"Early EOF encountered, not enough pixel data for image of size %"
|
||||
PRIu32, fullSize);
|
||||
bytesRead = NOT_ENOUGH_DATA;
|
||||
} else {
|
||||
if (!mEnv->ExceptionCheck()) {
|
||||
|
||||
Reference in New Issue
Block a user