Hi Folks,
Here's a tip if anyone's trying to play back 1080p video content on a 1080p (1920x1080) display or TV with the 11.09 Linux BSP release. Without the modification I describe below, playing 1080p video on a high resolution display would result in a kernel crash when playing the video full screen (although lower resolution video, or 1080p content played on a lower resolution display worked fine).
First if you're using the Ubuntu rootfs you'll want to update the using .deb files in the 11.09 images and codec releases available on the mx53 page on freescale.com. Just copy to the same directory on your rootfs and execute:
sudo dpkg --force-architecture -i *.deb
depmod
Note there was one of the codec packages I had issues with that wouldn't install until I removed the old version. Can't remember which one, but if you run into this, just remove the package using dpkg -r.
Next you'll need to rebuild the kernel to increase the DMA memory zone size used by the video decoder in the kernel config menu from 96 to 184.
[*] Configure the kernel
System Type --->
Then you will see (96) DMA memory zone size, click on that line and enter 184.
Note before you run ltib and select configure the kernel, you’ll need to edit one of the Kconfig files to increase the max size for the DMA zone, otherwise you’ll get an error in ltib when you try to increase to greater than 96.
If you don’t yet have the kernel source in your ltib directory (i.e. if a fresh install), do the following:
./ltib –m prep –p kernel
Then in rpm/BUILD/linux-2.6.35.3/arm/plat-mxc/Kconfig near line 88, modify the following lines:
config DMA_ZONE_SIZE
int "DMA memory zone size"
range 0 96
default 24
help
This is the size in MB for the DMA zone. The DMA zone is used for
dedicated memory for large contiguous video buffers
as follows:
config DMA_ZONE_SIZE
int "DMA memory zone size"
range 0 184
default 24
help
This is the size in MB for the DMA zone. The DMA zone is used for
dedicated memory for large contiguous video buffers
Then run ltib and configure the kernel as above.
After this, flash your new kernel to your SD card and you should be good to go.
Note I used the below kernel command line in u-boot for a 1080p television connected to the QSB using the HDMI adaptor:
console=ttymxc0,115200 video=mxcdi0fb:RGB24,1920x1080M@60 hdmi di0_primary dmfc=3 root=/dev/mmcblk0p1 rw rootwait gpu_memory=128M
Hi Matt,
thank you for this excellent fix! Freescale support themself sent me to your thread the day after you published it, but it took me so long to finally try it myself.
I still don't get what exactly is going wrong because even without increasing the amount of DMA memory with your solution, 1080p files could still be played if a non-1080p file was played before. Only in case the 1080p video was played as the first video after boot, the crash happened.
However, I am glad this problem is found, and now I will start to figure out how synchronisation works, if I find out where LTIB leaves the gstreamer plugin sources... :-)
Thanks again for your work!
Wolfgang