diff options
| author | Jayant Chowdhary <jchowdhary@google.com> | 2022-07-21 20:41:45 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2022-07-21 20:41:45 +0000 |
| commit | 138fc75ad49976bd2f66e2ca9ff9da032611fcda (patch) | |
| tree | d245a09c06533312d01185b9b2e38661aea533d3 /core/java | |
| parent | 88949ab1fc871f6dced295e4c6edc3db6f163c0c (diff) | |
| parent | cff610bf0e7270de1ca220f09c828a08ceb9417e (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.java | 20 |
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) { |
