AnsweredAssumed Answered

IMX6 VPU OpenMaxIL Decoder

Question asked by kushal kunigal on Mar 1, 2016
Latest reply on Mar 3, 2016 by kushal kunigal

Hey Guys

 

I have just enabled the VPU Decoder for our Webrtc/ Opentok based Video chat application.

 

There are couple of issues Im trying to debug:

 

1. The color format: Although Im able to distinguish objects on the screen, the image appears to be in grayscale with green vertical lines. Opentok expects an output format of YUV420Planar. and I have a programmed the output port with the same.

2. Huge latency of 8s between the expected and actual. below is the logs, for some reason i suspect the frames are being skipped because the output buffer is not draining fast enough, below are the logs:

 

If you are familiar with the Openmax IL Architecture, the time between

 

I/OMXPlayer(  129): OMX.Freescale.std.video_decoder.vp8.hw-based EmptyBuffer 0x78c8b0c8.

 

and

 

 

E/ACodec  ( 1064): [OMX.Freescale.std.video_decoder.vpx.hw-based] onOMXFillBufferDone 0x78c6e9e8 time2125102309 us, flags = 0x00000000

 

I/ACodec  ( 1064): frame PTS 2125102309: 8033

 

As seen above: The complete Decoding cycle for a given frame is roughly 6-8 ms, which should be decent enough for streaming 1080p at 30fps?

 

I see that a lot of the frames are getting skipped:

 

I/OMXPlayer(  129): LEVEL: 1 FUNCTION: OMX_ERRORTYPE VideoFilter::ProcessInputBuffer() LINE: 585

I/OMXPlayer(  129): Filter In port has #0 buffers.

I/OMXPlayer(  129): LEVEL: 1 FUNCTION: OMX_ERRORTYPE VideoFilter::ProcessOutputBuffer() LINE: 642

I/OMXPlayer(  129): Filter Out port has #4 buffers.

I/OMXPlayer(  129): LEVEL: 1 FUNCTION: virtual OMX_ERRORTYPE VideoFilter::ProcessDataBuffer() LINE: 424

I/OMXPlayer(  129): ProcessDataBuffer

I/OMXPlayer(  129): LEVEL: 1 FUNCTION: OMX_ERRORTYPE VideoFilter::ProcessInputBuffer() LINE: 585

I/OMXPlayer(  129): Filter In port has #0 buffers.

I/OMXPlayer(  129): LEVEL: 1 FUNCTION: OMX_ERRORTYPE VideoFilter::ProcessOutputBuffer() LINE: 642

I/OMXPlayer(  129): Filter Out port has #4 buffers.

I/OMXPlayer(  129): LEVEL: 1 FUNCTION: virtual OMX_ERRORTYPE VideoFilter::ProcessDataBuffer() LINE: 424

I/OMXPlayer(  129): ProcessDataBuffer

I/OMXPlayer(  129): LEVEL: 1 FUNCTION: OMX_ERRORTYPE VideoFilter::ProcessInputBuffer() LINE: 585

I/OMXPlayer(  129): Filter In port has #0 buffers.

 

my initial suspicion was that the OMX Component was not prioritized, but looks like working fine.

What would be your initial thoughts. Why does it say Filter In Port has #0 buffers, although the frames are arriving at 30 FPS.

 

any inputs really appreciated here:

 

Thanks

Kushal

Outcomes