• 1
  • 2
  • 3
  • 4(current)
  • 5
  • 6
  • 23
hardware acceleration on allwinner A10/A20 with vdpau and OpenGLES (zero-copy)
#46
Really nice Rellla, this can help me Blush
Reply
#47
(2016-03-08, 23:18)eckonator Wrote: @tom81 - i found your kodi image on german cubietruck forum. It works great on my Cubietruck. But i can't get working my old Apple Remote with it. I get the signal with irw and ir-keytable -t ... But in Kodi nothing appears. Can you help me?

I write you here because I can't register to the german forum. I get no activation link and no answer from admin. So, i write you here. Are private messages disabled in this board? I cant write to Tom81 a private message.
That kodi image is based on the cedarv port from rellla and empat0 and uses the old, binary-only cedarv libs. Please don't use it - it is obsolete and broken in many ways and I do not work on it anymore.
For remotes you need to build a keymap for your remote, see http://kodi.wiki/view/LIRC for details.
I am currently uploading some code to https://github.com/tnmeyer?tab=repositories, but it's neither complete nor usable yet...
Reply
#48
Hello guys,

at first, thanks to all your hard work and support, especially to you mosterta!

Currently, I'm trying to build some kind of htpc with my banana pi, using mosterta's sources and instructions from thread page 1.
Although I'm using Linux for some years and using embedded linux at work pretty often, I'm not really into this whole graphics stuff and don't have a clue how to solve my problem:
The compilation of kodi/xbmc with configuration like mentioned on p1 fails here with output
Code:
In file included from ./libavutil/intmath.h:36:0,
                 from ./libavutil/common.h:100,
                 from ./libavutil/avutil.h:328,
                 from libavdevice/avdevice.h:44,
                 from libavdevice/alldevices.c:22:
./libavutil/arm/intmath.h: In function ‘av_clip_uintp2_arm’:
./libavutil/arm/intmath.h:84:5: warning: asm operand 2 probably doesn’t match constraints [enabled by default]
     __asm__ ("usat %0, %2, %1" : "=r"(x) : "r"(a), "i"(p));
     ^
./libavutil/arm/intmath.h:84:5: error: impossible constraint in ‘asm’
make[2]: *** [libavdevice/alldevices.o] Error 1
make[2]: Leaving directory `/home/markus/xbmc/lib/ffmpeg'
make[1]: *** [ffmpeg] Error 2
make[1]: Leaving directory `/home/markus/xbmc/lib'
make: *** [dvdpcodecs] Error 2
The whole configure and compile-output can be found here: without optimization .
Googling around some time lead me to this: https://trac.ffmpeg.org/ticket/1479 .
Trying to compile mosterta's kodi-branch without the --disable-optimizations flag leads to another compile error:
Code:
In file included from /usr/include/GL/gl.h:2059:0,
                 from /usr/include/GL/glx.h:32,
                 from VDPAU.h:29,
                 from DVDVideoCodecFFmpeg.cpp:51:
/usr/include/GL/glext.h:468:19: error: conflicting declaration ‘typedef ptrdiff_t GLsizeiptr’
typedef ptrdiff_t GLsizeiptr;
                   ^
In file included from /home/markus/xbmc/xbmc/system_gl.h:51:0,
                 from VDPAU.h:23,
                 from DVDVideoCodecFFmpeg.cpp:51:
/usr/include/GLES2/gl2.h:38:25: error: ‘GLsizeiptr’ has a previous declaration as ‘typedef khronos_ssize_t GLsizeiptr’
typedef khronos_ssize_t  GLsizeiptr;
                         ^
In file included from /usr/include/GL/gl.h:2059:0,
                 from /usr/include/GL/glx.h:32,
                 from VDPAU.h:29,
                 from DVDVideoCodecFFmpeg.cpp:51:
/usr/include/GL/glext.h:469:19: error: conflicting declaration ‘typedef ptrdiff_t GLintptr’
typedef ptrdiff_t GLintptr;
                   ^
In file included from /home/markus/xbmc/xbmc/system_gl.h:51:0,
                 from VDPAU.h:23,
                 from DVDVideoCodecFFmpeg.cpp:51:
/usr/include/GLES2/gl2.h:37:26: error: ‘GLintptr’ has a previous declaration as ‘typedef khronos_intptr_t GLintptr’
typedef khronos_intptr_t GLintptr;
                          ^
