MediaCodec: skip index validation at buffer validations

The index validation will happen at the MediaCodec native layer.

Bug: 244121189
Test: atest CtsMediaCodecTestCases
Test: atest CtsMediaDecoderTestCases
Test: atest CtsMediaEncoderTestCases
Test: atest CtsMediaV2TestCases
Merged-In: I1af0cd61ae19e86a115b5e347625b8476440e848
Change-Id: I1af0cd61ae19e86a115b5e347625b8476440e848
This commit is contained in:
Wonsik Kim
2022-09-12 13:46:01 -07:00
parent e91c7faf4e
commit b5547085bc

View File

@@ -3835,11 +3835,10 @@ final public class MediaCodec {
private void invalidateByteBufferLocked(
@Nullable ByteBuffer[] buffers, int index, boolean input) {
if (buffers == null) {
if (index < 0) {
throw new IllegalStateException("index is negative (" + index + ")");
if (index >= 0) {
BitSet indices = input ? mValidInputIndices : mValidOutputIndices;
indices.clear(index);
}
BitSet indices = input ? mValidInputIndices : mValidOutputIndices;
indices.clear(index);
} else if (index >= 0 && index < buffers.length) {
ByteBuffer buffer = buffers[index];
if (buffer != null) {
@@ -3851,10 +3850,9 @@ final public class MediaCodec {
private void validateInputByteBufferLocked(
@Nullable ByteBuffer[] buffers, int index) {
if (buffers == null) {
if (index < 0) {
throw new IllegalStateException("index is negative (" + index + ")");
if (index >= 0) {
mValidInputIndices.set(index);
}
mValidInputIndices.set(index);
} else if (index >= 0 && index < buffers.length) {
ByteBuffer buffer = buffers[index];
if (buffer != null) {
@@ -3868,11 +3866,10 @@ final public class MediaCodec {
@Nullable ByteBuffer[] buffers, int index, boolean input) {
synchronized(mBufferLock) {
if (buffers == null) {
if (index < 0) {
throw new IllegalStateException("index is negative (" + index + ")");
if (index >= 0) {
BitSet indices = input ? mValidInputIndices : mValidOutputIndices;
indices.set(index);
}
BitSet indices = input ? mValidInputIndices : mValidOutputIndices;
indices.set(index);
} else if (index >= 0 && index < buffers.length) {
ByteBuffer buffer = buffers[index];
if (buffer != null) {
@@ -3885,10 +3882,9 @@ final public class MediaCodec {
private void validateOutputByteBufferLocked(
@Nullable ByteBuffer[] buffers, int index, @NonNull BufferInfo info) {
if (buffers == null) {
if (index < 0) {
throw new IllegalStateException("index is negative (" + index + ")");
if (index >= 0) {
mValidOutputIndices.set(index);
}
mValidOutputIndices.set(index);
} else if (index >= 0 && index < buffers.length) {
ByteBuffer buffer = buffers[index];
if (buffer != null) {