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.

RGB24 Capture and encode question on EVM8168

Hi,

I need an advise for trying following on EVM.

I need to capture RGB24 data and display it on graphics plane and simultaneously encode it.

So here my questions :

1. What is the best way of doing RGB24 to YUV420 CS conversion ? I know that 8168 doesn't have dedicated hardware for CS  but it can be done in VIP port on input , but I don't want to do it there as I need to display raw RGB24 data on graphic port. Can SGX530 accelerate these , I saw some examples on YUV2RGB but can it handle RGB2YUV CS conversion ? Can you please point me to the right doc ?

2. I thought to try to do v4l2 RGB24 capture and then copy userptr data aside using EDMA transfer , display RGB on graphics plane and convert copied data to YUV for encoding. What is the most efficient way of doing it ?

I don't want to capture YUV and then convert it to RGB and display it as I will have problems on these double conversion like colors offsets and delays.

Please Advise

Vladik

  • Vladik,

    You can capture RGB data into memory and use memory to memory path in order to implement memory to memory conversion using HDVPSS.

    Currently the SW does not support this option.

    Regards,

    Yair

  • Hi,

    Here is the way,

    VIP capture supports RGB to YUV and vice versa conversion. So you can enable dual output from VIP. One output can be YUV and other can be RGB. RGB out you can send to grpx and YUV to encode. But dual output is available only on M3 media controller binary. So you will have to use Openmax VFCC and EZSDK to achieve this. This is very high level feasibility. You may find some openmax components missing to achieve this like VFDC for grpx. So in that case you need to use fbdev from Linux to display RGB.

    Second is convert RGB to YUV420 using V4L2 capture driver, and display YUV using V4L2 display and encode it using openmax VENC component.   This seems to be much simpler option.

    Regards,

    Hardik Shah

  • Hi Hardik,

    Regarding second option , I don't want to convert RGB24 to YUV420 and display it as I will loose in conversion.

    Is there an option to use YUV444 in v4l2 ?

    Regarding the first option so from what I get I need following :

    1. Modify VFCC code in M3 to output 2 ports . One RGB and One YUV

    2. Add new OMX component like VFDC that will work with frame buffer directly

    Can I use memory from OMX in frame buffer directly without a copy ? Much like userptr in v4l2 ?

    Thank You,

    Vladik

  • Most the TMS320 DSPs include a TMS320 Chip Support Library (CSL) which is an API used to control the peripherals. However, since the philosophy for the DaVinci was to allow the ARM/Linux side to control the peripherals via Linux drivers, support for the CSL on the DM644x (dual core ARM/DSP) is not currently available for the DSP.