blob: 8067408c5cec9262e5942c69013bdb6edbfbe235 [file] [log] [blame]
/*
* 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;
import org.webrtc.JavaI420Buffer;
import org.webrtc.VideoFrame;
/**
* Helper methods for {@link HardwareVideoEncoderTest} and {@link HardwareVideoDecoderTest}.
*/
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);
}
}