Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在Skype中测试DirectShow筛选器时出现的问题_C++_Directshow_Skype_Graphedit - Fatal编程技术网

C++ 在Skype中测试DirectShow筛选器时出现的问题

C++ 在Skype中测试DirectShow筛选器时出现的问题,c++,directshow,skype,graphedit,C++,Directshow,Skype,Graphedit,这是FillBuffer功能: HRESULT CVCamStream::FillBuffer(IMediaSample *pms) { REFERENCE_TIME rtNow; REFERENCE_TIME avgFrameTime = ((VIDEOINFOHEADER*)m_mt.pbFormat)->AvgTimePerFrame; rtNow = m_rtLastTime; m_rtLastTime += avgFrameTime; p

这是
FillBuffer
功能:

HRESULT CVCamStream::FillBuffer(IMediaSample *pms)
{
    REFERENCE_TIME rtNow;
    REFERENCE_TIME avgFrameTime = ((VIDEOINFOHEADER*)m_mt.pbFormat)->AvgTimePerFrame;

    rtNow = m_rtLastTime;
    m_rtLastTime += avgFrameTime;
    pms->SetTime(&rtNow, &m_rtLastTime);
    pms->SetSyncPoint(TRUE);

    BYTE *pData;
    pms->GetPointer(&pData);
    long lDataLen = pms->GetSize();

    ProcessFrame(hdc, &pData);

    return NOERROR;
}
下面是我在ProcessFrame中所做的工作:

void ProcessFrame(HDC hdc, BYTE **lpbitmap)
{
    BYTE *q = *lpbitmap;
    const int32_t height = 640;
    const int32_t width = 480;
    for (int y = 0; y < height; y++)
    {
        uint8_t* p = bgra_image_data;
        for (int x = 0; x < width; x++)
        {
            if (p[3] > 0) for (int i = 0; i < 3; i++) q[i] = p[i];

            p += 4;
            q += 3;
        }
    }
}
void ProcessFrame(HDC-HDC,字节**lpbitmap)
{
字节*q=*lpbitmap;
const int32_t height=640;
常数int32_t宽度=480;
对于(int y=0;y0)对于(inti=0;i<3;i++)q[i]=p[i];
p+=4;
q+=3;
}
}
}
详细地说,我正在玩一个
BRGA
图像的字节,具有相同的维度

嗯,使用graphedt,它就像一个符咒! 取而代之的是,选择这个过滤器作为Skype源有时它会呈现完全黑色,有时它会弄乱一切-图像不可读

在任何情况下,几秒钟后,它都会由于写访问冲突而崩溃。
你在我的代码中看到了任何graphedt可能忽略的错误证据吗?

我刚刚注意到Skype“强制”使用更小的分辨率!那是因为我有一种奇怪的行为。我确认。我应该负责调用
SetMediaType
,并根据需要更改所有大小。