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 RDK video detect status per channel

Other Parts Discussed in Thread: TVP5158

hi,

I am working on the DM8618 using RDK framework (new Version 3.5), and i would appreciate your help with VIP video detect status per channel feature,

i have noticed that the RDK has the following options:

  • Video per port detection (using the DEMO debug prints) - i got the following lines:

 

 [m3vpss ]  VIP0 : FIQ_STATUS  : 0x4810551c = 0x00000000

 [m3vpss ]  VIP1 : FIQ_STATUS  : 0x48105a1c = 0x00000000

however, it shows that bit 0/1 that should indicates the status ,are the same if connect video in channels or not, is there a known bug relate to it? , or i do not understand the bit functunality?

  • Vcap_getVideoSourceStatus() function helps a lot but it is only when using TVP5158 (external video decoder) and we are using FPGA that simulates it.
  • using the "IOCTL_VPS_CAPT_GET_CH_STATUS" that has an integer 'isVideoDetected' , however this does not affect if we disconnect the video and it only " counts the frames for all ports as well even if no video is connected to a specific channel.

so as i see it i do not have any internal option to detect video in real time per channel (like the TVP does) - is that correct?

thanks in advance,

Amir Gatt

 

 

 

  • Hi,

     

    Bit 0/1 provides connection status when input is in line mux mode, for other modes, these bits are not used. I think the better way is to get this status from your decoder. If the decoder does not provide the connection status, you could have mechanism like if you don't get any frames lets say for 100ms, you assume that input is disconnected and take actions accordingly.

     

    Regards,

    Brijesh Jadav

  • hi Brijesh,

    thanks for the quick response, I do understand better now the functionality of the status bit that you have referred to, unfortunately it is not fit for our needs.

    you have mentioned a mechanism that if it "don't get any frames lets say for 100ms", how can I tell that it did not get frames for 100ms?

     

    thanks

    Amir

  • Hi Amir,

     

    Currently this is not supported in the capture link, you will need to add it. If capture link does not get any buffers back from the driver for lets say 100ms, you assume that decoder is disconnected. Again, this also depends on whether your decoder stops giving output when cable is not connected. If it still outputs during disconnection status, this method cannot be used.

     

    Regards,

    Brijesh Jadav

     

    Regards,

    Brijesh Jadav

  • HDVPSS capture driver has an API IOCTL_VPS_CAPT_GET_CH_STATUS.You can pass the Vps_CaptChGetStatusArgs.frameInterval to the time required and if no new frame is received in that channel for the specified timeinterval  x 2,  Vps_CaptChStatus.isVideoDetected is set to FALSE.Pls refer

    /dvr_rdk_hdvpss/packages/ti/psp/vps/vps_capture.h for API documentation

     

    This s/w logic inside the driver based on timestamp of last received frame and doesnt rely of HDVPSS VDET status bit so should work for all configurations.

    You will have to modify the captureLink to add a link control cmd to involke this HDVPSS IOCTL

  • Hi Badri,

    I tried using this IOCTL, however I noticed that it relys on the parameter "pChObj->lastFrameTimestamp" ,

    I have printed it and saw that:

    1. It is update to all channels in the port.
    2. no matter if video is connected or not, it shows that video frames are received even if I disabled the channel at the demo.

    so maybe I don't know how to activate it properly or maybe it is not doing what it should - can you please assist?

    thanks,

    Amir

  • It appears the external video decoder is sending frames to VIP irrespective of video actually being detected. In this case VIP has no way of knowing whether the frames being received are real frames or being generated. I understand in your case , capture advanced statictis (Printed as part of Vsys_printDetailedStatistics()) also increments captured frame count even though no video is detected. Can you check the external video decoder configuration to check if it is configured to generate frames irrespective of actual video being detected.

  • Decoders typically will have a way of checking connection status of the input or way of stop sending output when input is not connected. check your decoder, one of these should be available and help you out.

     

    Regards,

    Brijesh Jadav

  • hi Badri,

    i am using the UDWORKS DVR with RDK 3.5 which includes the TVP5158 as an external decoder, i looked for the option of stopping the video frames in case no actual video is received and i couldn't find any, could you point me to the that parameter?

    thanks

    Amir

  • Hi Amir,

     

    It does not do it automatically. We need to detect the status of the input video and stop the output. You could stop the output by resetting output enble bits in the register at the offset 0xB2.

     

    Regards,

    Brijesh Jadav

  • Hi Brijesh,

    that for pointing me out to this bit inteh register, however i see that this bit is per port and not per channel, is there a way of stopping the video per channel?

     

    thanks,

    Amir

  • Hi Amir,

     

    As far as i know, no, i don't think there is any way to stop each channel. Even in Video port, we cannot stop each channel, we have to stop complete port.

     

    Regards,

    Brijesh Jadav