This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM8168 视频 raw data操作问题



TI技术专家,你好

     我尝试着去更改视频采集驱动获得的raw data时,碰到了一个很奇怪的问题,希望能得到您的帮助。具体如下:

     1. 设置前端采集参数为 1920*1080, RGB_888。

     2.通过调用 FIVD2_dequeue(pObj->fvidHandleVipAll, &frameList, streamId, BIOS_NO_WAIT) 获得frameList

     3.遍历framelist,修改每个frame的raw data:

         for( frameId = 0; frameId < frameList.numFrames, frameId++ )

         {

                unsigned int  i, j, k;

                FVID2_Frame *pFrame = frameList.frames[frameId];

                volatile char* buf = pFrame->addr[0][0];

#if 1  //code 1

              for( i = 0; i < 1080; i++ )

             {

                 for( j = 0; j < 1920 * 3; j += 3 )

                {

                     k  = i * 1920*3 + j;

                    buf[ k + 0 ] = 0x00;

                    buf[ k + 1 ] = 0x00;

                    buf[ k + 2 ] = 0xFF;

               }

            }

   #else   //code 2        

             for( i = 0; i < 1080 * 1920 * 3; i += 3 )

             {

                  buf[ i + 0 ] = 0x00;

                  buf[ i + 1 ] = 0x00;

                  buf[ i + 2 ] = 0xFF;

             }

#endif

            ....................

         }

  

  理论上,code 1 和code 2是一样的,都是对frame的raw data数据进行修改而获得红色画面

  奇怪的是,code 1无法更改采集的raw data, 在监视器看到的还是真正的视频,但code 2却能修改raw data, 在监视器上能看到一幅纯红色的画面输出。

  我的问题是,code 1和code 2为何有这么大的差别, 另外,VPSS的Capture_drv获得的Raw Data可以通过pFrame->addr进行直接操作吗?

谢谢!