AVS Forum banner

Intel QuickSync Decoder - HW accelerated FFDShow decoder with video processing

72K views 294 replies 63 participants last post by  J_Palmer_Cass 
#1 ·
Updated Jone 22nd 2013
Hi,
My name is Eric Gur and I've taken upon myself a side project at my Intel position to make the Intel SandyBridge (or newer) hardware accelerated video decoding technology freely accessible to everyone.
The project name is Intel QuickSync Decoder.
 
To do so, I decided to embed the Intel QuickSync technology introduced in SandyBridge into the widely popular FFDShow video decoder filter.
Nowadays, the Intel QuickSync Decoder is officially integrated in FFDShow, LAV Video Decoder and PotPlayer.
 
Main features
* HW decode using Intel's high performance QuickSync engine.
* Decodes H264, MPEG2, VC-1, WMV9. DVD playback not supported.
* HW deinterlacing -auto or forced, with half or full (50/60p) output rate
* HW denoise and detail filters
* Soft 3:2 pulldown on marked streams.
 
* Support variable frame rate streams.
* Support headless iGPU (Intel GPU disconnected from display) on Windows 8 and newer.
 
If your system meets the requirements, I'd appreciate stability feedback with assorted quality and sources of video content.
To report a bug report or feature request, please post in this thread.
 
If something is broken, please provide me with a detailed report including (after reading the known issues section below) :
1. Hardware (CPU, GPUs)
2. Software (OS, driver version, player, splitter, etc.)
3. Access to the offending content. Share via your favorite file share sites. Limit content to
 
See less See more
#4 ·
Does it really require the latest graphics drivers? I'm not sure what version I'm running right now, but I'm pretty sure it's not the latest. I've got everything working well right now. I've read to many horror stories about problems with the later video drivers so I haven't bothered to upgrade. I'd like to try this out, but I don't want to mess up a working system.
 
#5 ·

Quote:
Originally Posted by winterescape /forum/post/20905980


Eric,

I assume the G620 will not nun this? .

I don't know, I don't have such a system.

Quote:
Originally Posted by duff99 /forum/post/20906583


Does it really require the latest graphics drivers?

Not a must, older drivers should work. I'm using a driver from April 2011. Hopefully newer drivers will deliver a better decoder. Currently there're few (rare) decoding issues that lead to image corruption (no crashes reported yet)but I haven't root caused them to the driver, might be solved in SW (either my code and/or the Intel Media SDK).
 
#7 ·

Quote:
Originally Posted by jskube84 /forum/post/20907765


Any chance of an x64 version?

Can be done. My code is quite simple with 64 bit in mind. It all depends how quickly I manage to get FFDshow compiled and running...
 
#8 ·
Eric - Thank you so much for taking this on.


I'd love to be able to transcode my windows media center tv recordings (mpeg 2, dolby digital WTV) into x264, and retain dolby digitial using intel quicksync. No change in resolution / aspect ratio / audio track. Just want to transcode the underlying video stream mpeg2-->x264


I have :


HD Homerun Prime 3 tuners (tv tuner)

Win 7 x64

Intel core i5-2500k

Latest intel video drivers


You should cross post on doom9.
 
#10 ·

Quote:
Originally Posted by ymarker /forum/post/20909060


Eric - Thank you so much for taking this on.


I'd love to be able to transcode my windows media center tv recordings (mpeg 2, dolby digital WTV) into x264, and retain dolby digitial using intel quicksync. No change in resolution / aspect ratio / audio track. Just want to transcode the underlying video stream mpeg2-->x264


...


You should cross post on doom9.

