用DVSDK例程中的encode 调用VIDENC_COPY
DSP中只执行一个MEMCPY函数:
minSamples = inBufs->bufDesc[curBuf].bufSize;
memset(outBufs->bufs[curBuf], 0xFF, minSamples );
memcpy(outBufs->bufs[curBuf], (inBufs->bufDesc[curBuf].buf), minSamples );
outArgs->bytesGenerated = minSamples ;
,在video.c中执行Venc1_process(hVe1, hCapBuf, hDstBuf)之前将hCapBuf中的数据fwrite成文件
执行之后将hDstBuf中的数据写成文件,二进制对比 发现数据不相同..... 而且是大部分相同,小部分区域为0xFF (连续的)...
什么原因呢?
怀疑memcpy函数有问题,把它改成一个for循环
memset(outBufs->bufs[curBuf], 0xFF, minSamples );
for(i=0;i<minSamples ;i++)
{
outBufs->bufs[curBuf][i] = inBufs->bufDesc[curBuf].buf[i];
}
还是会在每帧末尾部分 出现很多的0xFF....
又把for循环改成如下:
for(i=0;i<minSamples ;i++)
{
outBufs->bufs[curBuf][i] = i %256 ;
}
依旧存在0xFF,而且写入FF的时候 i的值在发生变化
实在想不明白了 难道for循环没有执行完全?
在后面加一个空循环..... 还是一样
for(i=0;i<minSamples ;i++);
难道是内存出什么问题了? 不然为什么会有这个错误呢 求指导...