I've been trying to get real time FHD video transcoding to work on the imx6q using the var-som-mx6 board. However, although it works fine when the transcoding task is the only one running, it lags behind whenever I add my other tasks.
Using the mmdc profiling tool (About MMDC Profiling Tool for i.MX6 ) I've found that the memory bus load is the limiting factor for my transcoding scenario, which might be due to the fact that only one channel of the memory is used. When just running the transcoding task, the bus load hovers around 70 - 75% (BTW, is that normal?), and when I add more tasks, this increases to around 85% and the transcoding starts lagging behind at a rate of 5 seconds a minute (so after 1 minute, only 55 seconds have been transcoded, etc. ).
Running the non transcoding tasks alone gives a bus load of 35%, but the transcoding still lags behind (by 1 - 3 seconds a minute) even if I cut it down to 10 - 15%, which I wouldn't expect. It seems like I basically can't run any tasks that needs even somewhat frequent memory access.
Would be great to hear if my results are unexpected, and what level of bus loads I should expect to be able to utilize on top of what's needed for the transcoding. Also, I would love to get some general advice on how to reduce the bus load used by my tasks (maybe this is a common problem faced by imx6 users?), although I do realize it's going to depend mostly on the specific applications.
This is the gstreamer pipeline I use for transcoding: