blob: ec45f0a47f01b261c36bf104ab1abc177dcfe04f [file] [log] [blame]
/*
* Copyright 2017 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 java.nio.ByteBuffer;
/**
* An encoded frame from a video stream. Used as an input for decoders and as an output for
* encoders.
*/
public class EncodedImage {
public enum FrameType {
EmptyFrame,
VideoFrameKey,
VideoFrameDelta,
}
public final ByteBuffer buffer;
public final int encodedWidth;
public final int encodedHeight;
public final long captureTimeMs;
public final FrameType frameType;
public final int rotation;
public final boolean completeFrame;
public final Integer qp;
private EncodedImage(ByteBuffer buffer, int encodedWidth, int encodedHeight, long captureTimeMs,
FrameType frameType, int rotation, boolean completeFrame, Integer qp) {
this.buffer = buffer;
this.encodedWidth = encodedWidth;
this.encodedHeight = encodedHeight;
this.captureTimeMs = captureTimeMs;
this.frameType = frameType;
this.rotation = rotation;
this.completeFrame = completeFrame;
this.qp = qp;
}
public static Builder builder() {
return new Builder();
}
public static class Builder {
private ByteBuffer buffer;
private int encodedWidth;
private int encodedHeight;
private long captureTimeMs;
private EncodedImage.FrameType frameType;
private int rotation;
private boolean completeFrame;
private Integer qp;
private Builder() {}
public Builder setBuffer(ByteBuffer buffer) {
this.buffer = buffer;
return this;
}
public Builder setEncodedWidth(int encodedWidth) {
this.encodedWidth = encodedWidth;
return this;
}
public Builder setEncodedHeight(int encodedHeight) {
this.encodedHeight = encodedHeight;
return this;
}
public Builder setCaptureTimeMs(long captureTimeMs) {
this.captureTimeMs = captureTimeMs;
return this;
}
public Builder setFrameType(EncodedImage.FrameType frameType) {
this.frameType = frameType;
return this;
}
public Builder setRotation(int rotation) {
this.rotation = rotation;
return this;
}
public Builder setCompleteFrame(boolean completeFrame) {
this.completeFrame = completeFrame;
return this;
}
public Builder setQp(Integer qp) {
this.qp = qp;
return this;
}
public EncodedImage createEncodedImage() {
return new EncodedImage(buffer, encodedWidth, encodedHeight, captureTimeMs, frameType,
rotation, completeFrame, qp);
}
}
}