summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorJayant Chowdhary <jchowdhary@google.com>2022-07-21 20:41:45 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2022-07-21 20:41:45 +0000
commit138fc75ad49976bd2f66e2ca9ff9da032611fcda (patch)
treed245a09c06533312d01185b9b2e38661aea533d3 /core/java
parent88949ab1fc871f6dced295e4c6edc3db6f163c0c (diff)
parentcff610bf0e7270de1ca220f09c828a08ceb9417e (diff)
Merge "camera2: update original ByteBuffer using bulk get on 'viewed' ByteBuffer for correct position" into tm-d1-dev
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/hardware/camera2/marshal/impl/MarshalQueryableArray.java20
1 files changed, 16 insertions, 4 deletions
diff --git a/core/java/android/hardware/camera2/marshal/impl/MarshalQueryableArray.java b/core/java/android/hardware/camera2/marshal/impl/MarshalQueryableArray.java
index cbd806617a69..598170dfcb25 100644
--- a/core/java/android/hardware/camera2/marshal/impl/MarshalQueryableArray.java
+++ b/core/java/android/hardware/camera2/marshal/impl/MarshalQueryableArray.java
@@ -26,6 +26,10 @@ import static android.hardware.camera2.marshal.MarshalHelpers.getPrimitiveTypeCl
import java.lang.reflect.Array;
import java.nio.ByteBuffer;
+import java.nio.DoubleBuffer;
+import java.nio.FloatBuffer;
+import java.nio.IntBuffer;
+import java.nio.LongBuffer;
import java.util.ArrayList;
/**
@@ -51,28 +55,36 @@ public class MarshalQueryableArray<T> implements MarshalQueryable<T> {
return new PrimitiveArrayFiller() {
@Override
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) {
return new PrimitiveArrayFiller() {
@Override
public void fillArray(Object arr, int size, ByteBuffer buffer) {
- buffer.asFloatBuffer().get(float[].class.cast(arr), 0, size);
+ FloatBuffer fb =
+ buffer.asFloatBuffer().get(float[].class.cast(arr), 0, size);
+ buffer.position(buffer.position() + fb.position() * Float.BYTES);
}
};
} else if (componentType == long.class) {
return new PrimitiveArrayFiller() {
@Override
public void fillArray(Object arr, int size, ByteBuffer buffer) {
- buffer.asLongBuffer().get(long[].class.cast(arr), 0, size);
+ LongBuffer lb =
+ buffer.asLongBuffer().get(long[].class.cast(arr), 0, size);
+ buffer.position(buffer.position() + lb.position() * Long.BYTES);
}
};
} else if (componentType == double.class) {
return new PrimitiveArrayFiller() {
@Override
public void fillArray(Object arr, int size, ByteBuffer buffer) {
- buffer.asDoubleBuffer().get(double[].class.cast(arr), 0, size);
+ DoubleBuffer db =
+ buffer.asDoubleBuffer().get(double[].class.cast(arr), 0, size);
+ buffer.position(buffer.position() + db.position() * Double.BYTES);
}
};
} else if (componentType == byte.class) {