Linux - vaapi-sse4: Deinterlacing Testing

  Thread Rating:
  • 12 Votes - 4.75 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Post Reply
fritsch Online
Team-XBMC Developer
Posts: 5,461
Joined: Aug 2011
Reputation: 129
Location: Karlsruhe
Information  vaapi-sse4: Deinterlacing Testing
Post: #1
Preface:
This howto assumes, that you are able to create a file on a linux filesystem. Furthermore it assumes, that you are able to apt-get.

14/07/08 Summary

VPP was made working in the meantime on SNB, IVB and HSW. For HSW you need to install at least 1.3.2 version of libva-driver-intel. Ubuntu Trusty does not ship this version, as a result VAAPI-BOB will produce green artifacts.

That ppa (https://launchpad.net/~wsnipex/+archive/...nta-master) can automatically use the Yadif or BOB CPU Deinterlacer. It can additionally use GPU Deinterlacing (VAAPI-BOB). Those methods can be selected when watching a specific movie by changing the relevant options via the movie reel.

The best quality gives the filter called Deinterlace that is the implementation also referred to as Yadif

This ppa provides a gotham version of current master. The same code also is now in OpenELEC.

Some visual comparison:
Bob: https://dl.dropboxusercontent.com/u/5572...h1-bob.mp4
Yadif: https://dl.dropboxusercontent.com/u/5572...-yadif.mp4

Installation
-1.) Hardware Requirements / Software Requirements
SNB, IVB, HSW Intel Hardware
Ubuntu Trusty mini iso installed x64. Download link for example here: http://archive.ubuntu.com/ubuntu/dists/t...t/mini.iso
If you have a UEFI only system, you need to use the server iso as your basis, as the mini iso won't boot in UEFI mode. Server iso is here: http://cdimage.ubuntu.com/ubuntu-server/...-amd64.iso

0.) Basic Installation and script tuning
After the mini iso is installed, continue with the following steps:

Code:
sudo apt-get update
sudo apt-get install ssh python-software-properties software-properties-common udisks upower xorg alsa-utils mesa-utils git-core librtmp0 lirc libmad0 lm-sensors libmpeg2-4 avahi-daemon libnfs1 consolekit pm-utils libva1 vainfo libva-intel-vaapi-driver linux-firmware
sudo apt-get dist-upgrade

Allow every user (everyone) to start X11
Code:
sudo dpkg-reconfigure x11-common

Create the xbmc user and it add it the relevant groups. If you have created the xbmc user during installation only do the usermod part.
Code:
sudo adduser xbmc
sudo usermod -a -G cdrom,audio,video,plugdev,users,dialout,dip xbmc


To use the following upstart procedure you need to create /etc/init/xbmc.conf to start xbmc via upstart. That scripts does only wait for your HDMI device, if you want to wait for networking, you have to add that.
Code:
# xbmc-upstart
# starts XBMC on startup by using xinit.
# by default runs as xbmc, to change edit below.
env USER=xbmc

emits xbmc-started
description     "XBMC-barebones-upstart-script"
author          "Matt Filetto"

start on (filesystem and stopped udevtrigger)
stop on runlevel [016]

# tell upstart to respawn the process if abnormal exit
respawn
respawn limit 10 5
limit nice 21 21

script
exec su -c "xinit /usr/bin/xbmc --standalone -- /usr/bin/X -bs -nolisten tcp :0" $USER
# the following two are to get an idea, if you want to user a window manager
# sudo apt-get install fluxbox and comment the above exec line
# only one exec line is allowed.
#   exec su -c "xinit /usr/bin/fluxbox -- /usr/bin/X -bs -nolisten tcp :0" $USER
end script
# remove all those to set Full rgb range make sure to change HDMI2 to match your device
# starting from the next line, including end script
# post-start script
# sleep 1
# DISPLAY=:0 xrandr --output HDMI2 --set "Broadcast RGB" Full
# end script

edit /etc/security/limits.conf and add before the end. remember xbmc is the username, not the application. This will allow your user to get the audio thread a bit more priority.
Code:
xbmc             -       nice            -1

Last thing is missing some permissions to shutdown, suspend the computer, therefore create the file /etc/polkit-1/localauthority/50-local.d/custom-actions.pkla with the following content (don't introduce line breaks, especially the Action= line must be exactly one line (especially no linebreaks or auto ".." in freedesktop.udisks.*), verify this):
Code:
[Actions for xbmc user]
Identity=unix-user:xbmc
Action=org.freedesktop.upower.*;org.freedesktop.consolekit.system.*;org.freedesk​top.udisks.*
ResultAny=yes
ResultInactive=yes
ResultActive=yes

[Untrusted Upgrade]
Identity=unix-user:xbmc
Action=org.debian.apt.upgrade-packages;org.debian.apt.update-cache
ResultAny=yes
ResultInactive=yes
ResultActive=yes


1.) Installation of the repository and the new packages
Code:
sudo apt-add-repository ppa:wsnipex/xbmc-fernetmenta-master
sudo apt-get update
sudo apt-get install xbmc xbmc-bin

