正在使用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++
}

解决方案 »

  1.   

    你的count的执行跟for的执行有什么关系,count又没在for里面
      

  2.   

    FOR里面的循环是提取图片的像素数据,提取完毕之后,再将COUNT自增。现在的问题就是像素提取完了,但是COUNT却不自增。
      

  3.   

    要不加个try 看看是不是中间出异常跑出去了
      

  4.   

     for (int x = 0; x < m_videoHeight; x++)
                {
                  
                  
                    for (int y = 0; y < m_videoWidth*3; y++)                 <<<<<<<<==== video height?
      

  5.   

      b = (byte *)(pBuffer);
                你这个 指针 应该在最外面 
    因为 你每列里面 都++       b += (x * m_stride); 《==这个貌似不用你那样放在里面每次都重置指针 所以才 b += (x * m_stride);