---
title: 数据定义
description: "视频输出模块输出数据结构由数据包额外信息extData、数据包大小和实际数据三部分组成。该数据通过回调函数提供给开发者，并通过VmiCmd枚举中的VIDEO_RETURN_VIDEO_DATA命令字指定。使用示例如下："
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/240RC2/armnative/kunpengcpsvideo_16_0033.html
sourcePath: /source/zh/kunpengboostkithistory/240RC2/armnative/kunpengcpsvideo_16_0033.html
indexId: 7b0fd1c224d91b407f9292dbf44f11b97268d5b654c4d57eae578c33934fbe7979
---
# 数据定义

视频输出模块输出数据结构由数据包额外信息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;                 // 当前屏幕刷新率
};
```
