修改TI DVSDK的viddec_copy中的CODEC的源码文件(viddec_copy.c)中的数据拷贝部分代码如下:
if(curBuf!=20)
{ memcpy(outBufs->bufs[curBuf], inBufs->bufs[curBuf+1], minSamples);}
else
{ memcpy(outBufs->bufs[curBuf], inBufs->bufs[curBuf], minSamples);}
/*memcpy(outBufs->bufs[curBuf], inBufs->bufs[curBuf++], minSamples+1);*/
GT_1trace( curTrace, GT_2CLASS, "VIDDECCOPY_TI_process> "
"Processed %d bytes.\n", minSamples );
最后生成的APP可执行文件,并没有实现所需测试结果(即第20个数据复制第21个输入数据),而是还是完整的一对一拷贝,很是奇怪,为什么修改了源码运行结果却不能改变
Chris Meng:
Xu Bin,
能否添加一些打印,看看修改是否成功? 或者加一下打印,看一下curBuf的值,看一下是否有跳转你修改的分支?
bin xu7:
回复 Chris Meng:
如你所说,我在编码程序videnc_copy中修改代码如下:
if(curBuf<=5) {printf("control sucessful"); memcpy(outBufs->bufs[curBuf], inBufs->bufs[curBuf], minSamples);}
输出并没有打印出信息,而且遇到的另一个问题是输入in.dat为3KB,输出的out.dat为2KB的情况,如果用DVSDK自带的128 in.dat文件则能完整复制,程序不是能自动能检测输入大小的吗,调试用的3KB in.dat为一列向量,个数为684,顺序按1~255排列,超过255的索引仍未255,能提供一下问题大概可能出错在哪里的思路吗?