Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 138fc75a authored by Jayant Chowdhary's avatar Jayant Chowdhary Committed by Android (Google) Code Review
Browse files

Merge "camera2: update original ByteBuffer using bulk get on 'viewed'...

Merge "camera2: update original ByteBuffer using bulk get on 'viewed' ByteBuffer for correct position" into tm-d1-dev
parents 88949ab1 cff610bf
Loading
Loading
Loading
Loading
+16 −4
Original line number Original line Diff line number Diff line
@@ -26,6 +26,10 @@ import static android.hardware.camera2.marshal.MarshalHelpers.getPrimitiveTypeCl


import java.lang.reflect.Array;
import java.lang.reflect.Array;
import java.nio.ByteBuffer;
import java.nio.ByteBuffer;
import java.nio.DoubleBuffer;
import java.nio.FloatBuffer;
import java.nio.IntBuffer;
import java.nio.LongBuffer;
import java.util.ArrayList;
import java.util.ArrayList;


/**
/**
@@ -51,28 +55,36 @@ public class MarshalQueryableArray<T> implements MarshalQueryable<T> {
                return new PrimitiveArrayFiller() {
                return new PrimitiveArrayFiller() {
                      @Override
                      @Override
                      public void fillArray(Object arr, int size, ByteBuffer buffer) {
                      public void fillArray(Object arr, int size, ByteBuffer buffer) {
                          buffer.asIntBuffer().get(int[].class.cast(arr), 0, size);
                          IntBuffer ib = buffer.asIntBuffer().get(int[].class.cast(arr), 0, size);
                          // Update buffer position since the IntBuffer has independent position.
                          buffer.position(buffer.position() + ib.position() * Integer.BYTES);
                      }
                      }
                };
                };
            } else if (componentType == float.class) {
            } else if (componentType == float.class) {
                return new PrimitiveArrayFiller() {
                return new PrimitiveArrayFiller() {
                      @Override
                      @Override
                      public void fillArray(Object arr, int size, ByteBuffer buffer) {
                      public void fillArray(Object arr, int size, ByteBuffer buffer) {
                          FloatBuffer fb =
                                  buffer.asFloatBuffer().get(float[].class.cast(arr), 0, size);
                                  buffer.asFloatBuffer().get(float[].class.cast(arr), 0, size);
                          buffer.position(buffer.position() + fb.position() * Float.BYTES);
                      }
                      }
                };
                };
            } else if (componentType == long.class) {
            } else if (componentType == long.class) {
                return new PrimitiveArrayFiller() {
                return new PrimitiveArrayFiller() {
                      @Override
                      @Override
                      public void fillArray(Object arr, int size, ByteBuffer buffer) {
                      public void fillArray(Object arr, int size, ByteBuffer buffer) {
                          LongBuffer lb =
                                  buffer.asLongBuffer().get(long[].class.cast(arr), 0, size);
                                  buffer.asLongBuffer().get(long[].class.cast(arr), 0, size);
                          buffer.position(buffer.position() + lb.position() * Long.BYTES);
                      }
                      }
                };
                };
            } else if (componentType == double.class) {
            } else if (componentType == double.class) {
                return new PrimitiveArrayFiller() {
                return new PrimitiveArrayFiller() {
                      @Override
                      @Override
                      public void fillArray(Object arr, int size, ByteBuffer buffer) {
                      public void fillArray(Object arr, int size, ByteBuffer buffer) {
                          DoubleBuffer db =
                                  buffer.asDoubleBuffer().get(double[].class.cast(arr), 0, size);
                                  buffer.asDoubleBuffer().get(double[].class.cast(arr), 0, size);
                          buffer.position(buffer.position() + db.position() * Double.BYTES);
                      }
                      }
                };
                };
            } else if (componentType == byte.class) {
            } else if (componentType == byte.class) {