协议层的代码卡住了,收到的数据包解析有问题,也无法导入fflemg解码, 看AX的代码, 不知道是程序员偷懒还是对数据长度认识不足, 在很多地方用了sizeof(struct)类似的东西来指定长度做内存拷贝, 其实struct的长度不见的是内部元素的长度之和,很有可能会大于实际长度,这是c++的内部数据对齐规则,如:
struct s{int n; char c;}其实 sizeof(s) = 8, 而不是5,它会根据内部最大的元素长度进行对齐 在做memcpy的时候, 用复杂类型数据的sizeof来做长度是不科学的。
等老徐那边先看看,确定一下是哪边的问题再动手吧。先把显示YUV数据的模块搞了一下,:
查阅了大多数资料,基本是把YUV转成RBG的数据,
第一种用GDI来绘制视频帧,
第二种使用DDRAW,这个是DX7的老东西了,用起很诡异
第三种使用DSHOW,一看到COM的东西就恶心
第四种采用SDL, 一个跨平台媒体库
方案待选,能实现功能就行,效率方面也要考虑到。