Accelerated H.264 and HEVC video decoding with Cedrus
#21
I just added libvdpau-sunxi packaging for Xenial to the https://launchpad.net/~longsleep/+archiv...our-makers PPA.

apt-get update && apt-get install libvdpau-sunxi1

Update: there was a 1 missing at the end. Make sure you try to install 'libvdpau-sunxi1'
#22
I just wanted to update my report. I managed to run mplayer with vdpau and get playback smooth and stable. Including smooth audio using pulseaudio and hdmi output. Also full screen and scaling works fine.

I only tested 720p h264 now.

I think my mistake was to build fbturbo without libump first. I compiled libump, installed it, rebuilt the fbturbo, installed it, and basically it works now.
#23
(05-01-2016, 03:52 PM)baryluk Wrote: I just wanted to update my report. I managed to run mplayer with vdpau and get playback smooth and stable. Including smooth audio using pulseaudio and hdmi output. Also full screen and scaling works fine.

I only tested 720p h264 now.

I think my mistake was to build fbturbo without libump first. I compiled libump, installed it, rebuilt the fbturbo, installed it, and basically it works now.

Any how to (step by step)? Big Grin
Thanks!
#24
If you are on ubuntu image, then probably use longsleep packages. Otherwise:


Before you start you should have installed gcc, gnumake, autoconf and other development tools.

You will also need pixman header files and shared library installed. As well thedevelopment headers and shared library for vdpau. In debian and ubuntu you can install that using :

sudo apt-get install libvdpau-dev

Then


git clone https://github.com/linux-sunxi/libump.git
cd libump
./configure
make
sudo make install

git clone https://github.com/ssvb/xf86-video-fbturbo.git
cd xf86-video-fbturbo/
./configure --prefix=/usr
make
sudo make install

git clone https://github.com/linux-sunxi/libcedrus.git
cd libcedrus
make
sudo make install

git clone https://github.com/linux-sunxi/libvdpau-sunxi.git
cd libvdpau-sunxi
make
sudo make install


This is my /etc/X11/xorg.conf file:

Section "Device"
Identifier "Allwinner A10/A13 FBDEV"
Driver "fbturbo"
Option "fbdev" "/dev/fb0"
Option "SwapbuffersWait" "true"
EndSection


After that restart x server, or just reboot, and use the mplayer script or flags mentioned earlier in the thread. I was using

VDPAU_DRIVER=sunxi /usr/bin/mplayer -vo vdpau -vc ffmpeg12vdpau,ffh264vdpau,ffhevcvdpau, some_file.avi

for playback.
#25
cant get past the libvdpau-sunxi compile.  make complains as follows
Code:
Makefile:46: recipe for target 'tiled_yuv.o' failed
 would post more of the error but i cant copy paste yet.   using debian base install with blackbox
#26
elsphinic, you need really to provide more information. the tiled_yuv.o just uses gcc to compile, and it should have no other dependencies.

Try doing:

sudo apt-get install build-essentials git yasm binutils

just for good measure and retry.
#27
Code:
root@debianpine64:/usr/local/src/libvdpau-sunxi# make
cc -c tiled_yuv.S -o tiled_yuv.o
tiled_yuv.S: Assembler messages:
tiled_yuv.S:25: Error: unknown pseudo-op: `.syntax'
tiled_yuv.S:26: Error: unknown architecture `armv7-a'

