1c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou/* 2c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou * Copyright (C) 2012 The Android Open Source Project 3c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou * 4c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou * Licensed under the Apache License, Version 2.0 (the "License"); 5c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou * you may not use this file except in compliance with the License. 6c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou * You may obtain a copy of the License at 7c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou * 8c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou * http://www.apache.org/licenses/LICENSE-2.0 9c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou * 10c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou * Unless required by applicable law or agreed to in writing, software 11c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou * distributed under the License is distributed on an "AS IS" BASIS, 12c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou * See the License for the specific language governing permissions and 14c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou * limitations under the License. 15c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou */ 16c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou 17a16e7b50f3148f581439509279f242092e254309ztenghuipackage com.android.camera.exif; 18c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou 19c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ouimport java.io.InputStream; 20c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ouimport java.nio.ByteBuffer; 21c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou 22c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ouclass ByteBufferInputStream extends InputStream { 23c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou 24c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou private ByteBuffer mBuf; 25c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou 26c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou public ByteBufferInputStream(ByteBuffer buf) { 27c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou mBuf = buf; 28c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou } 29c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou 30c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou @Override 31c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou public int read() { 32c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou if (!mBuf.hasRemaining()) { 33c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou return -1; 34c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou } 35c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou return mBuf.get() & 0xFF; 36c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou } 37c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou 38c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou @Override 39c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou public int read(byte[] bytes, int off, int len) { 40c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou if (!mBuf.hasRemaining()) { 41c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou return -1; 42c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou } 43c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou 44c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou len = Math.min(len, mBuf.remaining()); 45c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou mBuf.get(bytes, off, len); 46c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou return len; 47c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou } 48c06c8045b159d68f8fda051d59a0eb82215067eeEarl Ou} 49