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.

Modified DVEVM6446 to accept Component Video Input

Expert 1130 points
Other Parts Discussed in Thread: TVP5146


I modified the DM6446 EVM video inputs to accept component video inputs. We've modified these files in order to configure the TVP5146 for component video:
 
/lsp/ti-davinci/include/media/davinci/tvp5146.h
/lsp/ti-davinci/drivers/media/video/davinci/tvp5146.c
/lsp/ti-davinci/drivers/media/video/davinci/davinci_vpfe.c
 
When I try to capture video using the demo app ">/opt/dvsdk/dm6446/encode -v video_enc.264 -s audio_enc.g711 -t 20" I get a message that no video was detected. The videocfg boot environment variable is currently set to:
 
sendln 'setenv videocfg video=davincifb:osd0=720x480x16,1350K:osd1=720x480,1350K:vid0=720x480,2025K:vid1=720x480,2025K davinci_enc_mngr.ch0_output=COMPOSITE
davinci_enc_mngr.ch0_mode=NTSC'
 
I'm using the video output RCA jacks  for the component video input which prevents us from having a composite video output, but we do have S-Video output. I changed the the videocfg bott variable to:
 
sendln 'setenv videocfg video=davincifb:osd0=720x480x16,1350K:osd1=720x480,1350K:vid0=720x480,2025K:vid1=720x480,2025K davinci_enc_mngr.ch0_output=SVIDEO davinci_enc_mngr.ch0_mode=NTSC'
 
We added two #define statements to tvp5146.h
 
/* analog muxing mode */
#define TVP5146_AMUX_COMPOSITE  0
#define TVP5146_AMUX_SVIDEO     1
#define TVP5146_AMUX_RGB        2
#define TVP5146_AMUX_YPRPB      3
 
My question is there a davinci_enc_mngr.ch0_input to change the input similar to the davinci_enc_mngr.ch0_output? Do I have to make changes to the kernel configuration to build the image? I'm concerned that the kernel config is not passing the right variable for the configuration we need.
 
Have we made all the changes we need to make this work?
 
Mike

  • Mike,

    AFAIK, the command line parameters are for the output modes and none of them relate to the capture mode. For capture, needing to select a particular video capture interface and the standard is done by the V4L2 driver and not through any boot line params. If you are sure that the kernel level changes for component video input are clear, then I suppose there would be some hardware issue which is causing your signal not to be detetced at the capture interface!

  • Mike,

    Please confirm my understanding of your system:  You took one of our standard DM6446 EVMs and modified the hardware to use some RCA jacks as video input instead of output; this allows you to provide component video input into the EVM.

    If the above is correct, then you would certainly need to change the TVP5146 driver to accept component input and also change V4L2 driver to accept component input.  From the list of files you posted above, it appears you are moving in this direction.

    To answer you other question, at the video input interface we use "davinci_capture.device_type" in bootargs to determine the type of video input; for example "davinci_capture.device_type=1" tells driver tvp5146 is the input source and BT.656 is assumed by driver; this is the only "device_type" supported in DM6446, but we do support another device_type on DM355 that allows for RAW video capture.  If you want something other than BT.656 video input, you will need to modify the driver (if you have not done so already) to accept the correct video input format.  This can be a significant effor as it requires much more than just changing #defines in header file; you need to become very familiar with the V4L2 driver architecture  (PSP docs included in DVSDK may help).  There are many ways you can do this (add private ioctl, add new device_type, simply hardcode what you need...) and this becomes more of a software architecture question.