tiled_yuv.S:27: Error: unknown pseudo-op: `.fpu'
tiled_yuv.S:28: Error: unknown pseudo-op: `.thumb'
tiled_yuv.S:46: Warning: unknown register 'r0' -- .req ignored
tiled_yuv.S:47: Warning: unknown register 'r1' -- .req ignored
tiled_yuv.S:48: Warning: unknown register 'r2' -- .req ignored
tiled_yuv.S:49: Error: operand 1 should be a SIMD vector register -- `cnt .req r3'
tiled_yuv.S:50: Warning: unknown register 'r4' -- .req ignored
tiled_yuv.S:51: Warning: unknown register 'r5' -- .req ignored
tiled_yuv.S:52: Warning: unknown register 'r6' -- .req ignored
tiled_yuv.S:53: Warning: unknown register 'r7' -- .req ignored
tiled_yuv.S:54: Warning: unknown register 'r8' -- .req ignored
tiled_yuv.S:55: Warning: unknown register 'r9' -- .req ignored
tiled_yuv.S:56: Warning: unknown register 'r12' -- .req ignored
tiled_yuv.S:57: Warning: unknown register 'lr' -- .req ignored
tiled_yuv.S:59: Error: unknown pseudo-op: `.thumb_func'
tiled_yuv.S:60: Error: unknown mnemonic `push' -- `push {r4,r5,r6,r7,r8,lr}'
tiled_yuv.S:61: Error: operand 1 should be an integer register -- `ldr HEIGHT,[sp,#24]'
tiled_yuv.S:62: Error: operand 1 should be an integer or stack pointer register -- `add NEXTLIN,r3,#31'
tiled_yuv.S:63: Error: unknown mnemonic `lsrs' -- `lsrs NTILES,r3,#5'
tiled_yuv.S:64: Error: operand 1 should be a SIMD vector register -- `bic NEXTLIN,NEXTLIN,#31'
tiled_yuv.S:65: Error: operand 1 should be an integer or stack pointer register -- `and REST,r3,#31'
tiled_yuv.S:66: Error: operand 1 should be an integer register -- `lsl NEXTLIN,NEXTLIN,#5'
tiled_yuv.S:67: Error: operand 1 should be an integer register -- `subs PITCH,r2,r3'
tiled_yuv.S:68: Error: unknown mnemonic `movs' -- `movs TLINE,#32'
tiled_yuv.S:69: Error: unknown mnemonic `rsb' -- `rsb NEXTLIN,NEXTLIN,#32'
tiled_yuv.S:70: Error: operand 1 should be an integer register -- `mov TSIZE,#1024'
tiled_yuv.S:73: Error: operand 1 should be an integer register -- `cbz NTILES,3f'
tiled_yuv.S:74: Error: operand 1 should be an integer register -- `mov CNT,NTILES'
tiled_yuv.S:77: Error: unknown mnemonic `pld' -- `pld [SRC,TSIZE]'
tiled_yuv.S:78: Error: unknown mnemonic `vld1.8' -- `vld1.8 {d0-d3},[SRC:256],TSIZE'
tiled_yuv.S:79: Error: operand 1 should be an integer register -- `subs CNT,#1'
tiled_yuv.S:80: Error: unknown mnemonic `vst1.8' -- `vst1.8 {d0-d3},[DST]!'
tiled_yuv.S:83: Error: operand 1 should be an integer register -- `cbnz REST,4f'
tiled_yuv.S:86: Error: operand 1 should be an integer or stack pointer register -- `add DST,PITCH'
tiled_yuv.S:89: Error: operand 1 should be an integer register -- `subs TLINE,#1'
tiled_yuv.S:90: Error: unknown mnemonic `itee' -- `itee ne'
tiled_yuv.S:91: Error: unknown mnemonic `addne' -- `addne SRC,NEXTLIN'
tiled_yuv.S:92: Error: unknown mnemonic `subeq' -- `subeq SRC,#992'
tiled_yuv.S:93: Error: unknown mnemonic `moveq' -- `moveq TLINE,#32'
tiled_yuv.S:95: Error: operand 1 should be an integer register -- `subs HEIGHT,#1'
tiled_yuv.S:97: Error: unknown mnemonic `pop' -- `pop {r4,r5,r6,r7,r8,pc}'
tiled_yuv.S:100: Error: operand 1 should be an integer register -- `mov TMPSRC,SRC'
tiled_yuv.S:101: Error: operand 1 should be an integer register -- `tst REST,#16'
tiled_yuv.S:103: Error: unknown mnemonic `vld1.8' -- `vld1.8 {d0-d1},[TMPSRC:128]!'
tiled_yuv.S:104: Error: unknown mnemonic `vst1.8' -- `vst1.8 {d0-d1},[DST]!'
tiled_yuv.S:105: Error: operand 1 should be an integer or stack pointer register -- `add SRC,TSIZE'
tiled_yuv.S:106: Error: operand 1 should be an integer register -- `ands CNT,REST,#15'
tiled_yuv.S:108: Error: unknown mnemonic `vld1.8' -- `vld1.8 {d0[0]},[TMPSRC]!'
tiled_yuv.S:109: Error: operand 1 should be an integer register -- `subs CNT,#1'
tiled_yuv.S:110: Error: unknown mnemonic `vst1.8' -- `vst1.8 {d0[0]},[DST]!'
tiled_yuv.S:115: Error: unknown pseudo-op: `.thumb_func'
tiled_yuv.S:116: Error: unknown mnemonic `push' -- `push {r4,r5,r6,r7,r8,r9,lr}'
tiled_yuv.S:117: Error: operand 1 should be an integer register -- `mov DST2,r2'
tiled_yuv.S:118: Error: operand 1 should be an integer register -- `ldr HEIGHT,[sp,#32]'
tiled_yuv.S:119: Error: operand 1 should be an integer register -- `ldr r4,[sp,#28]'
tiled_yuv.S:120: Error: operand 1 should be an integer or stack pointer register -- `add NEXTLIN,r4,#31'
tiled_yuv.S:121: Error: unknown mnemonic `lsrs' -- `lsrs NTILES,r4,#5'
tiled_yuv.S:122: Error: operand 1 should be a SIMD vector register -- `bic NEXTLIN,NEXTLIN,#31'
tiled_yuv.S:123: Error: operand 1 should be an integer register -- `ubfx REST,r4,#1,#4'
tiled_yuv.S:124: Error: operand 1 should be an integer register -- `lsl NEXTLIN,NEXTLIN,#5'
tiled_yuv.S:125: Error: operand 1 should be an integer or stack pointer register -- `sub PITCH,r3,r4,lsr#1'
tiled_yuv.S:126: Error: unknown mnemonic `movs' -- `movs TLINE,#32'
tiled_yuv.S:127: Error: unknown mnemonic `rsb' -- `rsb NEXTLIN,NEXTLIN,#32'
tiled_yuv.S:128: Error: operand 1 should be an integer register -- `mov TSIZE,#1024'
tiled_yuv.S:131: Error: operand 1 should be an integer register -- `cbz NTILES,3f'
tiled_yuv.S:132: Error: operand 1 should be an integer register -- `mov CNT,NTILES'
tiled_yuv.S:135: Error: unknown mnemonic `pld' -- `pld [SRC,TSIZE]'
tiled_yuv.S:136: Error: unknown mnemonic `vld2.8' -- `vld2.8 {d0-d3},[SRC:256],TSIZE'
tiled_yuv.S:137: Error: operand 1 should be an integer register -- `subs CNT,#1'
tiled_yuv.S:138: Error: unknown mnemonic `vst1.8' -- `vst1.8 {d0-d1},[DST]!'
tiled_yuv.S:139: Error: unknown mnemonic `vst1.8' -- `vst1.8 {d2-d3},[DST2]!'
tiled_yuv.S:142: Error: operand 1 should be an integer register -- `cbnz REST,4f'
tiled_yuv.S:145: Error: operand 1 should be an integer or stack pointer register -- `add DST,PITCH'
tiled_yuv.S:146: Error: operand 1 should be an integer or stack pointer register -- `add DST2,PITCH'
tiled_yuv.S:149: Error: operand 1 should be an integer register -- `subs TLINE,#1'
tiled_yuv.S:150: Error: unknown mnemonic `itee' -- `itee ne'
tiled_yuv.S:151: Error: unknown mnemonic `addne' -- `addne SRC,NEXTLIN'
tiled_yuv.S:152: Error: unknown mnemonic `subeq' -- `subeq SRC,#992'
tiled_yuv.S:153: Error: unknown mnemonic `moveq' -- `moveq TLINE,#32'
tiled_yuv.S:155: Error: operand 1 should be an integer register -- `subs HEIGHT,#1'
tiled_yuv.S:157: Error: unknown mnemonic `pop' -- `pop {r4,r5,r6,r7,r8,r9,pc}'
tiled_yuv.S:160: Error: operand 1 should be an integer register -- `mov TMPSRC,SRC'
tiled_yuv.S:161: Error: operand 1 should be an integer register -- `tst REST,#8'
tiled_yuv.S:163: Error: unknown mnemonic `vld2.8' -- `vld2.8 {d0-d1},[TMPSRC:128]!'
tiled_yuv.S:164: Error: unknown mnemonic `vst1.8' -- `vst1.8 {d0},[DST]!'
tiled_yuv.S:165: Error: unknown mnemonic `vst1.8' -- `vst1.8 {d1},[DST2]!'
tiled_yuv.S:166: Error: operand 1 should be an integer or stack pointer register -- `add SRC,TSIZE'
tiled_yuv.S:167: Error: operand 1 should be an integer register -- `ands CNT,REST,#7'
tiled_yuv.S:169: Error: unknown mnemonic `vld2.8' -- `vld2.8 {d0[0],d1[0]},[TMPSRC]!'
tiled_yuv.S:170: Error: operand 1 should be an integer register -- `subs CNT,#1'
tiled_yuv.S:171: Error: unknown mnemonic `vst1.8' -- `vst1.8 {d0[0]},[DST]!'
tiled_yuv.S:172: Error: unknown mnemonic `vst1.8' -- `vst1.8 {d1[0]},[DST2]!'
Makefile:46: recipe for target 'tiled_yuv.o' failed
make: *** [tiled_yuv.o] Error 1

thats the output of make.  i do have the aforementioned dependencies you mentioned. I did notice that with in the libvdpau-sunxi directory there was tiled_yuv.s and tiled_yuv.h but no tiled_yuv.o  if that makes any difference.   im getting it through git.
#28
(05-01-2016, 03:08 PM)longsleep Wrote: I just added libvdpau-sunxi packaging for Xenial to the https://launchpad.net/~longsleep/+archiv...our-makers PPA.  

apt-get update && apt-get install libvdpau-sunxi

longsleep I tried this and it constantly says 'cannot locate package'

I have tried manually adding your PPA in the sources file but no luck so far. Any help is appreciate.
#29
(05-05-2016, 01:14 PM)curiousgally Wrote:
(05-01-2016, 03:08 PM)longsleep Wrote: I just added libvdpau-sunxi packaging for Xenial to the https://launchpad.net/~longsleep/+archiv...our-makers PPA.  

apt-get update && apt-get install libvdpau-sunxi

longsleep I tried this and it constantly says 'cannot locate package'

I have tried manually adding your PPA in the sources file but no luck so far. Any help is appreciate.


same here, can someone confirm I've done this correctly..

sudo add-apt-repository ppa:longsleep/ubuntu-pine64-flavour-makers

 More info: https://launchpad.net/~longsleep/+archiv...our-makers
Press [ENTER] to continue or ctrl-c to cancel adding it

gpg: keyring `/tmp/tmpeih3ibox/secring.gpg' created
gpg: keyring `/tmp/tmpeih3ibox/pubring.gpg' created
gpg: requesting key 56A3D45E from hkp server keyserver.ubuntu.com
gpg: /tmp/tmpeih3ibox/trustdb.gpg: trustdb created
gpg: key 56A3D45E: public key "Launchpad PPA for Simon Eisenmann" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
OK

sudo apt-get update
Hit:1 http://ppa.launchpad.net/elementary-os/stable/ubuntu xenial InRelease
Hit:2 http://ports.ubuntu.com xenial InRelease
Hit:3 http://ppa.launchpad.net/longsleep/ubunt...ers/ubuntu xenial InRelease
Hit:4 http://ports.ubuntu.com xenial-updates InRelease
Hit:5 http://ppa.launchpad.net/noobslab/themes/ubuntu xenial InRelease
Hit:6 http://ports.ubuntu.com xenial-security InRelease
Hit:7 http://ppa.launchpad.net/ricotz/docky/ubuntu xenial InRelease
Hit:8 http://ports.ubuntu.com xenial-backports InRelease
Hit:9 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial InRelease
Hit:10 http://ports.ubuntu.com/ubuntu-ports xenial InRelease
Reading package lists... Done

sudo apt-get install libvdpau-sunxi
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package libvdpau-sunxi


Thanks
#30
Sorry the binary package is named libvdpau-sunxi1 (note the 1 at the end).


Possibly Related Threads…
Thread Author Replies Views Last Post
  Video wall? monty1 2 5,307 04-12-2017, 04:34 PM
Last Post: monty1
  pine64 accelerated jpeg decoding jacklau 1 4,556 01-12-2017, 01:12 AM
Last Post: Trizna
  Pine64 accelerated H.264 encoding hngjms 7 13,905 10-18-2016, 03:15 AM
Last Post: pfeerick
  The sunxi transform module is very slow, how to do video rotation? jacklau 0 2,664 09-19-2016, 12:24 AM
Last Post: jacklau
  Video encoding h.265/HEVC tomaThoma 1 6,496 07-02-2016, 11:35 PM
Last Post: tllim
  Question about video acceleration BringItOn 10 17,307 06-23-2016, 10:33 AM
Last Post: ssvb
  Linux accelerated graphics nomadewolf 1 4,845 12-29-2015, 11:26 PM
Last Post: tllim

Forum Jump:


Users browsing this thread: 16 Guest(s)