summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorLajos Molnar <lajos@google.com>2014-10-27 14:54:33 -0700
committerLajos Molnar <lajos@google.com>2014-12-04 16:33:57 -0800
commit24ffac013578c1367c4c8d763889348c95d63547 (patch)
treed7fb697462eac783af7db557ddbb27fcb20625f1 /media
parentd234dc1f20d3a68e0dd9f2c3a5f14282fba79b13 (diff)
downloadframeworks_base-24ffac013578c1367c4c8d763889348c95d63547.zip
frameworks_base-24ffac013578c1367c4c8d763889348c95d63547.tar.gz
frameworks_base-24ffac013578c1367c4c8d763889348c95d63547.tar.bz2
MediaCodec/Image: handle null cropRect correctly
- allow Media.Image.setCropRect(null) to unset cropRect - use full image if cropRect is null in MediaCodec$Image Bug: 18124320 Change-Id: I7abb6175402a1fe913e16c0a682fabee79c55741
Diffstat (limited to 'media')
-rw-r--r--media/java/android/media/Image.java6
-rw-r--r--media/java/android/media/MediaCodec.java10
2 files changed, 10 insertions, 6 deletions
diff --git a/media/java/android/media/Image.java b/media/java/android/media/Image.java
index 522e45d..0d6b91a 100644
--- a/media/java/android/media/Image.java
+++ b/media/java/android/media/Image.java
@@ -146,8 +146,10 @@ public abstract class Image implements AutoCloseable {
* using coordinates in the largest-resolution plane.
*/
public void setCropRect(Rect cropRect) {
- cropRect = new Rect(cropRect); // make a copy
- cropRect.intersect(0, 0, getWidth(), getHeight());
+ if (cropRect != null) {
+ cropRect = new Rect(cropRect); // make a copy
+ cropRect.intersect(0, 0, getWidth(), getHeight());
+ }
mCropRect = cropRect;
}
diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java
index 420510a..bdd62f2 100644
--- a/media/java/android/media/MediaCodec.java
+++ b/media/java/android/media/MediaCodec.java
@@ -1778,10 +1778,6 @@ final public class MediaCodec {
mIsValid = true;
mIsReadOnly = buffer.isReadOnly();
mBuffer = buffer.duplicate();
- if (cropRect != null) {
- cropRect.offset(-xOffset, -yOffset);
- }
- super.setCropRect(cropRect);
// save offsets and info
mXOffset = xOffset;
@@ -1833,6 +1829,12 @@ final public class MediaCodec {
throw new UnsupportedOperationException(
"unsupported info length: " + info.remaining());
}
+
+ if (cropRect == null) {
+ cropRect = new Rect(0, 0, mWidth, mHeight);
+ }
+ cropRect.offset(-xOffset, -yOffset);
+ super.setCropRect(cropRect);
}
private class MediaPlane extends Plane {