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.

在dm385 ipnc_rdk3.8平台上,将UV分量赋值给pFrame->addr[0][1]?



你好,我现在在做解码回放图片的功能,需要解码*.bmp文件。

 在dm385 ipnc_rdk3.8平台上,在A8侧将*.bmp图片文件解码获得YUV数据。

使用消息队列将YUV数据发送到M3侧,  现在想将YUV数据直接赋给displayLink送显,所以将M3侧获得的YUV数据传递到displayLink_drv.c文件中,  观察代码将Y数据赋值给pFrame->addr[0][0]:  

  pFrame->addr[0][0] = (Ptr)((UInt32)pFrame->addr[0][0] + pInChInfo->startY * pitch0 + pInChInfo->startX);   

   将UV分量赋值给pFrame->addr[0][1]:

  pFrame->addr[0][1] = (Ptr)((UInt32)pFrame->addr[0][1] + pInChInfo->startY * pitch1/2 + pInChInfo->startX);  

  问题1:发现采集--显示 图像分辨率为720x576,为什么在这里行宽pitch0和pitch1都为896?

   问题2:在这里我能够直接将Y分量数据传递给pFrame->addr[0][0],能够显示Y分量的数据。给pFrame->addr[0][1]传递UV数据的时候图像就错开了,请问给pFrame->addr[0][1]传递UV数据时,这里UV是如何排列的?    

 问题3:我这种方案是否可行?

  • 你好,我现在在做解码回放图片的功能,需要解码*.bmp文件。

     在dm385 ipnc_rdk3.8平台上,在A8侧将*.bmp图片文件解码获得YUV数据。使用消息队列将YUV数据发送到M3侧,  现在想将YUV数据直接赋给displayLink送显,所以将M3侧获得的YUV数据传递到displayLink_drv.c文件中,  观察代码将Y数据赋值给pFrame->addr[0][0]:

       pFrame->addr[0][0] = (Ptr)((UInt32)pFrame->addr[0][0] + pInChInfo->startY * pitch0 + pInChInfo->startX);   

       将UV分量赋值给pFrame->addr[0][1]:

      pFrame->addr[0][1] = (Ptr)((UInt32)pFrame->addr[0][1] + pInChInfo->startY * pitch1/2 + pInChInfo->startX);  

     

      问题1:发现采集--显示 图像分辨率为720x576,为什么在这里行宽pitch0和pitch1都为896?  

     

     问题2:在这里我能够直接将Y分量数据传递给pFrame->addr[0][0],能够通过监视器查看显示Y分量的数据。给pFrame->addr[0][1]传递UV数据的时候图像就错开了,请问给pFrame->addr[0][1]传递UV数据时,这里UV是如何排列的?    

    问题3:我这种解码图片送显的方案是否可行?

  • zhimin wei 说:
     问题1:发现采集--显示 图像分辨率为720x576,为什么在这里行宽pitch0和pitch1都为896?  

    为了做VTNF做了patch

    zhimin wei 说:
     问题2:在这里我能够直接将Y分量数据传递给pFrame->addr[0][0],能够通过监视器查看显示Y分量的数据。给pFrame->addr[0][1]传递UV数据的时候图像就错开了,请问给pFrame->addr[0][1]传递UV数据时,这里UV是如何排列的?

    在DM385的YUV420sp中,uv的排列是交织在一起的,uvuv。。。

    zhimin wei 说:
    问题3:我这种解码图片送显的方案是否可行?

    bmp有RGB三个分量,是否需要使用pFrame->addr[0][2]? 请注意,只有graphic是支持rgb的。

  • 你好,

         我还想问一下,1.在这里给pFrame->addr[0][0]赋值Y分量数据是直接传递8位的Y分量数据,还是需要将8位的Y分量数据做移位的操作转化为32位传递过去?

          UV交叉排列后,数据也是一样的传递吗?

         

          2.我是将*.bmp文件中的RGB数据转化为了YUV数据,再分别传递给pFrame->addr[0][0和pFrame->addr[0][1]的,发现在此处的代码是4个Y共用一对UV数据不知道对不对?就是第一行的两个Y和第二行的两个Y共用一对UV是这样吗?

  • 你好,还有在这里发现Y分量数据和UV分量数据分别是分为两场存放的,是需要将Y分量的奇数行赋值给pFrame->addr[0][0],偶数行赋值给pFrame->addr[1][0]吗?

       同样UV分量也是分为两场存放的吗? 奇数行存放在pFrame->addr[0][1] ,,而偶数行存放在pFrame->addr[1][1]里面吗?求解释?谢谢

  • zhimin wei 说:

    你好,

         我还想问一下,1.在这里给pFrame->addr[0][0]赋值Y分量数据是直接传递8位的Y分量数据,还是需要将8位的Y分量数据做移位的操作转化为32位传递过去?

          UV交叉排列后,数据也是一样的传递吗?

         

          2.我是将*.bmp文件中的RGB数据转化为了YUV数据,再分别传递给pFrame->addr[0][0和pFrame->addr[0][1]的,发现在此处的代码是4个Y共用一对UV数据不知道对不对?就是第一行的两个Y和第二行的两个Y共用一对UV是这样吗?

    建议你看看文档里面YUV420sp的描述。你的理解基本正确。

  • zhimin wei 说:

    你好,还有在这里发现Y分量数据和UV分量数据分别是分为两场存放的,是需要将Y分量的奇数行赋值给pFrame->addr[0][0],偶数行赋值给pFrame->addr[1][0]吗?

       同样UV分量也是分为两场存放的吗? 奇数行存放在pFrame->addr[0][1] ,,而偶数行存放在pFrame->addr[1][1]里面吗?求解释?谢谢

    如果是逐行数据,只要配置一场数据的信息就可以了,另外一场不用填写。