Camera2: Fix early EOF in DngCreator#writeByteBuffer.

Bug: 18962278
Change-Id: I8641a03d866930c86bdd2db0a29ccd5560712c90
diff --git a/core/jni/android_hardware_camera2_DngCreator.cpp b/core/jni/android_hardware_camera2_DngCreator.cpp
index 533313a..7361858 100644
--- a/core/jni/android_hardware_camera2_DngCreator.cpp
+++ b/core/jni/android_hardware_camera2_DngCreator.cpp
@@ -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 @@
         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 @@
 
     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()) {