VideoFrame

Configurations of the video frame.

@JsonSerializable(explicitToJson: true, includeIfNull: false)
class VideoFrame {
  const VideoFrame(
      {this.type,
      this.width,
      this.height,
      this.yStride,
      this.uStride,
      this.vStride,
      this.yBuffer,
      this.uBuffer,
      this.vBuffer,
      this.rotation,
      this.renderTimeMs,
      this.avsyncType,
      this.metadataBuffer,
      this.metadataSize,
      this.textureId,
      this.matrix,
      this.pixelBuffer});

  @JsonKey(name: 'type')
  final VideoPixelFormat? type;

  @JsonKey(name: 'width')
  final int? width;

  @JsonKey(name: 'height')
  final int? height;

  @JsonKey(name: 'yStride')
  final int? yStride;

  @JsonKey(name: 'uStride')
  final int? uStride;

  @JsonKey(name: 'vStride')
  final int? vStride;

  @JsonKey(name: 'yBuffer', ignore: true)
  final Uint8List? yBuffer;

  @JsonKey(name: 'uBuffer', ignore: true)
  final Uint8List? uBuffer;

  @JsonKey(name: 'vBuffer', ignore: true)
  final Uint8List? vBuffer;

  @JsonKey(name: 'rotation')
  final int? rotation;

  @JsonKey(name: 'renderTimeMs')
  final int? renderTimeMs;

  @JsonKey(name: 'avsync_type')
  final int? avsyncType;

  @JsonKey(name: 'metadata_buffer', ignore: true)
  final Uint8List? metadataBuffer;

  @JsonKey(name: 'metadata_size')
  final int? metadataSize;

  @JsonKey(name: 'textureId')
  final int? textureId;

  @JsonKey(name: 'matrix')
  final List<double>? matrix;

  @JsonKey(name: 'pixelBuffer', ignore: true)
  final Uint8List? pixelBuffer;

  factory VideoFrame.fromJson(Map<String, dynamic> json) =>
      _$VideoFrameFromJson(json);

  Map<String, dynamic> toJson() => _$VideoFrameToJson(this);
}

Note that the buffer provides a pointer to a pointer. This interface cannot modify the pointer of the buffer, but it can modify the content of the buffer.

Attributes

type
The pixel format. See VideoPixelFormat.
width
The width of the video, in pixels.
height
The height of the video, in pixels.
yStride
For YUV data, the line span of the Y buffer; for RGBA data, the total data length.
uStride
For YUV data, the line span of the U buffer; for RGBA data, the value is 0.
vStride
For YUV data, the line span of the V buffer; for RGBA data, the value is 0.
yBuffer
For YUV data, the pointer to the Y buffer; for RGBA data, the data buffer.
uBuffer
For YUV data, the pointer to the U buffer; for RGBA data, the value is 0.
vBuffer
For YUV data, the pointer to the V buffer; for RGBA data, the value is 0.
rotation
The clockwise rotation of the video frame before rendering. Supported values include 0, 90, 180, and 270 degrees.
renderTimeMs
The Unix timestamp (ms) when the video frame is rendered. This timestamp can be used to guide the rendering of the video frame. It is required.
avsyncType
Reserved for future use.
metadataBuffer
This parameter only applies to video data in Texture format. The MetaData buffer. The default value is NULL.
metadataSize
This parameter only applies to video data in Texture format. The MetaData size. The default value is 0.
textureId
This parameter only applies to video data in Texture format. Texture ID.
matrix
This parameter only applies to video data in Texture format. Incoming 4 × 4 transformational matrix. The typical value is a unit matrix.