summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--media/java/android/media/ImageWriter.java38
1 files changed, 15 insertions, 23 deletions
diff --git a/media/java/android/media/ImageWriter.java b/media/java/android/media/ImageWriter.java
index e0f04a119234..9f52bf18f4e3 100644
--- a/media/java/android/media/ImageWriter.java
+++ b/media/java/android/media/ImageWriter.java
@@ -108,7 +108,6 @@ public class ImageWriter implements AutoCloseable {
private long mUsage = HardwareBuffer.USAGE_CPU_WRITE_OFTEN;
private @HardwareBuffer.Format int mHardwareBufferFormat;
private @NamedDataSpace int mDataSpace;
- private boolean mUseLegacyImageFormat;
// Field below is used by native code, do not access or modify.
private int mWriterFormat;
@@ -257,7 +256,6 @@ public class ImageWriter implements AutoCloseable {
+ ", maxImages: " + maxImages);
}
- mUseLegacyImageFormat = useLegacyImageFormat;
// Note that the underlying BufferQueue is working in synchronous mode
// to avoid dropping any buffers.
mNativeContext = nativeInit(new WeakReference<>(this), surface, maxImages, width, height,
@@ -334,12 +332,21 @@ public class ImageWriter implements AutoCloseable {
int hardwareBufferFormat, int dataSpace, int width, int height, long usage) {
mMaxImages = maxImages;
mUsage = usage;
- mHardwareBufferFormat = hardwareBufferFormat;
- mDataSpace = dataSpace;
- int publicFormat = PublicFormatUtils.getPublicFormat(hardwareBufferFormat, dataSpace);
+ int imageFormat;
+ // if useSurfaceImageFormatInfo is true, imageFormat will be set to UNKNOWN
+ // and retrieve corresponding hardwareBufferFormat and dataSpace here.
+ if (useSurfaceImageFormatInfo) {
+ imageFormat = ImageFormat.UNKNOWN;
+ mHardwareBufferFormat = PublicFormatUtils.getHalFormat(imageFormat);
+ mDataSpace = PublicFormatUtils.getHalDataspace(imageFormat);
+ } else {
+ imageFormat = PublicFormatUtils.getPublicFormat(hardwareBufferFormat, dataSpace);
+ mHardwareBufferFormat = hardwareBufferFormat;
+ mDataSpace = dataSpace;
+ }
initializeImageWriter(surface, maxImages, useSurfaceImageFormatInfo, false,
- publicFormat, hardwareBufferFormat, dataSpace, width, height, usage);
+ imageFormat, hardwareBufferFormat, dataSpace, width, height, usage);
}
/**
@@ -884,27 +891,17 @@ public class ImageWriter implements AutoCloseable {
private @HardwareBuffer.Format int mHardwareBufferFormat = HardwareBuffer.RGBA_8888;
private @NamedDataSpace int mDataSpace = DataSpace.DATASPACE_UNKNOWN;
private boolean mUseSurfaceImageFormatInfo = true;
- // set this as true temporarily now as a workaround to get correct format
- // when using surface format by default without overriding the image format
- // in the builder pattern
- private boolean mUseLegacyImageFormat = true;
+ private boolean mUseLegacyImageFormat = false;
/**
* Constructs a new builder for {@link ImageWriter}.
*
- * <p>Uses {@code surface} input parameter to retrieve image format, hal format
- * and hal dataspace value for default. </p>
- *
* @param surface The destination Surface this writer produces Image data into.
*
* @throws IllegalArgumentException if the surface is already abandoned.
*/
public Builder(@NonNull Surface surface) {
mSurface = surface;
- // retrieve format from surface
- mImageFormat = SurfaceUtils.getSurfaceFormat(surface);
- mDataSpace = SurfaceUtils.getSurfaceDataspace(surface);
- mHardwareBufferFormat = PublicFormatUtils.getHalFormat(mImageFormat);
}
/**
@@ -1058,11 +1055,6 @@ public class ImageWriter implements AutoCloseable {
mWidth = writer.mWidth;
mHeight = writer.mHeight;
mDataSpace = writer.mDataSpace;
-
- if (!mOwner.mUseLegacyImageFormat) {
- mFormat = PublicFormatUtils.getPublicFormat(
- mOwner.mHardwareBufferFormat, mDataSpace);
- }
}
@Override
@@ -1083,7 +1075,7 @@ public class ImageWriter implements AutoCloseable {
public int getFormat() {
throwISEIfImageIsInvalid();
- if (mOwner.mUseLegacyImageFormat && mFormat == -1) {
+ if (mFormat == -1) {
mFormat = nativeGetFormat(mDataSpace);
}
return mFormat;