Another issue while developing IPTV player on MX53QSB...
I'm using libipu.so to convert decoder's output and to display it on the framebuffer. So the configuration is the following:
- ipu_lib_input_param_t: input width/height is the decoded frame's w/h, colorspace is YUV420, crop win is the entire frame;
- ipu_lib_overlay_param_t: no overlay is configured;
- ipu_lib_output_param_t: width/height is the output's w/h (scales up, and now I don't care the aspect ratio), output window's w/h matches the framebuffer's w/h;
mxc_ipu_lib_task_init(...) is being used in OP_STREAM_MODE.
mxc_ipu_lib_task_buf_update(...) is being used to display the decoded frame. This call receives the physical address where the decoder (vpu_DecStartOneFrame(...)) has put the most recent frame, so I don't memcpy(...) anything, just use the framebuffer allocted for the VPU decoder.
1) If I connect the Seiko LCD (800x480), decode full HD resolution video (1920x1080), a call to mxc_ipu_lib_task_buf_update(...) takes about 1-2 ms, which is excellent considering the fact the IPU has to convert the colorspace and scale the input down. Similarly, if 720x576 video is being played, the displaying times still remain lower than 1-2 ms;
2) If I connect an HD TV, use it through SII902x HDMI interface in 1920x1080 resolution, a call to mxc_ipu_lib_task_buf_update(...) takes about 45-50 ms. It's very long, since it limits the video framerate to ~20fps, which is far more from adequate. No matter if the input image is either 720x576 or 1920x1080, displaying is always slow like this;
In case of HD output and RGB565 framebuffer format, the data amount display on the LCD is ~768000 bytes, while on the HD TV ~4147000. The ratio is ~5.4, but IPU is far slower than this. What can be the reason? Out of bandwidth or CPU horsepower?
I've had a try with TVE output, got the same results.
How can I achieve 30 FPS in HD resolution with HD?
Any hints appreciated, thanks, regards,