Mega Code Archive

 
Categories / Android / File
 

An utility class for java nio Buffers

import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.CharBuffer; import java.nio.FloatBuffer; import java.nio.IntBuffer; /**  * An utility class for java.nio.Buffers.  * @author Åke Svedin <ake.svedin@gmail.com>  * @version $Revision: 24 $  * @lastmodified $Date: 2009-08-17 08:32:24 -0700 (Mon, 17 Aug 2009) $  */ public abstract class BufferUtils {      /**    * @param size number of bytes the buffer should hold    * @return the newly allocated byte buffer    */   public static ByteBuffer createByteBuffer(int size) {     ByteBuffer bb = ByteBuffer.allocateDirect(size);     bb.order(ByteOrder.nativeOrder());     return bb;   }      /**    * @param size number of chars the buffer should hold    * @return the newly allocated char buffer    */   public static CharBuffer createCharBuffer(int size) {     ByteBuffer bb = ByteBuffer.allocateDirect(2*size);     bb.order(ByteOrder.nativeOrder());     return bb.asCharBuffer();   }      /**    * @param size number of floats the buffer should hold    * @return the newly allocated float buffer    */   public static FloatBuffer createFloatBuffer(int size) {     ByteBuffer bb = ByteBuffer.allocateDirect(4*size);     bb.order(ByteOrder.nativeOrder());     return bb.asFloatBuffer();   }      /**    * @param size number of integers the buffer should hold    * @return the newly allocated integer buffer    */   private static IntBuffer createIntBuffer(int size) {     ByteBuffer bb = ByteBuffer.allocateDirect(4*size);     bb.order(ByteOrder.nativeOrder());     return bb.asIntBuffer();   }   /**    * Converts a float buffer to a fixed point int buffer    * @param floatBuffer a FloatBuffer    * @return an IntBuffer containing fixed points    */   public static IntBuffer toFixedBuffer(FloatBuffer floatBuffer) {     int len = floatBuffer.capacity();     IntBuffer fixedBuffer = createIntBuffer(len);     floatBuffer.clear();     fixedBuffer.clear();     for(int i = 0; i < len; i++) {       fixedBuffer.put((int)(floatBuffer.get(i)*65536));     }     fixedBuffer.clear();     return null;   }    }