diff options
Diffstat (limited to 'gallerycommon/src/com/android/gallery3d/exif/ExifOutputStream.java')
-rw-r--r-- | gallerycommon/src/com/android/gallery3d/exif/ExifOutputStream.java | 11 |
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); } /** |