This should work with DirectShow based transcoders (this FFDSHow version will Encode using HW, it's a little out of my scope ATM). For super quick transcodes I personally use Media Espresso. For high quality stuff I take the time to demux the source stream transcode the video with x264 (ME GUI) and mux the streams to MKV.


My post at doom9 is:
http://forum.doom9.org/showthread.php?t=162442
 
#11 ·
New and improved version. Zip files contain documentation, please read.

Download version 0.12 alpha:

32 bit http://www.multiupload.com/5L5NL03997

64 bit http://www.multiupload.com/41UGJ3TQMI

Revision highlights:

v1.12:

* 64bit version is working.

* Optimized CPU usage (faster copying from GPU to CPU)

* More stable with LAV splitter. Previous version crashed on several MPEG2 transport with AVC1 (H264) video.

* Added time stamp stabilizing (transport stream issues).

* Added inverse telecine when stream has the right flags.
 
#12 ·
New and improved version. Zip files contain documentation, please read.

Download version 0.13 alpha:

32 bit http://www.multiupload.com/Z284JFR06X

64 bit http://www.multiupload.com/1YFGXD786C

Source Code http://www.multiupload.com/ZVMCN124A0

Revision highlights:

v1.13:

* Optimized memory copy even further. Memory copy has 2-6% overhead (out of process CPU usage).

* Fixed bug in memory copy when frame width wasn't mod128.

* VC1 playback is more stable. Still corruption on some clips.

* Fixed some small memory leaks.

* Compatibility with 2509 driver.

* Bug fixes & cleanup.

* Tested with driver versions 2509 and 2372.
 
#13 ·
New and improved version. Zip files contains installer documentation, please read.

Download version 0.14 alpha:

32 bit http://www.multiupload.com/LPX2JXB06S

64 bit http://www.multiupload.com/8H7ZPV5XKC

Source code http://www.multiupload.com/AXET69LL3P

Revision highlights:

v1.14:

* Created ffdshow installer. Installer will default to enabling the Intel QuickSync decoder on new installations.

* More speed optimizations. CPU is at its lowest frequency during playback with very low utilization. 2-3% on desktop and 5-6% on mobile. Mobile lowest frequency is half of desktop (800/1600).

* Fixed handling of interlaced content which is encoded as progressive frames.

* More robust and faster codec initialization
 
#16 ·
Eric already commented on that before, and sadly he doesn't have the time to keep a full DirectShow decoder alive as well.


If you want something more light-weight, LAV Video will eventually integrate a Intel Media SDK decoder based on Erics work as well. There is however no ETA, but keep your eyes open.
 
#17 ·
Question: My HTPC meets the hardware requirements, and Im currently running Shark's pack. Would it benefit me to install this over shark's?
 
#18 ·

Quote:
Originally Posted by blackangst /forum/post/21003597


Question: My HTPC meets the hardware requirements, and Im currently running Shark's pack. Would it benefit me to install this over shark's?

If you have playback working properly already, Why would you chance breaking that?

Those who attempt to fix what is not broken, will eventually have something that is broken.
 
#20 ·
Intel QuickSync video decoder also works with Celeron/Pentium SNB. At playback of 1080p24 AVC with Pentium G840,
 CPU usageSystem power
libavcodec+madVR40%55W
Intel QuickSync+madVR20%52W
Playing back 1080i60 AVC is more interesting. A weaker SNB processor can't handle decoding and deinterlacing simultaneously with libavcodec, but it can with Intel QuickSync.


- Celeron G530/Pentium G620/Pentium G840 SNB processor

- ASRock Z68 Pro3-M

- DDR3-2133 2 x 2GB (@2133MHz)

- Intel HD Graphics

- MPC HomeCinema, LAV Source/Splitter, ffdshow Video Decoder (libavcodec/Intel QuckSync, yadif on), madVR (softcubic 100); LAV Audio Decoder, ReClock (media adaptiation + WASAPI exclusive mode)

- La Traviata (2010) [2 min HD i video MKV].mkv (1080i60, AVC, DTS-HD MA)

libavcodec
 Celeron G530 2.4GHzPentium G620 2.6GHzPentium G840 2.8GHz
Dropped frames41299100
CPU usage (average)90%90%87%
GPU usage (average)44%84%84%
Rendering time (average)16.37 ms14.10 ms13.62 ms
Intel QuickSync
 Celeron G530 2.4GHzPentium G620 2.6GHzPentium G840 2.8GHz
Dropped frames200
CPU usage (average)69%61%61%
GPU usage (average)93%86%86%
Rendering time (average)14.96 ms13.81 ms13.78 ms
Unfortunately, 6 EUs are not enough even for Bicubic 50 in luma upsampling (rendering time ~18ms for SD video-based contents [rendering time must be less than 1/59.94 s = 16.68ms]). Celeron G530/Pentium G620 HD Graphics (+ DDR3-2133) is good enough for every kind of contents with Intel QuickSync + madVR Low Quality (bilinear/bilinear/bilinear). I still prefer madVR LQ to EVR because of smoother playback.


Update


madVR in medium quality settings (Bilinear/Bicubic 50/Bicubic 50) is also possible by overclocking GPU slightly. I observed that the average rending time at various SD video-based contents playback with the default GPU clock 1100MHz is at most 18ms. To reduce it to 16.68ms, overclocking GPU to 18/16.68 x 1100MHz = 1187MHz should be enough. Details:


- Celeron G530 under madVR (medium quality)
 
#21 ·
I thought Quicksync is not supported in Celeron/Pentium SNB? I tried it and it failed: If I choose Quicksync in the FFDShow Codec Page for H264 or MPEG2, my player defaults back to another decoder, in my case Microsoft DTV. If I go back to libavcodec, FFDShow is used as decoder. What am I missing?
 
#22 ·

Quote:
Originally Posted by renethx /forum/post/21004743


Unfortunately, 6 EUs are not enough even for Bicubic 50 in luma upsampling (rendering time ~18ms for SD video-based contents [rendering time must be less than 1/59.94 s = 16.68ms]). Celeron G530/Pentium G620 HD Graphics (+ DDR3-2133) is good enough for every kind of contents with Intel QuickSync + madVR Low Quality (bilinear/bilinear/bilinear). I still prefer madVR LQ to EVR because of smoother playback.


Update


madVR in medium quality settings (Bilinear/Bicubic 50/Bicubic 50) is also possible by overclocking GPU slightly. I observed that the average rending time at various SD videos (not film) playback with the default GPU clock 1100MHz is at most 18ms. To reduce it to 16.68ms, overclocking GPU to 18/16.68 x 1100MHz = 1187MHz should be enough.

Interesting. This suggests that we 1080/50i viewers may be able to squeeze a slightly higher quality decode out of this set-up, as we have 20ms a frame to play with?
 
#23 ·

Quote:
Originally Posted by alfonxs /forum/post/21012152


I thought Quicksync is not supported in Celeron/Pentium SNB? I tried it and it failed: If I choose Quicksync in the FFDShow Codec Page for H264 or MPEG2, my player defaults back to another decoder, in my case Microsoft DTV. If I go back to libavcodec, FFDShow is used as decoder. What am I missing?

Try this: uninstall both ffdshow and Intel graphics driver. Then install driver, then ffdshow. (I saw the same problem as you with 2100, this fixed it. Somehow Intel QS worked immediately with Celeron and Pentium.)
 
#24 ·
Eric,


Thank you very much for taking the effort to make Intel GPUs more open source friendly. We covered your efforts recently in a small news piece [ http://www.anandtech.com/show/4895/i...ing-to-ffdshow ]. Hopefully, this gives you a wider audience for feedback purposes.


Personally, I can't wait to try out your filters in the next HTPC review using a SNB system!


We are very happy to note that Intel is considering the needs of the HTPC community with respect to both hardware and software support (as the recent healthy increase in the HQV scores show). May I also take this opportunity to request you to look into the quality of the deinterlacing algorithm used by the Intel drivers? Currently, ATI leads in deinterlacing quality followed by Nvidia and then, Intel. Ideally, we would like some sort of vector adaptive deinterlacing instead of the motion adaptive approach currently being adopted.
 
#25 ·
RE: QuickSync


Many of the reviews and articles on the SB Pentiums and Celerons mention the lack of QuickSync. However this thread suggests some QuickSync support.


Reading between the lines it appears that QuickSync includes both decoding and encoding acceleration.


Is it the case that the decoding is supported in all SB processors, and only the encoding (used for hardware transcoding acceleration) is not available on the lower end processors?
 
This is an older thread, you may not receive a response, and could be reviving an old thread. Please consider creating a new thread.
Top