diff options
author | Wonsik Kim <wonsik@google.com> | 2020-04-21 17:00:13 -0700 |
---|---|---|
committer | Wonsik Kim <wonsik@google.com> | 2020-04-21 17:00:13 -0700 |
commit | b8ebdb38cb8f5d140eef987139cd5f0ee02576db (patch) | |
tree | 59db4c8f86c8b31af1e19acceb262ef958bea0c0 /media/java/android/media/MediaCodec.java | |
parent | 78cf5a5ebce6663e092a57bfc97a2dc73078eb22 (diff) |
media: fix MediaCodec operations using HardwareBuffer
Bug: 154111004
Bug: 154108503
Test: atest CtsMediaTestCases:MediaCodecBlockModelTest
Change-Id: Ia2891f2fde5bc48055c093d450ca3ee2cc62f30d
Diffstat (limited to 'media/java/android/media/MediaCodec.java')
-rw-r--r-- | media/java/android/media/MediaCodec.java | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java index 1d70a0dbc57c..d6496c0b3e02 100644 --- a/media/java/android/media/MediaCodec.java +++ b/media/java/android/media/MediaCodec.java @@ -4848,8 +4848,13 @@ final public class MediaCodec { } public MediaImage( - @NonNull Image.Plane[] planes, int width, int height, int format, boolean readOnly, + @NonNull ByteBuffer[] buffers, int[] rowStrides, int[] pixelStrides, + int width, int height, int format, boolean readOnly, long timestamp, int xOffset, int yOffset, @Nullable Rect cropRect, long context) { + if (buffers.length != rowStrides.length || buffers.length != pixelStrides.length) { + throw new IllegalArgumentException( + "buffers, rowStrides and pixelStrides should have the same length"); + } mWidth = width; mHeight = height; mFormat = format; @@ -4858,7 +4863,10 @@ final public class MediaCodec { mIsReadOnly = readOnly; mBuffer = null; mInfo = null; - mPlanes = planes; + mPlanes = new MediaPlane[buffers.length]; + for (int i = 0; i < buffers.length; ++i) { + mPlanes[i] = new MediaPlane(buffers[i], rowStrides[i], pixelStrides[i]); + } // save offsets and info mXOffset = xOffset; |