1、DirectShow(推模式)连接过程中用传数据进去么,如果用需要重载什么函数传入数据?
2、用GraphEdit可以连接,为什么程序中调用就连接不上(每用户ID不存在)?
3、自己写的源MPEG_2 Filter(推模式),分离器用微软带的和解码器之间是怎么连接起来的(像源与分离之间调用GetMediaType()函数判断连接类型,那么分离器和解码器之间如何判断的,如果也是它,那么我用微软的MPEG_2分离h264格式的,也可以分离,不过解码器使用的是h264的,是分离器中是自动判断视频格式并与解码器连接的么,还有像图像大小在什分离器中判断出来还是解码器中判断,也就是传入解码器中的数据是每一个图像的压缩帧还是数据可以分块传进,是不是和源都一样,Fillbuff填充数据,大小也在填充数据前设定好的。分离器是根据数据流判断好图像大小并设定(和Sample一样),压入解码器中是一图像帧的数据啊)?由于刚学,可能说的有些前言不答后语,望见谅,麻烦大家帮帮忙,各抒己见么

解决方案 »

  1.   

    去看看《directshow 开发指南》
      

  2.   

    1。一般会读取部分数据,从而分析其媒体格式,才能完成Graph的构建
    2。这个就上代码问题了,直接debug分析
    3。push模式,一般出来就是2个pin,一video一audio。与后面的连接就是根据你设置的pin的媒体类型。
      

  3.   

    谢谢  问一下  
    1、push读取部分数据重载什么函数  不应该是fillbuffer吧(我设断点没进)
    2、分离器是使用微软现成的,如何设置pin类型
      

  4.   

    push模式的filter需要自己写分离器么?
      

  5.   

    1.push模式中,数据的传递源filter重载fillbuffer,中间filter重载recieve
    2.filter只有两种Pin:PINDIR_IN和PINDIR_OUT,你还需要得到什么类型?
    3.实时播放中,video Render只根据sample时间戳来播放!
      

  6.   

    to flydreamGG:我用的分离器使用微软的,没有源码,不可能重载到receive
    push模式下连接时也需要一部分数据,这部分数据用什么函数传入的,我在FILLBUFFER设断点没进(源filter可能写错了),数据采集(ts格式)下来到播放出这段时间(传输和解码时间除外),推和拉那个更接近采集时的时间,用那个模式比较好