ExternalVideoFrame
The external video frame.
@JsonSerializable(explicitToJson: true, includeIfNull: false) class ExternalVideoFrame { const ExternalVideoFrame( {this.type, this.format, this.buffer, this.stride, this.height, this.cropLeft, this.cropTop, this.cropRight, this.cropBottom, this.rotation, this.timestamp, this.eglType, this.textureId, this.matrix, this.metadataBuffer, this.metadataSize, this.alphaBuffer, this.fillAlphaBuffer, this.alphaStitchMode, this.d3d11Texture2d, this.textureSliceIndex, this.colorSpace}); @JsonKey(name: 'type') final VideoBufferType? type; @JsonKey(name: 'format') final VideoPixelFormat? format; @JsonKey(name: 'buffer', ignore: true) final Uint8List? buffer; @JsonKey(name: 'stride') final int? stride; @JsonKey(name: 'height') final int? height; @JsonKey(name: 'cropLeft') final int? cropLeft; @JsonKey(name: 'cropTop') final int? cropTop; @JsonKey(name: 'cropRight') final int? cropRight; @JsonKey(name: 'cropBottom') final int? cropBottom; @JsonKey(name: 'rotation') final int? rotation; @JsonKey(name: 'timestamp') final int? timestamp; @JsonKey(name: 'eglType') final EglContextType? eglType; @JsonKey(name: 'textureId') final int? textureId; @JsonKey(name: 'matrix') final List<double>? matrix; @JsonKey(name: 'metadataBuffer', ignore: true) final Uint8List? metadataBuffer; @JsonKey(name: 'metadataSize') final int? metadataSize; @JsonKey(name: 'alphaBuffer', ignore: true) final Uint8List? alphaBuffer; @JsonKey(name: 'fillAlphaBuffer') final bool? fillAlphaBuffer; @JsonKey(name: 'alphaStitchMode') final AlphaStitchMode? alphaStitchMode; @JsonKey(name: 'd3d11Texture2d', readValue: readIntPtr) final int? d3d11Texture2d; @JsonKey(name: 'textureSliceIndex') final int? textureSliceIndex; @JsonKey(name: 'colorSpace') final ColorSpace? colorSpace; factory ExternalVideoFrame.fromJson(Map<String, dynamic> json) => _$ExternalVideoFrameFromJson(json); Map<String, dynamic> toJson() => _$ExternalVideoFrameToJson(this); }
Attributes
- type
-
The video type. See VideoBufferType.
- format
- The pixel format. See VideoPixelFormat.
- buffer
- Video frame buffer.
- stride
- Line spacing of the incoming video frame, which must be in pixels instead of bytes. For textures, it is the width of the texture.
- height
- Height of the incoming video frame.
- eglContext
- This parameter only applies to video data in Texture format.
- When using the OpenGL interface (javax.microedition.khronos.egl.*) defined by Khronos, set eglContext to this field.
- When using the OpenGL interface (android.opengl.*) defined by Android, set eglContext to this field.
- eglType
- This parameter only applies to video data in Texture format. Texture ID of the video frame.
- textureId
- This parameter only applies to video data in Texture format. Incoming 4 × 4 transformational matrix. The typical value is a unit matrix.
- matrix
- This parameter only applies to video data in Texture format. Incoming 4 × 4 transformational matrix. The typical value is a unit matrix.
- 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
. - d3d11Texture2d
- This parameter only applies to video data in Windows Texture format. It represents a pointer to an object of type
ID3D11Texture2D
, which is used by a video frame. - alphaBuffer
-
The alpha channel data output by using portrait segmentation algorithm. This data matches the size of the video frame, with each pixel value ranging from [0,255], where 0 represents the background and 255 represents the foreground (portrait).
By setting this parameter, you can render the video background into various effects, such as transparent, solid color, image, video, etc.
Attention: In custom video rendering scenarios, ensure that both the video frame and alphaBuffer are of the Full Range type; other types may cause abnormal alpha data rendering. - fillAlphaBuffer
- This parameter only applies to video data in BGRA or RGBA format. Whether to extract the alpha channel data from the video frame and automatically fill it into alphaBuffer:
true:Extract and fill the alpha channel data.
false
: (Default) Do not extract and fill the Alpha channel data.
Note: For video data in BGRA or RGBA format, you can set the Alpha channel data in either of the following ways:- Automatically by setting this parameter to
true
. - Manually through the alphaBuffer parameter.
- alphaStitchMode
- When the video frame contains alpha channel data, it represents the relative position of alphaBuffer and the video frame. See AlphaStitchMode.
- textureSliceIndex
- This parameter only applies to video data in Windows Texture format. It represents an index of an
ID3D11Texture2D
texture object used by the video frame in theID3D11Texture2D
array. - cropLeft
- Raw data related parameter. The number of pixels trimmed from the left. The default value is 0.
- cropTop
- Raw data related parameter. The number of pixels trimmed from the top. The default value is 0.
- cropRight
- Raw data related parameter. The number of pixels trimmed from the right. The default value is 0.
- cropBottom
- Raw data related parameter. The number of pixels trimmed from the bottom. The default value is 0.
- rotation
- Raw data related parameter. The clockwise rotation of the video frame. You can set the rotation angle as 0, 90, 180, or 270. The default value is 0.
- timestamp
- Timestamp (ms) of the incoming video frame. An incorrect timestamp results in frame loss or unsynchronized audio and video.
- colorSpace
- By default, the color space properties of video frames will apply the Full Range and BT.709 standard configurations. You can configure the settings according your needs for custom video capturing and rendering. See .