我视频采集编码的时候用了 Xvid MPEG-4 Codec  (下的是1.2.2版,运行的时候还会跳出个status对话框)  和 DivX Pro 5.0 Codec  两种,运行时能正常运行了,就是退出的时候,程序老是报错:内存冲突。 退出的时候我也执行过。stop\ Release了pMediaControl->Stop();
pCodec->Release();
pDecoder->Release();
// pPreview->Release();
pMediaControl->Release();
pGraph->Release();使用我就是按照普通使用Filter的方法来用的。对于编码器使用的时候,或者退出的时候是不是要做什么特殊处理的?
还有 Xvid MPEG-4 Codec  的status对话框能不能让它不要弹出的,或者来个没有的版本。
给编码器的来这个帖子:http://topic.csdn.net/u/20110518/16/da7787ea-eb71-4a34-a685-d5c98ea954e5.html   也是40分

解决方案 »

  1.   

    楼主可以这样试试,退出的时候,先把Graph停掉,然后拆Graph,把里面的Filter都一个个remove掉,最后再release各种Graph相关的接口。
      

  2.   

    拆Graph是 RemoveFilter()吗
    我退出的时候pMediaControl->Stop();
    pGraph->RemoveFilter(pSrc);
    pGraph->RemoveFilter(pCodec);
    pGraph->RemoveFilter(pDecoder);
    pGraph->RemoveFilter(pPreview);
    pSrc->Pause();
    pSrc->Stop();
    pSrc->Release();
    pCodec->Pause();
    pCodec->Stop();
    pCodec->Release();
    pCodec = NULL;
    pDecoder->Pause();
    pDecoder->Stop();
    pDecoder->Release();
    pDecoder = NULL;
    // pPreview->Release();
    pMediaControl->Release();
    pMediaControl =NULL;
    pGraph->Release();
    pGraph = NULL;够彻底的了吧,但还是会报错。 我添加编码器的代码:hr =FindXvidCodec(&pCodec);//找到编码器
    if(FAILED(hr))
    return;
    pGraph->AddFilter(pCodec,L"codec");
        IPin * pCodecOut,* pCodecIn;
    pCodecOut = FindPin(pCodec,PINDIR_OUTPUT);
    pCodecIn = FindPin(pCodec,PINDIR_INPUT);然后就是把IPin连接下的事。