数据定义
视频输出模块输出数据结构由数据包额外信息extData、数据包大小和实际数据三部分组成。该数据通过回调函数提供给开发者,并通过VmiCmd枚举中的VIDEO_RETURN_VIDEO_DATA命令字指定。使用示例如下:
VmiDataType module = DATA_VIDEO; VmiCmd cmd = VIDEO_RETURN_VIDEO_DATA; VideoData videoData; uint8_t* data = &videoData; DataCallback(module, cmd, data, sizeof(VideoData));
VideoData定义
struct VideoData { ExtDataVideo extData; // 码流包额外信息 uint32_t size; // 码流包大小 uint8_t data[0]; // 码流数据 } __attribute__((packed));
ExtDataVideo定义
struct FrameSize { uint32_t width = 720; // 720: 默认720P uint32_t height = 1280; // 1280: 默认720P uint32_t widthAligned = 720; // 720: 默认不做对齐 uint32_t heightAligned = 1280; // 1280: 默认不做对齐 } __attribute__((packed)); struct VideoLatency { uint64_t startCaptureTimestamp; // 抓图开始时间点 uint64_t endCaptureTimestamp; // 抓图完成时间点 uint64_t startEncodeTimestamp; // 编码开始时间点 uint64_t endEncodeTimestamp; // 编码完成时间点 } __attribute__((packed)); struct ExtDataVideo { int64_t timestamp; // 帧渲染完成的时间戳 uint8_t orientation; // 当前帧的旋转方向 FrameSize size; // 当前图像大小 VideoLatency latencyInfo; // 抓图和编码时间点 uint32_t frameRate; // 当前屏幕刷新率 };
父主题: 视频输出开发