Playing 1080p video on a 1080p panel

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Playing 1080p video on a 1080p panel

1,279 次查看
mdc
Contributor V

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

标签 (1)
0 项奖励
回复
2 回复数

845 次查看
WolfgangW
Contributor I

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

0 项奖励
回复

845 次查看
mdc
Contributor V

Correction, the path to the Kconfig file I mention above should be:

 

rpm/BUILD/linux-2.6.35.3/arch/arm/plat-mxc/Kconfig

 

Also, I attached the kernel I built in 11.09 with the above change in case that's helpful to anyone.

0 项奖励
回复