| /* | |
| * Copyright 2018 The WebRTC project authors. All Rights Reserved. | |
| * | |
| * Use of this source code is governed by a BSD-style license | |
| * that can be found in the LICENSE file in the root of the source | |
| * tree. An additional intellectual property rights grant can be found | |
| * in the file PATENTS. All contributing project authors may | |
| * be found in the AUTHORS file in the root of the source tree. | |
| */ | |
| package org.webrtc; | |
| import static com.google.common.truth.Truth.assertThat; | |
| import static com.google.common.truth.Truth.assertWithMessage; | |
| import java.nio.ByteBuffer; | |
| import java.util.Random; | |
| /** | |
| * Helper methods for {@link HardwareVideoEncoderTest} and {@link AndroidVideoDecoderTest}. | |
| */ | |
| class CodecTestHelper { | |
| static void assertEqualContents(byte[] expected, ByteBuffer actual, int offset, int size) { | |
| assertThat(size).isEqualTo(expected.length); | |
| assertThat(actual.capacity()).isAtLeast(offset + size); | |
| for (int i = 0; i < expected.length; i++) { | |
| assertWithMessage("At index: " + i).that(actual.get(offset + i)).isEqualTo(expected[i]); | |
| } | |
| } | |
| static byte[] generateRandomData(int length) { | |
| Random random = new Random(); | |
| byte[] data = new byte[length]; | |
| random.nextBytes(data); | |
| return data; | |
| } | |
| static VideoFrame.I420Buffer wrapI420(int width, int height, byte[] data) { | |
| final int posY = 0; | |
| final int posU = width * height; | |
| final int posV = posU + width * height / 4; | |
| final int endV = posV + width * height / 4; | |
| ByteBuffer buffer = ByteBuffer.allocateDirect(data.length); | |
| buffer.put(data); | |
| buffer.limit(posU); | |
| buffer.position(posY); | |
| ByteBuffer dataY = buffer.slice(); | |
| buffer.limit(posV); | |
| buffer.position(posU); | |
| ByteBuffer dataU = buffer.slice(); | |
| buffer.limit(endV); | |
| buffer.position(posV); | |
| ByteBuffer dataV = buffer.slice(); | |
| return JavaI420Buffer.wrap(width, height, dataY, width, dataU, width / 2, dataV, width / 2, | |
| /* releaseCallback= */ null); | |
| } | |
| } |