Files
2026-08-24 10:03:24 +08:00

100 lines
2.3 KiB
C

#ifndef _DATASERVER_DATA_UD_H_
#define _DATASERVER_DATA_UD_H_
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
struct userdata_meta_info_t {
uint32_t poc_number;
/************ flags bit definition ***********
bit 0: //used for mpeg2
1, group start
0, not group start
bit 1-2: //used for mpeg2
0, extension_and_user_data( 0 )
1, extension_and_user_data( 1 )
2, extension_and_user_data( 2 )
bit 3-6: //video format
0, VFORMAT_MPEG12
1, VFORMAT_MPEG4
2, VFORMAT_H264
3, VFORMAT_MJPEG
4, VFORMAT_REAL
5, VFORMAT_JPEG
6, VFORMAT_VC1
7, VFORMAT_AVS
8, VFORMAT_SW
9, VFORMAT_H264MVC
10, VFORMAT_H264_4K2K
11, VFORMAT_HEVC
12, VFORMAT_H264_ENC
13, VFORMAT_JPEG_ENC
14, VFORMAT_VP9
bit 7-9: //frame type
0, Unknown Frame Type
1, I Frame
2, B Frame
3, P Frame
4, D_Type_MPEG2
bit 10: //top_field_first_flag valid
0: top_field_first_flag is not valid
1: top_field_first_flag is valid
bit 11: //top_field_first bit val
**********************************************/
uint32_t flags;
uint32_t vpts; /*video frame pts*/
/******************************************
0: pts is invalid, please use duration to calculate
1: pts is valid
******************************************/
uint32_t vpts_valid;
/*duration for frame*/
uint32_t duration;
/* how many records left in queue waiting to be read*/
uint32_t records_in_que;
unsigned long long priv_data;
uint64_t vpts_64; /*valid only if version == 2*/
uint32_t padding_data[2];
};
/**
* @brief Data of Userdata
*/
typedef struct {
uint32_t version;
uint32_t instance_id;
/**
* Reserved
*/
uint32_t buf_len;
/**
* @brief The size of bytes of the field "data" below.
* The client should read "data_size" bytes start from the data[0].
*/
uint32_t data_size;
/**
* Reserved
*/
unsigned long long pbuf_addr;
struct userdata_meta_info_t meta_info;
/**
* The data of the userdata
*/
uint8_t data[0];
} ds_data_userdata_t;
#ifdef __cplusplus
}
#endif
#endif