主题:跪求,小弟用delphi开发DirectShow开发SourceFilter遇到困难,请各位指点
我在写一个SourceFilter 把经过GSM6.10压缩的数据流,送给音频解压 Filter,最后送给播放Filter.问题出在我的SourceFilter提供的WAVE_FORMAT_GSM610媒体类型后面的Filter不支持,所以连接失败。
可是把SourceFilter提供的媒体类型改为WAVE_FORMAT_PCM,直接连接Default DirectSoundDevice (播放声音)Filter ,正常连接。
媒体类型如下:
MediaType.majortype := MEDIATYPE_Audio;
MediaType.formattype := FORMAT_WaveFormatEx ;
//子类型是压缩数据
MediaType.subtype := MEDIASUBTYPE_PCM;
MediaType.bTemporalCompression := False;
MediaType.bFixedSizeSamples :=True;
MediaType.pbFormat := pWfx ;
MediaType.lSampleSize := 0;
MediaType.cbFormat := 18;
FWaveFormat.wFormatTag :=1; //WAVE_FORMAT_PCM
FWaveFormat.nChannels :=1; //mono
FWaveFormat.nSamplesPerSec := 8000;
FWaveFormat.nAvgBytesPerSec:= 16000;
FWaveFormat.nBlockAlign:=2;
FWaveFormat.wbitspersample := 16;
FWaveFormat.cbSize :=0;
谢谢各位指点,为什么子类型改为WAVE_FORMAT_GSM610就不能连接。
可是把SourceFilter提供的媒体类型改为WAVE_FORMAT_PCM,直接连接Default DirectSoundDevice (播放声音)Filter ,正常连接。
媒体类型如下:
MediaType.majortype := MEDIATYPE_Audio;
MediaType.formattype := FORMAT_WaveFormatEx ;
//子类型是压缩数据
MediaType.subtype := MEDIASUBTYPE_PCM;
MediaType.bTemporalCompression := False;
MediaType.bFixedSizeSamples :=True;
MediaType.pbFormat := pWfx ;
MediaType.lSampleSize := 0;
MediaType.cbFormat := 18;
FWaveFormat.wFormatTag :=1; //WAVE_FORMAT_PCM
FWaveFormat.nChannels :=1; //mono
FWaveFormat.nSamplesPerSec := 8000;
FWaveFormat.nAvgBytesPerSec:= 16000;
FWaveFormat.nBlockAlign:=2;
FWaveFormat.wbitspersample := 16;
FWaveFormat.cbSize :=0;
谢谢各位指点,为什么子类型改为WAVE_FORMAT_GSM610就不能连接。