3.) XBMC settings
System->Settings->System->Video Settings:
Vertical Sync: Let Driver decide

System ->Video->Acceleration:
Enable HQ Scalers for scaling above: 20%
Allow hardware acceleration (VDPAU): off
Allow hardware acceleration (VAAPI): On
Use Mpeg-2 VAAPI: Yes
Use Mpeg-4 VAAPI: if you like
UseVC-1 VAAPI: off (this causes vc1 interlaced to segfault, when on)
Adjust Refreshrate to match video: On

If you experience kernel hangs (dmesg will tell), you can set Prefer VAAPI Render: Off that will force the swfilter even when progressive / VAAPI BOB is in use.

System -> Video -> Playback
Sync Playback to Display: On
Sync Method: Video Clock (Drop/Dupe)
Adjust display refresh rate to match video: On Start / Stop

When playing some 720p file or lower (do you get why?) open the movie icon and set Deinterlace: Auto and Deinterlace Method to: Deinterlace (if it causes too much cpu load, choose Bob (Celeron Baytrail and Celeron 847 Nucs(!)) - also set Scaling algorithm to Lanczos 3 optimized (also not for Baytrail and Celeron Nucs, only for HD3000 and faster). Save for all files.

If you are running a Baytrail NUC or a 847 Celeron NUC or comparable - choose Scaling: Bilinear and Deinterlace-Method: BOB

advancedsettings.xml in /home/xbmc/.xbmc/userdata/advancedsettings.xml should contain (don't create that file / directory as root - use the xbmc user, e.g. mkdir -p /home/xbmc/.xbmc/userdata/):
Code:
<advancedsettings>
   <loglevel hide="false">0</loglevel>
  <cputempcommand>sensors|sed -ne "s/Core 0: \+[-+]\([0-9]\+\).*/\1 C/p"</cputempcommand>
  <gui>    
    <algorithmdirtyregions>3</algorithmdirtyregions>
    <nofliptimeout>0</nofliptimeout>
  </gui>    
<video>
  <latency>
    <delay>50</delay>
    <refresh>
      <min>23</min>
      <max>24</max>
      <delay>175</delay> <!-- set to zero or adjust if audio seems out of sync with 24p movies -->
     </refresh>
  </latency>
</video>
</advancedsettings>

Especially the RSS Reader produces high CPU load. You can disable that one under Appearance setting.

Howto update xbmc
As xbmc is a normal ubuntu package, installed via the ppa, it's as simple as:
Code:
sudo apt-get update
sudo apt-get upgrade

Fancy Splash?
Code:
sudo apt-get update
sudo apt-get install plymouth-label v86d
wget http://excyle.nl/plymouth-theme-xbmc-logo.deb
sudo dpkg -i plymouth-theme-xbmc-logo.deb
Remeber to edit /etc/default/grub and to change:
Code:
GRUB_CMDLINE_LINUX_DEFAULT=""
to
Code:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

We are now done. A final reboot and everything should work:
Code:
sudo reboot


Troubleshooting
In order to get any help, please provide the following logs.
Code:
sudo apt-get install pastebinit
dmesg | pastebinit
cat ~/.xbmc/temp/xbmc.log | pastebinit
cat /var/log/Xorg.0.log | pastebinit
DISPLAY=:0 vainfo | pastebinit
dpkg -l |grep mesa | pastebinit
id | pastebinit
aplay -L | pastebinit

Audio
Check if you audio device is muted
You can use alsamixer -c0 or alsamixer -c1 to do it manually, or use something like:
Code:
amixer set 'IEC958',0 unmute

If you want to run pulseaudio, please see the xbmc wiki before: http://wiki.xbmc.org/index.php?title=PulseAudio

IRC Channel
Out of historical reasons, you can join #xbmc-xvba for discussing this howto. The channel name shall make us remember forever, that best hardware is worth nothing, if there are no drivers for it :-)

Happy penguin:
[Image: amd-dolby-truehd-320.jpg]

Current Issues
- MADI / MACI are non working on all architectures, we disabled them in code
- To use VAAPI BOB on HSW, you need to build libva-driver-intel 1.3.2 or higher from source, alternatively you can install that driver from wsnipex vaapi repository
- There is an upstream bug in mesa/dri/libva which cause out of a sudden to start tearing. If you press stop xbmc gui will hang and you can see a kernel hang with dmesg. Upstream report is here: https://bugs.freedesktop.org/show_bug.cgi?id=78960 A workaround is to disable "Prefer VAAPI Render method" under Video -> Acceleration (Expert Mode). This will produce a bit more CPU load but will cure that error.

[History]
14/01/05: Update to kernel 3.13-rc7
14/01/12: Update to kernel 3.13-rc8
14/01/20: Update to kernel 3.13 final
14/01/30: Update to kernel 3.13.1
14/02/06: Told howto update.
14/02/07: Update to kernel 3.13.2
14/02/14: Update to kernel 3.13.3
16/02/14: Add code to set Display to RGB Full mode
14/02/22: Update to kernel 3.13.4
14/02/24: Update to kernel 3.13.5
14/04/09: Update to Ubuntu trusty
14/04/16: Coming from Saucy? Upgrade: http://forum.xbmc.org/showthread.php?tid...pid1677121
14/06/30: SwFilter Option has been removed. If you want to force a copy to system run disable the new setting: Prefer VAAPI Render in Video -> Acceleration. This is not needed in general, cause when Deinterlace or Bob is active this is automatically bypassed.
(This post was last modified: 2014-07-08 16:38 by fritsch.)
find quote
Frank-NL Offline
Donor
Posts: 142
Joined: Sep 2012
Reputation: 1
Post: #2
A thank you to everybody involved. I currently use a i3 3220 with a GT610. The picture quality is great, but I'm wasting the built in GPU.

What are going to be the minimum requirements for T/S deinterlacing? The 3220 has
HD Graphics 2500, which is not really powerful.
find quote
fritsch Online
Team-XBMC Developer
Posts: 5,461
Joined: Aug 2011
Reputation: 129
Location: Karlsruhe
Post: #3
Quote:Temporal / Spatial Deinterlacing will come during the end of the year. VPP is technically ready to use it, but - for now - no backend has implemented it (intel's job).

Nobody knows - cause it does not exist in the intel world for now.
find quote
Frank-NL Offline
Donor
Posts: 142
Joined: Sep 2012
Reputation: 1
Post: #4
OK. I guess I will have to wait for it to try. I really like T/S and the GT610 does of lot of it on my HTPC with 1080i live tv.
find quote
Hörnchen Offline
Junior Member
Posts: 3
Joined: May 2009
Reputation: 0
Post: #5
(2013-05-26 00:23)fritsch Wrote:  (*) Some Sandybridge chips need to have RC6 disabled. This has nothing to do with this version, but is a hw, driver, mesa bug - which is also existing with other versions. You know, that you are affected when your machine freezes instantly while watching some channels. To workaround it:
Code:
sudo edit /etc/default/grub
change the following line:
GRUB_CMDLINE_LINUX_DEFAULT="splash quiet"
to read:
GRUB_CMDLINE_LINUX_DEFAULT="i915.i915_enable_rc6=0 splash quiet"
afterwards:
sudo update-grub
sudo reboot

This workaround is not necessary if you disable RC6 in the Bios.
On the Biostar Celeron 847 Board RC6 can be disabled in the GPU Settings.
find quote
fritsch Online
Team-XBMC Developer
Posts: 5,461
Joined: Aug 2011
Reputation: 129
Location: Karlsruhe
Post: #6
Yeah - no such bios setting on my Asus - and doing it in the OS has more flexibility. Did you already test the VPP? Does it work as you expected? You see the difference at all?
(This post was last modified: 2013-05-26 12:59 by fritsch.)
find quote
Morrtin Offline
Member
Posts: 67
Joined: Jul 2011
Reputation: 0
Location: Vienna
Post: #7
Hey Fritsch. I like to give it a try and preparing a fresh installation of Ubuntu. But before I would like to see how it look like before the change. Do you have video material where I have to deinterlace? I have no LiveTV :-(
find quote
fritsch Online
Team-XBMC Developer
Posts: 5,461
Joined: Aug 2011
Reputation: 129
Location: Karlsruhe
Post: #8
Yes - of course: check that one: https://dl.dropboxusercontent.com/u/5572...erlaced.ts
Check the horicontal lines while, moving and also check that it jumps like hell - if you enable "deinterlacing" with current code
find quote
Morrtin Offline
Member
Posts: 67
Joined: Jul 2011
Reputation: 0
Location: Vienna
Post: #9
Thanks. When I play the movie now (De-interlace video: Off) I see horizontal lines when the cow is moving.

When I change my settings to:

De-interlace video: Auto
De-interlace method: Auto select
Video scaling method: Bilinear

I don't see this horizontal lines. For me it looks good. But as it is cold outside, I like to make a new server base installation, I will try it out anyway.
find quote
fritsch Online
Team-XBMC Developer
Posts: 5,461
Joined: Aug 2011
Reputation: 129
Location: Karlsruhe
Post: #10
Did you test with the "new" ppa? (obviously you did) Could you get me your xbmc.log? To see everything works fine, including vainfo?
(This post was last modified: 2013-05-26 15:17 by fritsch.)
find quote
Morrtin Offline
Member
Posts: 67
Joined: Jul 2011
Reputation: 0
Location: Vienna
Post: #11
I tested it with official one -> ppa:team-xbmc/ppa

I just finished installing the base system. If you want I can install my usual system to get you a log and vainfo, or I could use the new vaapi ppa and test it there.

What shell it be? :-)
find quote
fritsch Online
Team-XBMC Developer
Posts: 5,461
Joined: Aug 2011
Reputation: 129
Location: Karlsruhe
Post: #12
With the typical ppa, there is no deinterlacing at all - it just has that option and seems to double fps. You will see a whole lot jumping pixel up, pixel down, especially when you watch the logo of the station on the upper right, this is the reason for this VPP testing :-). Here, I made another sample, to better illustrate: https://dl.dropboxusercontent.com/u/55728161/tennis.ts
(This post was last modified: 2013-05-26 15:39 by fritsch.)
find quote
Frank-NL Offline
Donor
Posts: 142
Joined: Sep 2012
Reputation: 1
Post: #13
I tested the PPA this morning. Libva-glx1 was not updated automatically for some reason so first XBMC didn't want to start because of the video driver.

After that was fixed, everything seemed to work really well. Promising developments.

However I switched back to the GT610 because I couldn't fix the colorspace due to xrandr not working and swichting between refresh rates was really slow. I think I will give it a try again when there is a stable OE build with Gotham final.

Tested on Quantal by the way.
find quote
fritsch Online
Team-XBMC Developer
Posts: 5,461
Joined: Aug 2011
Reputation: 129
Location: Karlsruhe
Post: #14
Thanks for the feedback, will add the libva-glx1 into the installation howto. Colorspace issues, can be workarounded or done via

Code:
for Limited:
DISPLAY=:0 xrandr --output HDMI1 --set "Broadcast RGB" "Limited 16:235"
xor for FULL:
DISPLAY=:0 xrandr --output HDMI1 --set "Broadcast RGB" "Full"

you need a recent kernel (best 3.9.x for this to work). It may be that the 3.9.0 kernel correctly identifies your TV / Color Range out of the box without doing anything additional.

-> Gotham for now sucks balls on vaapi, as mpeg-2 is severely broken within ffmpeg, all you get is a nice segfault :-).

On Ubuntu installation is rather easy:
64 bit:
Code:
mkdir ~/3.9.x
cd ~/3.9.x
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.9.4-saucy/linux-headers-3.9.4-030904-generic_3.9.4-030904.201305241545_amd64.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.9.4-saucy/linux-headers-3.9.4-030904_3.9.4-030904.201305241545_all.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.9.4-saucy/linux-image-3.9.4-030904-generic_3.9.4-030904.201305241545_amd64.deb http://mirrors.us.kernel.org/ubuntu//pool/main/l/linux-firmware/linux-firmware_1.106_all.deb
sudo dpkg -i *deb
32 bit:
Code:
mkdir ~/3.9.x
cd ~/3.9.x
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.9.4-saucy/linux-headers-3.9.4-030904-generic_3.9.4-030904.201305241545_i386.deb  http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.9.4-saucy/linux-image-3.9.4-030904-generic_3.9.4-030904.201305241545_i386.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.9.4-saucy/linux-headers-3.9.4-030904_3.9.4-030904.201305241545_all.deb http://mirrors.us.kernel.org/ubuntu//pool/main/l/linux-firmware/linux-firmware_1.106_all.deb
sudo dpkg -i *deb
sudo reboot
(This post was last modified: 2013-05-26 16:10 by fritsch.)
find quote
Frank-NL Offline
Donor
Posts: 142
Joined: Sep 2012
Reputation: 1
Post: #15
Ah I didn't do that. I am running the stock Quantal kernel, 3.5.0-31. I am stuck with that one because the HDHomerun driver will not compile on a newer Ubuntu kernel since they removed the dvb headers for an unknown reason.

Will there be an OE Frodo build with your patches? I am not interested in the Gotham builds since they are too alpha for my taste.
(This post was last modified: 2013-05-26 16:12 by Frank-NL.)
find quote
Post Reply