想请问一下,在filter中,传送的每个sample的大小是一样的吗,我自己写了一个Filter,重写了receive函数,我要在这个函数里面通过UDP发送数据包出去,但是对Sample的大小不能确定,虽然可以调用函数进行判断,但是我想要知道的是是否每次发送的数据长度都是一样的。如果不一样的话,我应该怎么在接受端里面指定缓冲区大小呢?

解决方案 »

  1.   

    你想搞视频传输是吧,我已经完成了!是用DIRECTSHOW写的!
      

  2.   

    cpmax:是啊,就是要做一个视频会议的项目,你能提供一点帮助吗,我想将视频数据通过udp组播出去。谢谢啊
      

  3.   

    我也做过,比较成功。
    首先要明白由于udp容易丢包,特别是在internet,
    所以应该在传输前自己定义数据结构,放在udp中发送.
    结构为:
    typedef struct _PacketHeader
    {
    unsigned char UserID;                     // user ID区分用户
    unsigned char ThisFrameTotalPackets;      //此帧包总数  
    unsigned char ThisPacketNum;              //这个包的序号
    unsigned char Reserved;
    unsigned long ThisUserFrameNum;           //此帧在此用户的序号    
    }PacketHeader;在接受端,需要一个接收缓冲池,对收到的数据进行排队,
    由于包并不是按顺序到达的,所以排队是必须的。
    然后对完整的帧进行处理,对不完整的帧按照顺序进行丢弃
      

  4.   

    每个sample的大小是否一致是由发送决定的,一般来说不一样。