在DM642的示例程序中加了一段进行反 {MOD}处理的代码,但是显示出来之后会有视频亮线,如果直接对整幅图像循环处理,在显示的时候图像会乱序抖动闪烁,有前辈说是因为要分奇数场和偶数场来进行处理,但是不知道缓冲区中那些行是奇数行哪些是偶数行,代码应该如何修改,求助大神,一下为部分代码
while(1){/* loop for 4 seconds */ capFrameBuf= (FVID_Frame *)SCOM_getMsg(fromInput1toDIS, SYS_FOREVER); /* copy data from capture buffer to display buffer */ /***************************************************/ for(i = 0; i < numLines; i ++) { DAT_copy(capFrameBuf->frame.iFrm.y1 + i * capLinePitch, disFrameBuf->frame.iFrm.y1+ i * disLinePitch, numPixels); DAT_copy(capFrameBuf->frame.iFrm.cb1 + i * (capLinePitch >> 1), disFrameBuf->frame.iFrm.cb1 + i * (disLinePitch >> 1), numPixels>>1); DAT_copy(capFrameBuf->frame.iFrm.cr1 +i * (capLinePitch >> 1), disFrameBuf->frame.iFrm.cr1 + i * (disLinePitch >> 1), numPixels>>1); } //自己加的代码开始 for(i=200;i<400;i++) { for(j=200;j<400;j++) { *(Uint8*)((Uint32)(disFrameBuf->frame.iFrm.y1)+i*numPixels+j)=0xFF- *(Uint8*)((Uint32)(disFrameBuf->frame.iFrm.y1)+i*numPixels+j); } for(j=100;j<200;j++) { *(Uint8*)((Uint32)(disFrameBuf->frame.iFrm.cb1)+i*(numPixels>>1)+j)=0x80; *(Uint8*)((Uint32)(disFrameBuf->frame.iFrm.cr1)+i*(numPixels>>1)+j)=0x80; } } //自己加的代码结束 /*-----------------------------------------------------------*/ /*Display the decoded frame. */ /*-----------------------------------------------------------*/ DAT_wait(DAT_XFRID_WAITALL); CACHE_clean(CACHE_L2ALL,NULL,NULL); FVID_exchange(disChan, &disFrameBuf);
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
理解一下。
一周热门 更多>