Loading core/api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -16888,6 +16888,7 @@ package android.hardware { method public int describeContents(); method public int getFormat(); method public int getHeight(); method public long getId(); method public int getLayers(); method public long getUsage(); method public int getWidth(); core/java/android/hardware/HardwareBuffer.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -16,4 +16,4 @@ package android.hardware; parcelable HardwareBuffer; @JavaOnlyStableParcelable @NdkOnlyStableParcelable parcelable HardwareBuffer ndk_header "android/hardware_buffer_aidl.h"; core/java/android/hardware/HardwareBuffer.java +22 −55 Original line number Diff line number Diff line Loading @@ -188,9 +188,6 @@ public final class HardwareBuffer implements Parcelable, AutoCloseable { public static HardwareBuffer create( @IntRange(from = 1) int width, @IntRange(from = 1) int height, @Format int format, @IntRange(from = 1) int layers, @Usage long usage) { if (!HardwareBuffer.isSupportedFormat(format)) { throw new IllegalArgumentException("Invalid pixel format " + format); } if (width <= 0) { throw new IllegalArgumentException("Invalid width " + width); } Loading Loading @@ -226,9 +223,6 @@ public final class HardwareBuffer implements Parcelable, AutoCloseable { */ public static boolean isSupported(@IntRange(from = 1) int width, @IntRange(from = 1) int height, @Format int format, @IntRange(from = 1) int layers, @Usage long usage) { if (!HardwareBuffer.isSupportedFormat(format)) { throw new IllegalArgumentException("Invalid pixel format " + format); } if (width <= 0) { throw new IllegalArgumentException("Invalid width " + width); } Loading Loading @@ -286,10 +280,7 @@ public final class HardwareBuffer implements Parcelable, AutoCloseable { * Returns the width of this buffer in pixels. */ public int getWidth() { if (isClosed()) { throw new IllegalStateException("This HardwareBuffer has been closed and its width " + "cannot be obtained."); } checkClosed("width"); return nGetWidth(mNativeObject); } Loading @@ -297,10 +288,7 @@ public final class HardwareBuffer implements Parcelable, AutoCloseable { * Returns the height of this buffer in pixels. */ public int getHeight() { if (isClosed()) { throw new IllegalStateException("This HardwareBuffer has been closed and its height " + "cannot be obtained."); } checkClosed("height"); return nGetHeight(mNativeObject); } Loading @@ -309,10 +297,7 @@ public final class HardwareBuffer implements Parcelable, AutoCloseable { */ @Format public int getFormat() { if (isClosed()) { throw new IllegalStateException("This HardwareBuffer has been closed and its format " + "cannot be obtained."); } checkClosed("format"); return nGetFormat(mNativeObject); } Loading @@ -320,10 +305,7 @@ public final class HardwareBuffer implements Parcelable, AutoCloseable { * Returns the number of layers in this buffer. */ public int getLayers() { if (isClosed()) { throw new IllegalStateException("This HardwareBuffer has been closed and its layer " + "count cannot be obtained."); } checkClosed("layer count"); return nGetLayers(mNativeObject); } Loading @@ -331,11 +313,24 @@ public final class HardwareBuffer implements Parcelable, AutoCloseable { * Returns the usage flags of the usage hints set on this buffer. */ public long getUsage() { checkClosed("usage"); return nGetUsage(mNativeObject); } /** * Returns the system-wide unique id for this buffer * */ public long getId() { checkClosed("id"); return nGetId(mNativeObject); } private void checkClosed(String name) { if (isClosed()) { throw new IllegalStateException("This HardwareBuffer has been closed and its usage " + "cannot be obtained."); throw new IllegalStateException("This HardwareBuffer has been closed and its " + name + " cannot be obtained."); } return nGetUsage(mNativeObject); } /** Loading Loading @@ -407,36 +402,6 @@ public final class HardwareBuffer implements Parcelable, AutoCloseable { } }; /** * Validates whether a particular format is supported by HardwareBuffer. * * @param format The format to validate. * * @return True if <code>format</code> is a supported format. false otherwise. * See {@link #create(int, int, int, int, long)}. */ private static boolean isSupportedFormat(@Format int format) { switch(format) { case RGBA_8888: case RGBA_FP16: case RGBA_1010102: case RGBX_8888: case RGB_565: case RGB_888: case BLOB: case YCBCR_420_888: case D_16: case D_24: case DS_24UI8: case D_FP32: case DS_FP32UI8: case S_UI8: case YCBCR_P010: return true; } return false; } private static native long nCreateHardwareBuffer(int width, int height, int format, int layers, long usage); private static native long nCreateFromGraphicBuffer(GraphicBuffer graphicBuffer); Loading @@ -457,4 +422,6 @@ public final class HardwareBuffer implements Parcelable, AutoCloseable { long usage); @CriticalNative private static native long nEstimateSize(long nativeObject); @CriticalNative private static native long nGetId(long nativeObject); } core/jni/android_hardware_HardwareBuffer.cpp +8 −12 Original line number Diff line number Diff line Loading @@ -163,7 +163,7 @@ static jint android_hardware_HardwareBuffer_getLayers(JNIEnv* env, static jlong android_hardware_HardwareBuffer_getUsage(JNIEnv* env, jobject clazz, jlong nativeObject) { GraphicBuffer* buffer = GraphicBufferWrapper_to_GraphicBuffer(nativeObject); return AHardwareBuffer_convertFromGrallocUsageBits(buffer->getUsage()); return static_cast<jlong>(AHardwareBuffer_convertFromGrallocUsageBits(buffer->getUsage())); } static jlong android_hardware_HardwareBuffer_estimateSize(jlong nativeObject) { Loading @@ -177,7 +177,12 @@ static jlong android_hardware_HardwareBuffer_estimateSize(jlong nativeObject) { const uint32_t bufferStride = buffer->getStride() > 0 ? buffer->getStride() : buffer->getWidth(); return static_cast<jlong>(buffer->getHeight() * bufferStride * bpp); return static_cast<jlong>(static_cast<uint64_t>(buffer->getHeight() * bufferStride * bpp)); } static jlong android_hardware_HardwareBuffer_getId(jlong nativeObject) { GraphicBuffer* buffer = GraphicBufferWrapper_to_GraphicBuffer(nativeObject); return static_cast<jlong>(buffer->getId()); } // ---------------------------------------------------------------------------- Loading Loading @@ -223,16 +228,6 @@ AHardwareBuffer* android_hardware_HardwareBuffer_getNativeHardwareBuffer( } } GraphicBuffer* android_hardware_HardwareBuffer_getNativeGraphicBuffer( JNIEnv* env, jobject hardwareBufferObj) { if (env->IsInstanceOf(hardwareBufferObj, gHardwareBufferClassInfo.clazz)) { return GraphicBufferWrapper_to_GraphicBuffer( env->GetLongField(hardwareBufferObj, gHardwareBufferClassInfo.mNativeObject)); } else { return nullptr; } } jobject android_hardware_HardwareBuffer_createFromAHardwareBuffer( JNIEnv* env, AHardwareBuffer* hardwareBuffer) { GraphicBuffer* buffer = AHardwareBuffer_to_GraphicBuffer(hardwareBuffer); Loading Loading @@ -295,6 +290,7 @@ static const JNINativeMethod gMethods[] = { // --------------- @CriticalNative ---------------------- { "nEstimateSize", "(J)J", (void*) android_hardware_HardwareBuffer_estimateSize }, { "nGetId", "(J)J", (void*) android_hardware_HardwareBuffer_getId }, }; // clang-format on Loading core/jni/include/android_runtime/android_hardware_HardwareBuffer.h +0 −4 Original line number Diff line number Diff line Loading @@ -28,10 +28,6 @@ namespace android { extern AHardwareBuffer* android_hardware_HardwareBuffer_getNativeHardwareBuffer( JNIEnv* env, jobject hardwareBufferObj); /* Gets the underlying GraphicBuffer for a HardwareBuffer. */ extern GraphicBuffer* android_hardware_HardwareBuffer_getNativeGraphicBuffer( JNIEnv* env, jobject hardwareBufferObj); /* Returns a HardwareBuffer wrapper for the underlying AHardwareBuffer. */ extern jobject android_hardware_HardwareBuffer_createFromAHardwareBuffer( JNIEnv* env, AHardwareBuffer* hardwareBuffer); Loading Loading
core/api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -16888,6 +16888,7 @@ package android.hardware { method public int describeContents(); method public int getFormat(); method public int getHeight(); method public long getId(); method public int getLayers(); method public long getUsage(); method public int getWidth();
core/java/android/hardware/HardwareBuffer.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -16,4 +16,4 @@ package android.hardware; parcelable HardwareBuffer; @JavaOnlyStableParcelable @NdkOnlyStableParcelable parcelable HardwareBuffer ndk_header "android/hardware_buffer_aidl.h";
core/java/android/hardware/HardwareBuffer.java +22 −55 Original line number Diff line number Diff line Loading @@ -188,9 +188,6 @@ public final class HardwareBuffer implements Parcelable, AutoCloseable { public static HardwareBuffer create( @IntRange(from = 1) int width, @IntRange(from = 1) int height, @Format int format, @IntRange(from = 1) int layers, @Usage long usage) { if (!HardwareBuffer.isSupportedFormat(format)) { throw new IllegalArgumentException("Invalid pixel format " + format); } if (width <= 0) { throw new IllegalArgumentException("Invalid width " + width); } Loading Loading @@ -226,9 +223,6 @@ public final class HardwareBuffer implements Parcelable, AutoCloseable { */ public static boolean isSupported(@IntRange(from = 1) int width, @IntRange(from = 1) int height, @Format int format, @IntRange(from = 1) int layers, @Usage long usage) { if (!HardwareBuffer.isSupportedFormat(format)) { throw new IllegalArgumentException("Invalid pixel format " + format); } if (width <= 0) { throw new IllegalArgumentException("Invalid width " + width); } Loading Loading @@ -286,10 +280,7 @@ public final class HardwareBuffer implements Parcelable, AutoCloseable { * Returns the width of this buffer in pixels. */ public int getWidth() { if (isClosed()) { throw new IllegalStateException("This HardwareBuffer has been closed and its width " + "cannot be obtained."); } checkClosed("width"); return nGetWidth(mNativeObject); } Loading @@ -297,10 +288,7 @@ public final class HardwareBuffer implements Parcelable, AutoCloseable { * Returns the height of this buffer in pixels. */ public int getHeight() { if (isClosed()) { throw new IllegalStateException("This HardwareBuffer has been closed and its height " + "cannot be obtained."); } checkClosed("height"); return nGetHeight(mNativeObject); } Loading @@ -309,10 +297,7 @@ public final class HardwareBuffer implements Parcelable, AutoCloseable { */ @Format public int getFormat() { if (isClosed()) { throw new IllegalStateException("This HardwareBuffer has been closed and its format " + "cannot be obtained."); } checkClosed("format"); return nGetFormat(mNativeObject); } Loading @@ -320,10 +305,7 @@ public final class HardwareBuffer implements Parcelable, AutoCloseable { * Returns the number of layers in this buffer. */ public int getLayers() { if (isClosed()) { throw new IllegalStateException("This HardwareBuffer has been closed and its layer " + "count cannot be obtained."); } checkClosed("layer count"); return nGetLayers(mNativeObject); } Loading @@ -331,11 +313,24 @@ public final class HardwareBuffer implements Parcelable, AutoCloseable { * Returns the usage flags of the usage hints set on this buffer. */ public long getUsage() { checkClosed("usage"); return nGetUsage(mNativeObject); } /** * Returns the system-wide unique id for this buffer * */ public long getId() { checkClosed("id"); return nGetId(mNativeObject); } private void checkClosed(String name) { if (isClosed()) { throw new IllegalStateException("This HardwareBuffer has been closed and its usage " + "cannot be obtained."); throw new IllegalStateException("This HardwareBuffer has been closed and its " + name + " cannot be obtained."); } return nGetUsage(mNativeObject); } /** Loading Loading @@ -407,36 +402,6 @@ public final class HardwareBuffer implements Parcelable, AutoCloseable { } }; /** * Validates whether a particular format is supported by HardwareBuffer. * * @param format The format to validate. * * @return True if <code>format</code> is a supported format. false otherwise. * See {@link #create(int, int, int, int, long)}. */ private static boolean isSupportedFormat(@Format int format) { switch(format) { case RGBA_8888: case RGBA_FP16: case RGBA_1010102: case RGBX_8888: case RGB_565: case RGB_888: case BLOB: case YCBCR_420_888: case D_16: case D_24: case DS_24UI8: case D_FP32: case DS_FP32UI8: case S_UI8: case YCBCR_P010: return true; } return false; } private static native long nCreateHardwareBuffer(int width, int height, int format, int layers, long usage); private static native long nCreateFromGraphicBuffer(GraphicBuffer graphicBuffer); Loading @@ -457,4 +422,6 @@ public final class HardwareBuffer implements Parcelable, AutoCloseable { long usage); @CriticalNative private static native long nEstimateSize(long nativeObject); @CriticalNative private static native long nGetId(long nativeObject); }
core/jni/android_hardware_HardwareBuffer.cpp +8 −12 Original line number Diff line number Diff line Loading @@ -163,7 +163,7 @@ static jint android_hardware_HardwareBuffer_getLayers(JNIEnv* env, static jlong android_hardware_HardwareBuffer_getUsage(JNIEnv* env, jobject clazz, jlong nativeObject) { GraphicBuffer* buffer = GraphicBufferWrapper_to_GraphicBuffer(nativeObject); return AHardwareBuffer_convertFromGrallocUsageBits(buffer->getUsage()); return static_cast<jlong>(AHardwareBuffer_convertFromGrallocUsageBits(buffer->getUsage())); } static jlong android_hardware_HardwareBuffer_estimateSize(jlong nativeObject) { Loading @@ -177,7 +177,12 @@ static jlong android_hardware_HardwareBuffer_estimateSize(jlong nativeObject) { const uint32_t bufferStride = buffer->getStride() > 0 ? buffer->getStride() : buffer->getWidth(); return static_cast<jlong>(buffer->getHeight() * bufferStride * bpp); return static_cast<jlong>(static_cast<uint64_t>(buffer->getHeight() * bufferStride * bpp)); } static jlong android_hardware_HardwareBuffer_getId(jlong nativeObject) { GraphicBuffer* buffer = GraphicBufferWrapper_to_GraphicBuffer(nativeObject); return static_cast<jlong>(buffer->getId()); } // ---------------------------------------------------------------------------- Loading Loading @@ -223,16 +228,6 @@ AHardwareBuffer* android_hardware_HardwareBuffer_getNativeHardwareBuffer( } } GraphicBuffer* android_hardware_HardwareBuffer_getNativeGraphicBuffer( JNIEnv* env, jobject hardwareBufferObj) { if (env->IsInstanceOf(hardwareBufferObj, gHardwareBufferClassInfo.clazz)) { return GraphicBufferWrapper_to_GraphicBuffer( env->GetLongField(hardwareBufferObj, gHardwareBufferClassInfo.mNativeObject)); } else { return nullptr; } } jobject android_hardware_HardwareBuffer_createFromAHardwareBuffer( JNIEnv* env, AHardwareBuffer* hardwareBuffer) { GraphicBuffer* buffer = AHardwareBuffer_to_GraphicBuffer(hardwareBuffer); Loading Loading @@ -295,6 +290,7 @@ static const JNINativeMethod gMethods[] = { // --------------- @CriticalNative ---------------------- { "nEstimateSize", "(J)J", (void*) android_hardware_HardwareBuffer_estimateSize }, { "nGetId", "(J)J", (void*) android_hardware_HardwareBuffer_getId }, }; // clang-format on Loading
core/jni/include/android_runtime/android_hardware_HardwareBuffer.h +0 −4 Original line number Diff line number Diff line Loading @@ -28,10 +28,6 @@ namespace android { extern AHardwareBuffer* android_hardware_HardwareBuffer_getNativeHardwareBuffer( JNIEnv* env, jobject hardwareBufferObj); /* Gets the underlying GraphicBuffer for a HardwareBuffer. */ extern GraphicBuffer* android_hardware_HardwareBuffer_getNativeGraphicBuffer( JNIEnv* env, jobject hardwareBufferObj); /* Returns a HardwareBuffer wrapper for the underlying AHardwareBuffer. */ extern jobject android_hardware_HardwareBuffer_createFromAHardwareBuffer( JNIEnv* env, AHardwareBuffer* hardwareBuffer); Loading