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.

Change display id(DVO2) decode_display hang

Other Parts Discussed in Thread: TVP7002

Hi.

5706.loggerSM.log

ezsdk 5.05.02.00

psp : 4.04.00.02

we use a custom-board without tvp7002 and through FPGA display decode/encode.

I received HDMI data through th FPGA, display through HDMI and FPGA.

when played through hdmi in 1080p/720p/480p resolution it work well done.

The problem is that change 'display_id=1(DVO2) ' hang on semaphore pending for scaler component.

please advise what could be the problem.

thank you 

 

 

decode_display / ilclient.c

/******************************************************************************/
  eError =
    OMX_SendCommand (pAppData->pScHandle, OMX_CommandStateSet,
                     OMX_StateIdle, NULL);
  if (eError != OMX_ErrorNone)
  {
    printf ("Error in SendCommand()-OMX_StateIdle State set : %s \n",
            IL_ClientErrorToStr (eError));
    goto EXIT;
  }

  /* since decoder is connected to scalar, buffers are supplied by decoder to
     scalar, so scalar does not allocate the buffers. Howvere it is informed to
     use the buffers created by decoder. scalar component would create only
     buffer headers coreesponding to these buffers */

  for (i = 0; i < pAppData->decILComp->outPortParams->nBufferCountActual; i++)
  {

    eError = OMX_UseBuffer (pAppData->pScHandle,
                            &pAppData->scILComp->inPortParams->pInBuff[i],
                            OMX_VFPC_INPUT_PORT_START_INDEX,
                            pAppData->scILComp,
                            pAppData->decILComp->outPortParams->nBufferSize,
                            pAppData->decILComp->outPortParams->pOutBuff[i]->
                            pBuffer);

    if (eError != OMX_ErrorNone)
    {
      printf ("Error in OMX_UseBuffer()-input Port State set : %s \n",
              IL_ClientErrorToStr (eError));
      goto EXIT;
    }
  }
  printf (" Scalar input port use buffer done \n ");

  /* in SDK conventionally output port allocates the buffers, scalar would
     create the buffers which would be consumed by display component */
  /* buffer alloaction for output port */
  for (i = 0; i < pAppData->scILComp->outPortParams->nBufferCountActual; i++)
  {
    eError = OMX_AllocateBuffer (pAppData->pScHandle,
                                 &pAppData->scILComp->
                                 outPortParams->pOutBuff[i],
                                 OMX_VFPC_OUTPUT_PORT_START_INDEX, pAppData,
                                 pAppData->scILComp->
                                 outPortParams->nBufferSize);
    if (eError != OMX_ErrorNone)
    {
      printf ("Error in OMX_AllocateBuffer()-Output Port State set : %s \n",
              IL_ClientErrorToStr (eError));
      goto EXIT;
    }
  }

  printf (" scalar outport buffers allocated \n ");

  semp_pend (pAppData->scILComp->done_sem);

  if (eError != OMX_ErrorNone)
  {
    printf ("Error %s:    WaitForState has timed out \n",
            IL_ClientErrorToStr (eError));
    goto EXIT;
  }
  printf (" scalar state IDLE \n ");

I can't pass beyond semp_pend

  semp_pend (pAppData->disILComp->done_sem); 

  printf (" ctrl-dc state IDLE \n ");

input file: /720.h264
width: 720
height: 480
frame_rate: 30
gfx: fbdev disable
codec: h264
display_id: 1
 Decoder-Display example
===============================
 OMX_Init completed
 UIAClient is ready to send a UIA configuration command
UIAClient received UIA_CONFIGURE_ACK
UIAClient is done sending requests
UIAClient is ready to send a UIA configuration command
UIAClient received UIA_CONFIGURE_ACK
UIAClient is done sending requests
 opening file
 decoder compoenent is created
PADX: 32 PADY: 24
 level set is 12
 scalar compoenent is created
set input port params (width = 720, height = 480)
set output port params (width = 1920, height = 1080)
set number of channels
set input resolution
set output resolution
enable scalar input port
got eventEnable/Disable Event
enable scalar output port
got eventEnable/Disable Event
found handle 0x141068 for component OMX.TI.VPSSM3.VFDC
 got display handle
found handle 0x145070 for component OMX.TI.VPSSM3.CTRL.DC
Buffer Size computed: 4147200
set input port params (width = 720, height = 480)
setting input and output memory type to default
enable input port
got eventEnable/Disable Event
 connect call for decoder-scalar
  connect call for scalar-display
  decoder inport buffers allocated
  decoder outport buffers allocated
 got eventState changed to: OMX_StateIdle
 decoder state IDLE
  Scalar input port use buffer done
  scalar outport buffers allocated
 got eventState changed to: OMX_StateIdle
 scalar state IDLE
  • Hi aupers,

            I think that the display_id parameter was added to display to the LCD present in the DM8148-EVM, is the only place where I have tested it.

            Not sure which is the problem in your application but if your goal is to show the same content in both, HDMI and DVO2 you can try to tie the outputs and put you application to display just through HDMI, then the hw will handle the DVO2 display as well, something like:

    echo 0 > /sys/devices/platform/vpss/display0/enabled || true
    echo 0 > /sys/devices/platform/vpss/display1/enabled || true
    echo 0 > /sys/devices/platform/vpss/display2/enabled || true
    echo 5 > /sys/devices/platform/vpss/system/tiedvencs || true
    echo 2:hdmi,dvo2 > /sys/devices/platform/vpss/graphics0/nodes || true
    echo vcompmux:hdmi,dvo2 > /sys/devices/platform/vpss/video0/nodes || true
    echo 1 > /sys/devices/platform/vpss/display0/enabled || true
    echo 1 > /sys/devices/platform/vpss/display1/enabled || true
    echo 1 > /sys/devices/platform/vpss/display2/enabled || true

    Another option is to use gstreamer to do it, however we haven't tried capture 480p with the Ridgerun SDK, likely the omx_camera plugins needs some modifications but if you already have a pure OMX based application doing it, it should be pretty straight forward to port the changes to omx_camera.

    -David