• 1
  • 50
  • 51
  • 52(current)
  • 53
  • 54
  • 128
Linux VAAPI: Nuc, Chromebox, HSW, IVB, Baytrail with Ubuntu 14.04
Sure

This is using OE 4.0.7 (I reverted back)

All software - Multi threaded decoding - "De-interlace" - 50 fps - totally smooth (Load ~2.00)
VAAPI - Bob - 50fps
VAAPI - SW Filter for VAAPI - Bob - 38-45 fps
VAAPI - SW Filter for VAAPI - De-interlace - 38-45 fps
Updated to OpenELEC_Helix-Generic.x86_64-devel-20140611170617-r18580-ga84b926.tar

LiveTV that was previously smooth on 4.0.7 now comes out at 25-50 fps with all software. Load isn't too high either - less than 2.

I can provide a sample if you're interested.
(2014-07-18, 22:47)ant_thomas Wrote: Sure

This is using OE 4.0.7 (I reverted back)

All software - Multi threaded decoding - "De-interlace" - 50 fps - totally smooth (Load ~2.00)
VAAPI - Bob - 50fps
VAAPI - SW Filter for VAAPI - Bob - 38-45 fps
VAAPI - SW Filter for VAAPI - De-interlace - 38-45 fps

That sample was not interlaced at all. Never force "Deinterlace to On", keep that one on Auto. For the linked test, you can also set Deinterlace to Off and recompare.
Edit: And also disable the "Use SW Filter" for this test. Most likely the CPU is too slow to copy 50 fps via sse4 - i want to just test the GPU as decoder.
First decide what functions / features you expect from a system. Then decide for the hardware. Don't waste your money on crap.
Deinterlace is set to Auto.

It must be the SW Filter that is causing the drops then since deinterlacing isn't happening.

Absolutely smooth at 50fps for both software and VAAPI.
Yes, that I said above.

Quote:Edit: And also disable the "Use SW Filter" for this test. Most likely the CPU is too slow to copy 50 fps via sse4 - i want to just test the GPU as decoder.

SWFilter: Copy every decoded frame back from the GPU to System Memory and care here for deinterlacing - baytrail can cope with max40 of them on average. My hsw can do more than 500 - btw. SWFilter is a workaround for Intel not providing decent and working Postprocessing on the GPU.

Edit: When that option is enabled _all_ frames are copied, no matter if you deinterlace or not. We have changed that in the version advertized in this ppa (first page).
First decide what functions / features you expect from a system. Then decide for the hardware. Don't waste your money on crap.
Hello,

my XBMC freezes after finishing any playback.

xbmc.log http://paste.ubuntu.com/7824406/
dmesg http://paste.ubuntu.com/7824388/
/sys/class/drm/card0/error http://paste.ubuntu.com/7824400/

Cheers
Jusic
Hey there,
I saw in some Changelogs in VAAPI threads that with VAAPI 1.20 (with VPP-API) (or any other version) a hardware motion adaptive Deinterlacer was added. Now it is replaced by Yadif in almost all builds. Why isnt it integrated in the famous builds ?
because the implementation of VPP in the driver is crap.

EDIT: with crap I mean it simply does not work. We have actually implemented here but deactivated because it is a disaster. I have the feeling the the OS devs of Intel don't care much about this state.
Is there any chance of adding a W3FDIF option for de-interlacing?

YADIF 2x has some issues with fast moving cameras with saturated blue/red lighting moving quickly it appears. Bob delivers far better motion rendition on the same sequences, but you get the resolution drop. YADIF 2x is usually good - but gives some of the low luminance/high saturation stuff a 25p look which is really distracting.

