ExternalVideoFrame
外部视频帧。
struct ExternalVideoFrame { ExternalVideoFrame() : type(VIDEO_BUFFER_RAW_DATA), format(VIDEO_PIXEL_DEFAULT), buffer(NULL), stride(0), height(0), cropLeft(0), cropTop(0), cropRight(0), cropBottom(0), rotation(0), timestamp(0), eglContext(NULL), eglType(EGL_CONTEXT10), textureId(0), metadata_buffer(NULL), metadata_size(0){} enum EGL_CONTEXT_TYPE { EGL_CONTEXT10 = 0, EGL_CONTEXT14 = 1, }; enum VIDEO_BUFFER_TYPE { VIDEO_BUFFER_RAW_DATA = 1, VIDEO_BUFFER_ARRAY = 2, VIDEO_BUFFER_TEXTURE = 3, }; VIDEO_BUFFER_TYPE type; VIDEO_PIXEL_FORMAT format; void* buffer; int stride; int height; int cropLeft; int cropTop; int cropRight; int cropBottom; int rotation; long long timestamp; void *eglContext; EGL_CONTEXT_TYPE eglType; int textureId; uint8_t* metadata_buffer; int metadata_size; };
属性
- type
-
视频类型。详见 VIDEO_BUFFER_TYPE。
- format
- 像素格式。详见 VIDEO_PIXEL_FORMAT。
- buffer
- 视频缓冲区。
- stride
- 传入视频帧的行间距,单位为像素而不是字节。对于 Texture,该值指的是 Texture 的宽度。
- height
- 传入视频帧的高度。
- eglContext
- 该参数仅适用于 Texture 格式的视频数据。
- 当使用 Khronos 定义的 OpenGL 接口 (javax.microedition.khronos.egl.*)时,需要将 eglContext 设置给这个字段。
- 当使用 Android 定义的 OpenGL 接口 (android.opengl.*)时,需要将 eglContext 设置给这个字段。
- eglType
- 该参数仅适用于 Texture 格式的视频数据。指该视频帧的 Texture ID。
- textureId
- 该参数仅适用于 Texture 格式的视频数据。为一个输入的 4x4 变换矩阵,典型值为一个单位矩阵。
- metadata_buffer
- 该参数仅适用于 Texture 格式的视频数据。指 MetaData 的数据缓冲区,默认值为
NULL
。 - metadata_size
- 该参数仅适用于 Texture 格式的视频数据。指 MetaData 的大小,默认值为
0
。 - cropLeft
- 原始数据相关字段。指定左边裁剪掉的像素数量。默认为 0。
- cropTop
- 原始数据相关字段。指定顶边裁剪掉的像素数量。默认为 0。
- cropRight
- 原始数据相关字段。指定右边裁剪掉的像素数量。默认为 0。
- cropBottom
- 原始数据相关字段。指定底边裁剪掉的像素数量。默认为 0。
- rotation
- 原始数据相关字段。指定是否对传入的视频组做顺时针旋转操作,可选值为 0, 90, 180, 270。默认为 0。
- timestamp
- 传入的视频帧的时间戳,以毫秒为单位。不正确的时间戳会导致丢帧或者音视频不同步。