正在使用directshow处理一个视频的每一帧的图像,在调用ISampleGrabberCB遇到如下问题,ISampleGrabberCB里面的for循环,可以执行,但是之后的count++就不执行了(如下代码),不知道是怎么回事?int ISampleGrabberCB.BufferCB( double SampleTime, IntPtr pBuffer, int BufferLen )
{ for (int x = 0; x < m_videoHeight; x++)
{
for (int y = 0; y < m_videoWidth*3; y++)
{ myRecArray[m_Count, arraystep] = *b;
b++;
arraystep++;//像素数增加一个 }
b = (byte *)(pBuffer);
b += (x * m_stride);
}
//下面这个自增的语句就不执行了,不知道是怎么回事?
count++
}
{ for (int x = 0; x < m_videoHeight; x++)
{
for (int y = 0; y < m_videoWidth*3; y++)
{ myRecArray[m_Count, arraystep] = *b;
b++;
arraystep++;//像素数增加一个 }
b = (byte *)(pBuffer);
b += (x * m_stride);
}
//下面这个自增的语句就不执行了,不知道是怎么回事?
count++
}
{
for (int y = 0; y < m_videoWidth*3; y++) <<<<<<<<==== video height?
你这个 指针 应该在最外面
因为 你每列里面 都++ b += (x * m_stride); 《==这个貌似不用你那样放在里面每次都重置指针 所以才 b += (x * m_stride);