In file included from DVDVideoCodecFFmpeg.cpp:51:0:
VDPAU.h:52:1: error: expected class-name before ‘{’ token
{
^
make[1]: *** [DVDVideoCodecFFmpeg.o] Error 1
make: *** [xbmc/cores/dvdplayer/DVDCodecs/Video/Video.a] Error 2
Config and build-output again uploaded to pastebin here: with optimization.

This errors sound for me like either a problem with my libraries /usr/include/GL/glext.h and /usr/include/GLES2/gl2.h or in the xbmc sources (my personal guess is the first idea).

What did I do exactly:
I checked-out the kernel-sources for banana pi and compiled the kernel after applying the two mentioned git-commits as patches and editing the .config successfully.
Following http://wiki.lemaker.org/BananaPro/Pi:Bui...nux-kernel , I've build a running linux system, using the rootfs-files from http://www.armhf.com/download/ for Ubuntu trusty.
I installed the binary driver (seemed to be needed for building some of the mentioned libs on thread page 1 following this guide: http://linux-sunxi.org/Mali_binary_driver .
I've also built and installed libump, ibvdpau and libvdpau-sunxi as described on p1.

So, could please anyone help me to successfully compile kodi from mosterta's git ? Sad
If you need any more information, please let me know!

*edit* One thing I thought of right after posting this:
I checked where the libraries libraries /usr/include/GL/glext.h and /usr/include/GLES2/gl2.h came from.
I installed them using the sunxi-mali git:
Code:
markus@ubuntu-armhf:~/sunxi-mali/include$ sudo make install
mkdir -p //usr//include/EGL
install -m 644 EGL/egl.h EGL/eglext.h //usr//include/EGL
mkdir -p //usr//include/EGL
install -m 644 EGL/eglplatform.h //usr//include/EGL/eglplatform.h
mkdir -p //usr//include/GLES
install -m 644 GLES/gl.h GLES/glext.h GLES/glplatform.h //usr//include/GLES
mkdir -p //usr//include/GLES2
install -m 644 GLES2/gl2.h GLES2/gl2ext.h GLES2/gl2platform.h //usr//include/GLES2
mkdir -p //usr//include/KHR
install -m 644 KHR/khrplatform.h //usr//include/KHR
Are they the wrong headers? If they are, which ones are the right?

Best regards, and again, keep up the great work!

Markus
Reply
#49
You probably checked out the wrong branch from github. The one you want is "helix_allwinner_gles_support", and not "master".
Reply
#50
(2016-03-12, 00:14)tom81 Wrote: You probably checked out the wrong branch from github. The one you want is "helix_allwinner_gles_support", and not "master".

Oh my god, such a stupid thing I could have noticed!
Thanks, currently trying to build with the helix_allwinner_gles_support - branch!

*Edit*
Okay, some progress I think, but still a way to go...
I tried to build Kodi now with the correct branch selected but at first it failed, searching for archive ffmpeg-2.4.6-Helix.tar.gz.
To solve this, I wget-ed http://ffmpeg.org/releases/ffmpeg-2.4.6.tar.gz to ./tools/depends/target/ffmpeg/ and renaming it (correct?).
During the configuration, the downloaded ffmpeg sources get extracted and patched successfully I think, but compiling (happens during configuration) fails:
Code:
In file included from libavcodec/vdpau_internal.h:55:0,
                 from libavcodec/h263dec.c:43:
libavcodec/vdpau.h:104:5: error: unknown type name 'VdpDecoderSetControlData'
     VdpDecoderSetControlData *set_video_header;
     ^
make: *** [libavcodec/h263dec.o] Error 1
make: *** Waiting for unfinished jobs....
ERROR: building ffmpeg failed
checking for FFMPEG... no
configure: error: "ffmpeg not found"
(pastebin) .

Does anyone know where's now the problem?
Thanks in advance!
Reply
#51
Kodi needs a special ffmpeg version, it is this one https://github.com/xbmc/FFmpeg/archive/2...lix.tar.gz
Normally it should be downloaded automatically during build, I don't know why it fails for you.
Reply
#52
(2016-03-12, 11:22)tom81 Wrote: Kodi needs a special ffmpeg version, it is this one https://github.com/xbmc/FFmpeg/archive/2...lix.tar.gz
Normally it should be downloaded automatically during build, I don't know why it fails for you.

Hm, I don't know why the automatic download failed yesterday (perhaps I was tired and made a mistake?), however, automatic download now seems to work.
Strange thing is, compiling ffmpeg still fails with already mentioned errors:
Code:
CC    libavcodec/h263dsp.o
In file included from libavcodec/vdpau_internal.h:55:0,
                 from libavcodec/h263dec.c:43:
libavcodec/vdpau.h:104:5: error: unknown type name 'VdpDecoderSetControlData'
     VdpDecoderSetControlData *set_video_header;
     ^
make: *** [libavcodec/h263dec.o] Error 1
make: *** Waiting for unfinished jobs....
ERROR: building ffmpeg failed
checking for FFMPEG... no
configure: error: "ffmpeg not found"
(whole output on pastebin)

I searched for 'VdpDecoderSetControlData' in the sources...
Code:
tools/depends/target/ffmpeg/ffmpeg-2.4.6-Helix/libavcodec/vdpau.h
104:    VdpDecoderSetControlData *set_video_header;

tools/depends/target/ffmpeg/0001-MPEG4-vdpau-2.4.6-Helix.patch
556:+     VdpDecoderSetControlData *set_video_header;

xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h
163:  VdpDecoderSetControlData *                    vdp_decoder_set_video_control_data;
...but wasn't able yet to find the definition for it.

Because of using the type VdpDecoderSetControlData also in xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h, a file not being patched during configuring, I think of some missing headers in my system?
Could please anyone give me a hint why I can't compile ffmpeg?
Thanks in advance!
Reply
#53
Have you installed libvdpau including its headers?
Reply
#54
(2016-03-12, 15:26)tom81 Wrote: Have you installed libvdpau including its headers?

Hi,
libvdpau should be build and installed as described on p1:

Code:
markus@ubuntu-armhf:~/libvdpau-1.1.1$ sudo make install
[sudo] password for markus:
Making install in doc
make[1]: Entering directory `/home/markus/libvdpau-1.1.1/doc'
make[2]: Entering directory `/home/markus/libvdpau-1.1.1/doc'
make[2]: Nothing to be done for `install-exec-am'.
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/home/markus/libvdpau-1.1.1/doc'
make[1]: Leaving directory `/home/markus/libvdpau-1.1.1/doc'
Making install in src
make[1]: Entering directory `/home/markus/libvdpau-1.1.1/src'
make[2]: Entering directory `/home/markus/libvdpau-1.1.1/src'
/bin/mkdir -p '/usr/local/lib'
/bin/bash ../libtool   --mode=install /usr/bin/install -c   libvdpau.la '/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libvdpau.so.1.0.0 /usr/local/lib/libvdpau.so.1.0.0
libtool: install: (cd /usr/local/lib && { ln -s -f libvdpau.so.1.0.0 libvdpau.so.1 || { rm -f libvdpau.so.1 && ln -s libvdpau.so.1.0.0 libvdpau.so.1; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libvdpau.so.1.0.0 libvdpau.so || { rm -f libvdpau.so && ln -s libvdpau.so.1.0.0 libvdpau.so; }; })
libtool: install: /usr/bin/install -c .libs/libvdpau.lai /usr/local/lib/libvdpau.la
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /usr/local/lib
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the 'LD_RUN_PATH' environment variable
     during linking
   - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to '/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
/bin/mkdir -p '/usr/local/etc'
/usr/bin/install -c -m 644 vdpau_wrapper.cfg '/usr/local/etc'
/bin/mkdir -p '/usr/local/include/vdpau'
/usr/bin/install -c -m 644 ../include/vdpau/vdpau.h ../include/vdpau/vdpau_x11.h '/usr/local/include/vdpau'
make[2]: Leaving directory `/home/markus/libvdpau-1.1.1/src'
make[1]: Leaving directory `/home/markus/libvdpau-1.1.1/src'
Making install in test
make[1]: Entering directory `/home/markus/libvdpau-1.1.1/test'
make[2]: Entering directory `/home/markus/libvdpau-1.1.1/test'
make[2]: Nothing to be done for `install-exec-am'.
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/home/markus/libvdpau-1.1.1/test'
make[1]: Leaving directory `/home/markus/libvdpau-1.1.1/test'
Making install in trace
make[1]: Entering directory `/home/markus/libvdpau-1.1.1/trace'
make[2]: Entering directory `/home/markus/libvdpau-1.1.1/trace'
make[2]: Nothing to be done for `install-exec-am'.
/bin/mkdir -p '/usr/local/include/vdpau'
/usr/bin/install -c -m 644 ../include/vdpau/vdpau.h ../include/vdpau/vdpau_x11.h '/usr/local/include/vdpau'
/bin/mkdir -p '/usr/local/lib/vdpau'
/bin/bash ../libtool   --mode=install /usr/bin/install -c   libvdpau_trace.la '/usr/local/lib/vdpau'
libtool: install: /usr/bin/install -c .libs/libvdpau_trace.so.1.0.0 /usr/local/lib/vdpau/libvdpau_trace.so.1.0.0
libtool: install: (cd /usr/local/lib/vdpau && { ln -s -f libvdpau_trace.so.1.0.0 libvdpau_trace.so.1 || { rm -f libvdpau_trace.so.1 && ln -s libvdpau_trace.so.1.0.0 libvdpau_trace.so.1; }; })
libtool: install: (cd /usr/local/lib/vdpau && { ln -s -f libvdpau_trace.so.1.0.0 libvdpau_trace.so || { rm -f libvdpau_trace.so && ln -s libvdpau_trace.so.1.0.0 libvdpau_trace.so; }; })
libtool: install: /usr/bin/install -c .libs/libvdpau_trace.lai /usr/local/lib/vdpau/libvdpau_trace.la
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /usr/local/lib/vdpau
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib/vdpau

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the 'LD_RUN_PATH' environment variable
     during linking
   - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to '/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
make[2]: Leaving directory `/home/markus/libvdpau-1.1.1/trace'
make[1]: Leaving directory `/home/markus/libvdpau-1.1.1/trace'
make[1]: Entering directory `/home/markus/libvdpau-1.1.1'
make[2]: Entering directory `/home/markus/libvdpau-1.1.1'
make[2]: Nothing to be done for `install-exec-am'.
/bin/mkdir -p '/usr/local/lib/pkgconfig'
/usr/bin/install -c -m 644 vdpau.pc '/usr/local/lib/pkgconfig'
make[2]: Leaving directory `/home/markus/libvdpau-1.1.1'
make[1]: Leaving directory `/home/markus/libvdpau-1.1.1'

Do I understand the output correctly and don't get the headers installed along with the compiled lib files?
How do I install the header files for libvdpau? (installing libvdpau-dev from repositories is a bad idea due to the need for the modificated libvdpau files in mosterta's git, I think?)

*edit* arr, sorry, give me a moment, I think I got a wrong libvdpau here...

*edit 2* Yep, there was the cause for this problem, currently facing another Sad
Code:
AR    libavcodec/libavcodec.a
ar: libavcodec/vdpau_msmpeg4.o: No such file or directory
make: *** [libavcodec/libavcodec.a] Error 1
make: *** Waiting for unfinished jobs....
ERROR: building ffmpeg failed
checking for FFMPEG... no
configure: error: "ffmpeg not found"
Reply
#55
Okay, now you're having one of the issues I also had: there are files missing in the helix_allwinner_gles_support tree. I think I posted a patch earlier which fixed the build issues. Apply it to a clean source tree and try again. Maybe it works...

Edit: It's this one: http://pastebin.com/8xb52BgX
Reply
#56
I want to use xbmc on orangepi pc, i try openelec, very good for xbmc but it cannot install other program.
I found your post and i think this can solve my problem. thanks your work.
I compiler xbmc from first post, on armbian 5.05 jessie desktop (build by myself from igor source) on orangepi pc.
I use:
apt-get build-dep xbmc
git clone -b helix_allwinner_gles_support https://github.com/mosterta/xbmc.git
cd xbmc
./bootstrap
./configure --config-cache --prefix=/usr/local --disable-x11 --disable-sdl --disable-xrandr --disable-joystick --disable-gl --enable-vdpau --disable-vaapi --disable-openmax --enable-neon --enable-gles --disable-mysql --disable-airplay --disable- airtunes --enable-debug --disable-optimizations --with-ffmpeg=force --with-platform=allwinner-mali


and I get error:

checking for python... /usr/bin/python
checking for a version of Python >= '2.1.0'... yes
checking for a version of Python >= 2.4... yes
checking for the distutils Python package... yes
checking for Python include path... -I/usr/include/python2.7
checking for Python library path... -L/usr/lib -lpython2.7
checking for Python site-packages path... /usr/lib/python2.7/dist-packages
checking python extra libraries... -L/usr/lib -lz -lpthread -ldl -lutil
checking python extra linking flags... -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions
checking consistency of all components of python development environment... yes
configure: Using Python 2.7
== Wayland disabled. ==
checking for main in -lEGL... no
configure: error: Could not find a required library. Please see the README for your platform.


I try to install libvdpau-sunxi libvdpau-dev libegl1-mesa-dev libegl1-x11 libgegl-dev libwayland-egl1 also all packages suggested from https://github.com/xbmc/xbmc/blob/master...ADME.linux

I try install apt-get install libgles2-mesa-dev
but error:

Unpacking libegl1-mesa-dev:armhf (10.3.2-1+deb8u1) ...
dpkg: error processing archive /var/cache/apt/archives/libegl1-mesa-dev_10.3.2-1+deb8u1_armhf.deb (--unpack):
trying to overwrite '/usr/include/KHR/khrplatform.h', which is also in package sunxi-mali-r3p0 4.0.0.0
Preparing to unpack .../libgles2-mesa-dev_10.3.2-1+deb8u1_armhf.deb ...
Unpacking libgles2-mesa-dev:armhf (10.3.2-1+deb8u1) ...
dpkg: error processing archive /var/cache/apt/archives/libgles2-mesa-dev_10.3.2-1+deb8u1_armhf.deb (--unpack):
trying to overwrite '/usr/include/GLES2/gl2platform.h', which is also in package sunxi-mali-r3p0 4.0.0.0
Errors were encountered while processing:
/var/cache/apt/archives/libegl1-mesa-dev_10.3.2-1+deb8u1_armhf.deb
/var/cache/apt/archives/libgles2-mesa-dev_10.3.2-1+deb8u1_armhf.deb


but still error. can you help me to solve this. I think i lose some packages, but i can not find what is need.
Reply
#57
(2016-03-09, 23:56)tom81 Wrote: I am currently uploading some code to https://github.com/tnmeyer?tab=repositories, but it's neither complete nor usable yet...

Hi Tom,
i trying to compile your Kodi Build, but i get a error. Can you help? It's the Branch "Jarvis_vdpau_gles".

Code:
CC    libavcodec/acelp_pitch_delay.o
CC    libavcodec/acelp_vectors.o
CC    libavcodec/adpcm.o
CC    libavcodec/adpcm_data.o
CC    libavcodec/adpcmenc.o
In file included from ./libavutil/intmath.h:30:0,
                 from ./libavutil/common.h:110,
                 from ./libavutil/avutil.h:288,
                 from ./libavutil/samplefmt.h:24,
                 from libavcodec/avcodec.h:31,
                 from libavcodec/adpcm.c:32:
./libavutil/arm/intmath.h: In function 'adpcm_ima_oki_expand_nibble':
./libavutil/arm/intmath.h:69:5: warning: asm operand 2 probably doesn't match constraints
     __asm__ ("ssat %0, %2, %1" : "=r"(x) : "r"(a), "i"(p+1));
     ^
./libavutil/arm/intmath.h:69:5: error: impossible constraint in 'asm'
./libavutil/arm/intmath.h: In function 'adpcm_decode_frame':
./libavutil/arm/intmath.h:69:5: warning: asm operand 2 probably doesn't match constraints
     __asm__ ("ssat %0, %2, %1" : "=r"(x) : "r"(a), "i"(p+1));
     ^
common.mak:57: recipe for target 'libavcodec/adpcm.o' failed
make: *** [libavcodec/adpcm.o] Error 1
make: *** Waiting for unfinished jobs....
In file included from ./libavutil/intmath.h:30:0,
                 from ./libavutil/common.h:110,
                 from ./libavutil/avutil.h:288,
                 from ./libavutil/samplefmt.h:24,
                 from libavcodec/avcodec.h:31,
                 from libavcodec/adpcmenc.c:25:
./libavutil/arm/intmath.h: In function 'adpcm_ms_compress_sample':
./libavutil/arm/intmath.h:69:5: warning: asm operand 2 probably doesn't match constraints
     __asm__ ("ssat %0, %2, %1" : "=r"(x) : "r"(a), "i"(p+1));
     ^
./libavutil/arm/intmath.h:69:5: error: impossible constraint in 'asm'
common.mak:57: recipe for target 'libavcodec/adpcmenc.o' failed
make: *** [libavcodec/adpcmenc.o] Error 1
ERROR: Building ffmpeg failed
checking for FFMPEG... no
configure: error: "ffmpeg not found"
Reply
#58
(2016-03-12, 23:35)quangnh Wrote: and I get error:

Code:
checking for main in -lEGL... no
configure: error: Could not find a required library. Please see the README for your platform.

I had the same error. Try to install this https://github.com/linux-sunxi/sunxi-mali before start configure kodi. This helped me.
Reply
#59
(2016-03-13, 17:24)eckonator Wrote: Hi Tom,
i trying to compile your Kodi Build, but i get a error. Can you help? It's the Branch "Jarvis_vdpau_gles".
[...]

Never seen that error before...
Could you please upload the file config.log from tools/depends/target/ffmpeg/ffmpeg-2.8.6-Jarvis-16.0 to pastebin.com?

Edit: You probably need to pass "--enable-optimizations" to configure.
Reply
#60
Hi Tom, here is the pastebin link from my config.log: http://pastebin.com/fq9eV5Wa
Reply
  • 1
  • 2
  • 3
  • 4(current)
  • 5
  • 6
  • 23

Logout Mark Read Team Forum Stats Members Help
hardware acceleration on allwinner A10/A20 with vdpau and OpenGLES (zero-copy)2