summaryrefslogtreecommitdiffstats
path: root/gallerycommon/src/com/android/gallery3d/exif/ExifOutputStream.java
diff options
context:
space:
mode:
Diffstat (limited to 'gallerycommon/src/com/android/gallery3d/exif/ExifOutputStream.java')
-rw-r--r--gallerycommon/src/com/android/gallery3d/exif/ExifOutputStream.java11
1 files changed, 6 insertions, 5 deletions
diff --git a/gallerycommon/src/com/android/gallery3d/exif/ExifOutputStream.java b/gallerycommon/src/com/android/gallery3d/exif/ExifOutputStream.java
index e5a5bf009..ae501a50f 100644
--- a/gallerycommon/src/com/android/gallery3d/exif/ExifOutputStream.java
+++ b/gallerycommon/src/com/android/gallery3d/exif/ExifOutputStream.java
@@ -18,6 +18,7 @@ package com.android.gallery3d.exif;
import android.util.Log;
+import java.io.BufferedOutputStream;
import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.OutputStream;
@@ -58,6 +59,7 @@ import java.nio.ByteOrder;
class ExifOutputStream extends FilterOutputStream {
private static final String TAG = "ExifOutputStream";
private static final boolean DEBUG = false;
+ private static final int STREAMBUFFER_SIZE = 0x00010000; // 64Kb
private static final int STATE_SOI = 0;
private static final int STATE_FRAME_HEADER = 1;
@@ -75,11 +77,12 @@ class ExifOutputStream extends FilterOutputStream {
private int mState = STATE_SOI;
private int mByteToSkip;
private int mByteToCopy;
+ private byte[] mSingleByteArray = new byte[1];
private ByteBuffer mBuffer = ByteBuffer.allocate(4);
private final ExifInterface mInterface;
protected ExifOutputStream(OutputStream ou, ExifInterface iRef) {
- super(ou);
+ super(new BufferedOutputStream(ou, STREAMBUFFER_SIZE));
mInterface = iRef;
}
@@ -190,10 +193,8 @@ class ExifOutputStream extends FilterOutputStream {
*/
@Override
public void write(int oneByte) throws IOException {
- byte[] buf = new byte[] {
- (byte) (0xff & oneByte)
- };
- write(buf);
+ mSingleByteArray[0] = (byte) (0xff & oneByte);
+ write(mSingleByteArray);
}
/**