• 1
  • 2
  • 3
  • 4(current)
  • 5
  • 6
  • 39
[i.MX6] XBMC running on Freescale SoC's
#46
Regarding sound I will re-test on Xubuntu later tonight.

To get sound working there was a change made to the kernel source. There was also a uboot change for vpu support. I think you will have both fixes in your build.
More A10/GK802/I.MX6 stuff on my blog
Reply
#47
Hi mtx,

Thanks a lot for the links.
Yes I currently have both fixes in my build.
Besides I was aware of the commit for the kernel and I tried with and without it with the same result ...

I am dubious : If you really get sound on your device I would definitively suspect different hw revisions of this gk802 device


Stéphan
Reply
#48
Hi Stéphan,

I did some further tests with Xubuntu, if I don't set the display resolution by not passing 'video = mxcfb0:dev=hdmi,1280x720M@60,if=RGB24' to the kernel (via uboot) and instead let the kernel detect (EDID) the TV resolution then sound works fine. If I try to set the resolution via uboot then no sound, I think the kernel doesn't deal with passing the video mode correctly.
More A10/GK802/I.MX6 stuff on my blog
Reply
#49
Hi

Very interesting remark ! Thanks a lot : it really helps ...
Unfortunately for some reason it seems that the EDID is not properly retrieved on my screen (/sys/devices/platform/mxc_hdmi/edid returns only 0x00) ...
Arghhh
Anyway you point me the right direction for my investigations and I thank you a lot for this ...

Regards
Stéphan

Edit : OK thanks to your hint I know why I don't get sound and I should solve this very easily now with a little patch
Edit : Thats it ! My patch did the job (and will also enable sound when you force resolution from kernel parameters in 720p or 1080p)

In case it can be useful to others : The patch is here
Reply
#50
Because of the impressive improvement you are making, this thread has been promoted to the Development section.

Keep up the good work guys Smile
Reply
#51
Hi Stéphan,

Are you compiling native (on the GK802) or cross compiling?
More A10/GK802/I.MX6 stuff on my blog
Reply
#52
Hi mtx,

- I cross compile when I develop for my image (using the toolchain built with yocto)

- Yet for the ubuntu build, I compiled natively : Well sort of ...
In fact I used qemu user emulation and binfmt module to chroot and use your ARM ubuntu RFS image and compile on my x86 based development computer ...

Regards
Stéphan
Reply
#53
Hi all,

To celebrate the promotion to the Development section, I have just setup a sdcard image to demonstrate the current state of the implementation.
You can download it from here
It is a compressed (by xz) full raw image for a 8MiB sdcard.
Extract it and copy it on a sdcard with dd util on linux or *bsd or with win32 disk imager on windows

It will directly boot my work in progress XBMC build with support for iMX VPU
I have enabled debug info so that you can watch the CPU load and the fps
There is sample in videos -> files (the big buck bunny movie)

So you can get an overview...

Unfortunately for now, I have not integrated a program to setup network from xbmc
If you really want to setup network (in fact, it works perfectly both with wifi and with USB->Ethernet adpaters) you will have to connect on the console using the serial line available on the header (on the border of the PCB when you open the device) You need serial TTL->USB adapter for this approach. If you don't understand what I speak about, don't try this hard way for configuring network : soon a polished packaged version may be available lol..

