summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/exif/ExifOutputStream.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/camera/exif/ExifOutputStream.java')
-rw-r--r--src/com/android/camera/exif/ExifOutputStream.java13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/com/android/camera/exif/ExifOutputStream.java b/src/com/android/camera/exif/ExifOutputStream.java
index 191e8280c..90d432769 100644
--- a/src/com/android/camera/exif/ExifOutputStream.java
+++ b/src/com/android/camera/exif/ExifOutputStream.java
@@ -82,6 +82,8 @@ class ExifOutputStream extends FilterOutputStream {
private ByteBuffer mBuffer = ByteBuffer.allocate(4);
private final ExifInterface mInterface;
+ private int mSize = 0;
+
protected ExifOutputStream(OutputStream ou, ExifInterface iRef) {
super(new BufferedOutputStream(ou, STREAMBUFFER_SIZE));
mInterface = iRef;
@@ -127,6 +129,7 @@ class ExifOutputStream extends FilterOutputStream {
if (mByteToCopy > 0) {
int byteToProcess = length > mByteToCopy ? mByteToCopy : length;
out.write(buffer, offset, byteToProcess);
+ mSize += byteToProcess;
length -= byteToProcess;
mByteToCopy -= byteToProcess;
offset += byteToProcess;
@@ -147,6 +150,7 @@ class ExifOutputStream extends FilterOutputStream {
throw new IOException("Not a valid jpeg image, cannot write exif");
}
out.write(mBuffer.array(), 0, 2);
+ mSize += 2;
mState = STATE_FRAME_HEADER;
mBuffer.rewind();
writeExifData();
@@ -162,6 +166,7 @@ class ExifOutputStream extends FilterOutputStream {
short tag = mBuffer.getShort();
if (tag == JpegHeader.EOI) {
out.write(mBuffer.array(), 0, 2);
+ mSize += 2;
mBuffer.rewind();
}
}
@@ -175,9 +180,11 @@ class ExifOutputStream extends FilterOutputStream {
mState = STATE_JPEG_DATA;
} else if (!JpegHeader.isSofMarker(marker)) {
out.write(mBuffer.array(), 0, 4);
+ mSize += 4;
mByteToCopy = (mBuffer.getShort() & 0x0000ffff) - 2;
} else {
out.write(mBuffer.array(), 0, 4);
+ mSize += 4;
mState = STATE_JPEG_DATA;
}
mBuffer.rewind();
@@ -185,6 +192,7 @@ class ExifOutputStream extends FilterOutputStream {
}
if (length > 0) {
out.write(buffer, offset, length);
+ mSize += length;
}
}
@@ -238,6 +246,7 @@ class ExifOutputStream extends FilterOutputStream {
for (ExifTag t : nullTags) {
mExifData.addTag(t);
}
+ mSize += dataOutputStream.size();
}
private ArrayList<ExifTag> stripNullValueTags(ExifData data) {
@@ -515,4 +524,8 @@ class ExifOutputStream extends FilterOutputStream {
break;
}
}
+
+ int size() {
+ return mSize;
+ }
}