Hi All,
I have written an omx application using SDK 5.02 for the DM8168 that is designed to display 1024x1024 frames of video on the HDMI output. The app is loosly based on the decode_display sample code.
The app uses the Scalar and Display OMX components. YUV420SP video is provided to the Scalar via one of the SATA interfaces. The scalar converts this video to YUV422 format. I have verified that this is working. The scalar provides this video to the display component. The application has a display processing thread that calls OMX_EmptyThisBuffer on the display input port when frames are available on the scalar output port. However, the Empty Buffer Done callback function is never called. I have tried many experiments but I cannot determine why the callback function is not being called. I wonder if anyone has had this issue or if any debugging suggestions?
The source code is attached.
The program output is as follows:
OMX initialized
Enter Video_Display_Example
OMX.TI.VPSSM3.VFPC.INDTXSCWB component created
Got Event! Enable/Disable Event
Got Event! Enable/Disable Event
Scaler ports enabled
OMX.TI.VPSSM3.VFDC component created
OMX.TI.VPSSM3.CTRL.DC component created
Got Event! Enable/Disable Event
Display component input port enabled
Got Event! State changed to: OMX_StateIdle
Scaler state -> IDLE
Got Event! State changed to: OMX_StateIdle
Display control state -> IDLE
Got Event! State changed to: OMX_StateIdle
Display state -> IDLE
Got Event! State changed to: OMX_StateExecuting
Display Control state -> EXECUTE
Got Event! State changed to: OMX_StateExecuting
Display state -> EXECUTE
Got Event! State changed to: OMX_StateExecuting
Scaler state -> EXECUTE
DISPLAYING VIDEO.
Starting DisplayInputThread
Starting ScalerOutputThread
ScalerOutputThread: Calling OMX_FillThisBuffer for buffer 0x12e2e0
Starting ScalerInputThread
Starting LiveThread
ScalerOutputThread: Calling OMX_FillThisBuffer for buffer 0x12e340
ScalerOutputThread: Calling OMX_FillThisBuffer for buffer 0x12e3a0
ScalerOutputThread: Calling OMX_FillThisBuffer for buffer 0x12e400
ScalerOutputThread: Calling OMX_FillThisBuffer for buffer 0x12e460
ScalerInputThread: Calling OMX_EmptyThisBuffer for buffer 0x12e160
IL_ClientCbEmptyBufferDone: scalar in buffer (0x12e160)
IL_ClientCbFillBufferDone: scaler out buffer (0x12e2e0)
DisplayInputThread: Calling OMX_EmptyThisBuffer for buffer 0x12e2e0
ScalerInputThread: Calling OMX_EmptyThisBuffer for buffer 0x12e1c0
IL_ClientCbEmptyBufferDone: scalar in buffer (0x12e1c0)
IL_ClientCbFillBufferDone: scaler out buffer (0x12e340)
DisplayInputThread: Calling OMX_EmptyThisBuffer for buffer 0x12e340
ScalerInputThread: Calling OMX_EmptyThisBuffer for buffer 0x12e220
IL_ClientCbEmptyBufferDone: scalar in buffer (0x12e220)
IL_ClientCbFillBufferDone: scaler out buffer (0x12e3a0)
DisplayInputThread: Calling OMX_EmptyThisBuffer for buffer 0x12e3a0
ScalerInputThread: Calling OMX_EmptyThisBuffer for buffer 0x12e280
IL_ClientCbEmptyBufferDone: scalar in buffer (0x12e280)
IL_ClientCbFillBufferDone: scaler out buffer (0x12e400)
DisplayInputThread: Calling OMX_EmptyThisBuffer for buffer 0x12e400
ScalerInputThread: Calling OMX_EmptyThisBuffer for buffer 0x12e160
IL_ClientCbEmptyBufferDone: scalar in buffer (0x12e160)
IL_ClientCbFillBufferDone: scaler out buffer (0x12e460)
DisplayInputThread: Calling OMX_EmptyThisBuffer for buffer 0x12e460
ScalerInputThread: Calling OMX_EmptyThisBuffer for buffer 0x12e1c0
ScalerInputThread: Calling OMX_EmptyThisBuffer for buffer 0x12e220
ScalerInputThread: Calling OMX_EmptyThisBuffer for buffer 0x12e280
ScalerInputThread: Calling OMX_EmptyThisBuffer for buffer 0x12e160