At last, be careful about your gk802 core temperature : Even if I have taken care of enabling dirty regions and of disabling RSS feed to reduce VPU and CPU loads and so temperature, I would recommend to attach some kind of additional heatsink to the case of your device (On my own device with such a heatsink I don't go beyond 80°C while using xbmc which is ok )

Best regards
Stephan

EDIT : If you try to connect on the serial console, use root/xbmcpoc as login/password...

Additional note : The video output is set to 1920x1080@60 so you have to plug the device on a 1080p screen to get it to work.
It does not uses automatic resolution detection by EDID because it simply does not work at all for recent GK802 devices which are unable to read the EDID on the dedicated I2C bus.
In spite of the video being set, HDMI sound properly works...
Reply
#54
Thats good progress you have made
Reply
#55
(2013-05-15, 23:13)wolfgar Wrote: Hi mtx,

- I cross compile when I develop for my image (using the toolchain built with yocto)

- Yet for the ubuntu build, I compiled natively : Well sort of ...
In fact I used qemu user emulation and binfmt module to chroot and use your ARM ubuntu RFS image and compile on my x86 based development computer ...

Regards
Stéphan

Hi Wolfgar,
I tried to compile the xbmc on mtx's xubuntu build by using your source package, using following configure parameters:

./configure --prefix=/imx6/xbmc --disable-vdpau --disable-vaapi --disable-openmax --enable-neon --enable-udev --disable-gl --enable-gles --enable-imx

but got following error:

CPP xbmc/windowing/egl/EGLNativeTypeAmlogic.o
In file included from /usr/include/linux/fb.h:5:0,
from EGLNativeTypeAmlogic.cpp:27:
/usr/include/linux/i2c.h:126:7: error: multiple types in one declaration
/usr/include/linux/i2c.h:126:7: error: declaration does not declare anything [-fpermissive]
make[1]: *** [EGLNativeTypeAmlogic.o] Error 1
make: *** [xbmc/windowing/egl/windowing_egl.a] Error 2

Do you have any ideas?

I tried both the source imx6 branch from github and the source package you provided in this thread, no luck either way. Seems there is always something wrong with the EGL things...
Reply
#56
Hi viumdem,

Please be aware that the source package and github are not the same thing:

The source package was an attempt to compile an xbmc version which integrates gstplayer (this package should compile : Well I know it compiles as I compiled it and you have everything in the package : both the source but also the config logs, and the objects and binaries which were built)
But it does not work : For some reason gstreamer closed demuxer by freescale crashes when gstreamer is launched by gstplayer...

On the other side, my work on github is an attempt to add support for imx vpu to dvdplayer. Please be aware that a new branch is a better candidate for build today : "imx6-ts"
also the option "--enable-imx" was replaced by "--enable-codec=imxvpu" for configure as it was pointed by a core xbmc developer that it should be done that way now...

A last precision before answering to your main question : Don't expect a perfect player for now and expect a few troubles as my first personnal target while developing is a pure FB backend and not X11...

At last to answer your question : your issue comes from a conflict with a type ("byte" as far as i remember) in i2c kernel header :
On my side I moved the line "#include <linux/fb.h>" in xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp at the top of all includes to enable the file to build properly (it is not committed as it was a hack relative to the toolchain and I was unsure all toolchains will exhibit this issue Wink )

Best regards
Stephan
Reply
#57
(2013-05-25, 00:41)wolfgar Wrote: Hi viumdem,

Please be aware that the source package and github are not the same thing:

The source package was an attempt to compile an xbmc version which integrates gstplayer (this package should compile : Well I know it compiles as I compiled it and you have everything in the package : both the source but also the config logs, and the objects and binaries which were built)
But it does not work : For some reason gstreamer closed demuxer by freescale crashes when gstreamer is launched by gstplayer...

On the other side, my work on github is an attempt to add support for imx vpu to dvdplayer. Please be aware that a new branch is a better candidate for build today : "imx6-ts"
also the option "--enable-imx" was replaced by "--enable-codec=imxvpu" for configure as it was pointed by a core xbmc developer that it should be done that way now...

A last precision before answering to your main question : Don't expect a perfect player for now and expect a few troubles as my first personnal target while developing is a pure FB backend and not X11...

At last to answer your question : your issue comes from a conflict with a type ("byte" as far as i remember) in i2c kernel header :
On my side I moved the line "#include <linux/fb.h>" in xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp at the top of all includes to enable the file to build properly (it is not committed as it was a hack relative to the toolchain and I was unsure all toolchains will exhibit this issue Wink )

Best regards
Stephan
Hi wolfgar,
Thanks for your detailed answer.
I tried again on imx6 branch with configure paramters:

./configure --prefix=/imx6/xbmc --disable-vdpau --disable-vaapi --disable-openmax --enable-neon --enable-udev --disable-gl --enable-gles --enable-imx

Then the failure information for make:

CPP xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecIMX.o
In file included from DVDVideoCodecIMX.cpp:20:0:
/usr/include/linux/mxcfb.h:111:2: error: ‘uint’ does not name a type
DVDVideoCodecIMX.cpp: In member function ‘bool CDVDVideoCodecIMX::VpuAllocFrameBuffers()’:
DVDVideoCodecIMX.cpp:260:23: warning: unused variable ‘ctrl’ [-Wunused-variable]
DVDVideoCodecIMX.cpp: In member function ‘bool CDVDVideoCodecIMX::VpuPushFrame(VpuFrameBuffer*)’:
DVDVideoCodecIMX.cpp:414:10: warning: unused variable ‘ret’ [-Wunused-variable]
DVDVideoCodecIMX.cpp:414:15: warning: unused variable ‘type’ [-Wunused-variable]
DVDVideoCodecIMX.cpp: In member function ‘virtual int CDVDVideoCodecIMX:Big Grinecode(BYTE*, int, double, double)’:
DVDVideoCodecIMX.cpp:916:196: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 6 has type ‘BYTE* {aka unsigned char*}’ [-Wformat]
make[1]: *** [DVDVideoCodecIMX.o] Error 1
make: *** [xbmc/cores/dvdplayer/DVDCodecs/Video/Video.a] Error 2

I switched to imx6-ts branch, using the following configure paratmeters:

./configure --prefix=/imx6/xbmc --disable-vdpau --disable-vaapi --disable-openmax --enable-neon --enable-udev --disable-gl --enable-gles --enable-codec=imxvpu --enable-x11

Yielding the following configure result:

------------------------
XBMC Configuration:
------------------------
git Rev.: 20130518-7540cdf
Debugging: Yes
Profiling: No
Optimization: Yes
SWIG Available: Yes
JRE Available: Yes
Doxygen Available: No
Crosscomp.: No
target ARCH: arm
target CPU: no
OpenGLES: Yes
ALSA: Yes
DBUS: Yes
VDPAU: No
VAAPI: No
CrystalHD: No
VDADecoder: No
VTBDecoder: No
OpenMax: No
Joystick: No
XRandR: No
GOOM: No
RSXS: Yes
FishBMC: No
ProjectM: No
Skin Touched: No
X11: No
Bluray: No
TexturePacker:No
MID Support: No
ccache: No
ALSA Support: Yes
PulseAudio: No
HAL Support: Yes
DVDCSS: Yes
Google Test Framework Configured: No
Avahi: Yes
Non-free: Yes
ASAP Codec: No
MySQL: Yes
Webserver: Yes
libssh support: Yes
libRTMP support: Yes
libsmbclient support: Yes
libnfs client support:No
libafpclient support: No
AirPlay support: Yes
AirTunes support (libshairplay): Yes
UPnP support: Yes
Optical drive: Yes
libudev support: Yes
libusb support: No
libcec support: No
libmp3lame support: No
libvorbisenc support: Yes
libcap support: Yes
additional players: No
External FFmpeg: No
PVR add-ons: No
prefix: /imx6/xbmc
------------------------
It seems x11 support is not correctly enabled, maybe I missed to install some libraries? And there is no imxvpu related info listed...
Anyway the make fails by giving below info, same like imx6 branch:

CPP xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecIMX.o
In file included from DVDVideoCodecIMX.cpp:20:0:
/usr/include/linux/mxcfb.h:111:2: error: ‘uint’ does not name a type
DVDVideoCodecIMX.cpp: In member function ‘virtual int CDVDVideoCodecIMX:Big Grinecode(BYTE*, int, double, double)’:
DVDVideoCodecIMX.cpp:1058:197: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 6 has type ‘BYTE* {aka unsigned char*}’ [-Wformat]
make[1]: *** [DVDVideoCodecIMX.o] Error 1
make: *** [xbmc/cores/dvdplayer/DVDCodecs/Video/Video.a] Error 2

So should I modify some header files to get the compile working?
Reply
#58
hmm, looks like an issue when including the standard linux/mxcfb.h
I use my own toolchain built with yocto, maybe we don't have the exact same file here
I can't remember if I already saw this error, sorry.
I think it is too early to try to build my github branch for x11 : As I said I develop for a pure frambuffer backend and, for now, I don't really care about x11.
Of course as soon I have settled remaining issues related to decoding stuff (mainly synchro and additional codec) I will try to help for the X11 windowing system support...

Regards
stephan
Reply
#59
Hi,

A little update to share my progress with early beta testers of my image,
Here is a new xbmc binary to decompress and replace at location /imx6/xbmc/lib/xbmc/xbmc.bin
Expect far better decoding and audio sync experience with this one !

Regards
Stephan
Reply
#60
This is excellent, I can't wait for the polished version Wink thanks for all your hard work guys Smile.
Reply
  • 1
  • 2
  • 3
  • 4(current)
  • 5
  • 6
  • 39

Logout Mark Read Team Forum Stats Members Help
[i.MX6] XBMC running on Freescale SoC's4