AVStream数据格式分辨率结构体
2025-05-28
0
0
typedef struct tagKS_DATARANGE_VIDEO {
KSDATARANGE DataRange;
BOOL bFixedSizeSamples= TRUE,所有采样是否大小相同
BOOL bTemporalCompression = FALSE,每个采样是否独立
DWORD StreamDescriptionFlags = 0,未用
DWORD MemoryAllocationFlags =0,未用
KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps;
KS_VIDEOINFOHEADER VideoInfoHeader;
} KS_DATARANGE_VIDEO, *PKS_DATARANGE_VIDEO;
typedef union {
struct {
ULONG FormatSize=sizeof(KS_DATARANGE_VIDEO)
ULONG Flags =0;//2说是列表KSATTRIBUTE_LIST
ULONG SampleSize=X*Y*2,文档说要忽略
ULONG Reserved=0
GUID MajorFormat;=VIDEO
GUID SubFormat=YUY2_GUID
GUID Specifier=VIDEO_SPECIFY
};
LONGLONG Alignment;
} KSDATAFORMAT, *PKSDATAFORMAT, KSDATARANGE, *PKSDATARANGE;
typedef struct _KS_VIDEO_STREAM_CONFIG_CAPS {
GUID guid;
ULONG VideoStandard=视频标准
SIZE InputSize=输入信号的大小
SIZE MinCroppingSize=允许的最小裁剪
SIZE MaxCroppingSize=允许的最大裁剪
int CropGranularityX=x裁剪大小的颗粒度
int CropGranularityY=Y裁剪大小
int CropAlignX=裁剪后的大小颗粒度
int CropAlignY=裁剪后的大小颗粒度
SIZE MinOutputSize=最小位图
SIZE MaxOutputSize=最大位图
int OutputGranularityX=输出的图的颗粒度
int OutputGranularityY=输出图的颗粒度
int StretchTapsX=拉伸方式
int StretchTapsY;
int ShrinkTapsX=收缩方式
int ShrinkTapsY;
LONGLONG MinFrameInterval=最小帧率
LONGLONG MaxFrameInterval=最大帧率
LONG MinBitsPerSecond=数据速率
LONG MaxBitsPerSecond;
} KS_VIDEO_STREAM_CONFIG_CAPS,*PKS_VIDEO_STREAM_CONFIG_CAPS;
typedef struct tagKS_VIDEOINFOHEADER {
RECT rcSource=裁剪矩形
RECT rcTarget=目标矩形
DWORD dwBitRate=帧率
DWORD dwBitErrorRate=误码率
REFERENCE_TIME AvgTimePerFrame=帧时间间隔100ns
KS_BITMAPINFOHEADER bmiHeader;
} KS_VIDEOINFOHEADER, *PKS_VIDEOINFOHEADER;
typedef struct tagKS_BITMAPINFOHEADER {
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes=平面数,永为1
WORD biBitCount16
DWORD biCompression=FOURC_YUY2
DWORD biSizeImage=位图大小,压缩时用
LONG biXPelsPerMeter=0
LONG biYPelsPerMeter=0
DWORD biClrUsed=0
DWORD biClrImportant=0
} KS_BITMAPINFOHEADER, *PKS_BITMAPINFOHEADER;