I'm going to give compiling my own build a go with a change to xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp replacing
Code:
m_filters_next = "yadif=1:-1";
with
Code:
m_filters_next = "w3fdif";
as a quick and dirty check? (I think this should work to replace the 2x full field-rate de-interlacing, leaving YADIF 1x for the frame-rate deinterlacing - but I'm not an experienced coder...)

Will let people know how I go. The stuff I watch appears to expose issues with YADIF 2x - hopefully Weston 3-field will work better for me. (I can run it on a Quad i7 to see how much CPU it takes...)
However when I select De-interlace "AUTO" and mode "De-interlace" (which I think should now select W3FDIF I get a green screen). When I force "De-interlace" to "ON" I get fluid motion with some jerks (though not sure my i7 video card is doing a great job and not sure what frame rate I'm running at - my AVR doesn't want to tell me...) CPU is fine.

Hmm - well think I may be slightly out of my depth. Thought the
Code:
if(flags & FILTER_DEINTERLACE_FLAGGED)
      m_filters_next += ":1";;

bit might be causing W3FDIF an issue as it is appending an argument not used by W3FDIF so nulled out the ":1" bit. Then replaced it with the equivalent W3FDIF flag which is ":interlaced"

That got rid of the green screen in AUTO (presumably caused by sending W3FDIF a parameter it wasn't expecting?)

However whether I'm using SD or HD native interlaced content I get skipped or dropped frames a go go (on a 4GHz i7-2600K) This is with software multithreaded decoding enabled. CPU levels are very low for SD content - higher for HD.

(And there is an issue with 4:2:2 H264 stuff that means auto doesn't work anyway - YADIF 2x also fails to detect interlaced fields and needs to be switched from "Deinterlace AUTO" to "Deinterlace ON" to enable de-interlacing.)
(2014-07-25, 22:18)noggin Wrote: m going to give compiling my own build a go with a change to [b]xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp

I played around with that and had it working... but by "working" I mean using the W3FDIF filter. However, it seemed like the CPU couldn't keep up - terribly low frame rate. Search back in the thread, you'll see where we discussed it.

Here's a patch that replaces "De-Interlace" with Weston3, and "De-Interlace (Half)" with Yadif 2x - I guess my thinking at that time was to be able to compare W3 with Y2x, but I don't know why I didn't just put W3 in place of "Half" Smile

Code:
diff -U 3 -H -d -r -N -- xbmc/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp xbmc-patched/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
--- xbmc/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp    2014-06-17 14:19:21.693787804 -0400
+++ xbmc-patched/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp    2014-06-17 14:22:58.776657060 -0400
@@ -399,12 +399,9 @@
   if(flags & FILTER_DEINTERLACE_YADIF)
   {
     if(flags & FILTER_DEINTERLACE_HALFED)
-      m_filters_next = "yadif=0:-1";
+      m_filters_next = "yadif=1:-1:0";
     else
-      m_filters_next = "yadif=1:-1";
-
-    if(flags & FILTER_DEINTERLACE_FLAGGED)
-      m_filters_next += ":1";
+      m_filters_next = "w3fdif=simple:all";

     flags &= ~FILTER_DEINTERLACE_ANY | FILTER_DEINTERLACE_YADIF;
   }

You can of course change the "simple:all" values to the other options - those were just the last I played with I guess. I didn't really see much improvement going from complex to simple.

I'd be interested in your results though as I've since gotten some other issues worked out on my end that may have been a contributing factor in my results. Might have to try it again at some point.
If you do this in DVDVideoCodecFFmpeg.cpp you either use whatever version I had for Gotham or it does not show any effect when being used with vaapi. Current version runs filter on its own thread which could improve things. Not tried myself yet.
(2014-07-26, 14:50)FernetMenta Wrote: If you do this in DVDVideoCodecFFmpeg.cpp you either use whatever version I had for Gotham or it does not show any effect when being used with vaapi. Current version runs filter on its own thread which could improve things. Not tried myself yet.

Got a bit further and it seems to be working - but dropping/skipping a lot of frames (possibly more with "complex" rather than "simple" coefficients in W3FDIF though I may be wrong) Suspect I may not have the CPU power for entirely software everything.

Currently using (and I know it may not be right for half rate de-interlacing in AUTO as I'll be passing "interlace" rather than "1" to YADIF) :
Code:
if(flags & FILTER_DEINTERLACE_HALFED)
      m_filters_next = "yadif=0:-1";
    else
      m_filters_next = "w3fdif=complex";

    if(flags & FILTER_DEINTERLACE_FLAGGED)
      m_filters_next += ":interlaced";
Am using standard XBMC github source - with software decoding (to force software de-interlacing)

If I want to use VAAPI decoding and Software deinterlacing should I use this github source : https://github.com/FernetMenta/xbmc ?
Yes.
First decide what functions / features you expect from a system. Then decide for the hardware. Don't waste your money on crap.
Is the software de-interlacing for VAAPI decoded content handled by the same bit of code in DVDVideoCodecFFmpeg.cpp or do I need to modify somewhere else as well to ensure YADIF 2x is replaced by W3FDIF in the Fernetmenta branch? (git won't let me search a fork)
  • 1
  • 50
  • 51
  • 52(current)
  • 53
  • 54
  • 128

Logout Mark Read Team Forum Stats Members Help
VAAPI: Nuc, Chromebox, HSW, IVB, Baytrail with Ubuntu 14.0416