Log in

View Full Version : Intel QuickSync Decoder - HW accelerated FFDShow decoder with video processing


Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 [44] 45 46 47 48 49 50 51 52 53 54

Yups
1st July 2013, 20:50
Media SDK 2013 R2:

Intel® Media SDK 2013 R2 also introduces changes to the static dispatcher library which improve dynamic libraries loading algorithm in multi-GPU cases and headless mode via Microsoft* DirectX* 11.1.


Better headless support with the new SDK release?

egur
1st July 2013, 21:22
Better headless support with the new SDK release?
They fixed an issue I ran into while testing D3D11. It's mostly important for backwards compatibility. Shouldn't change anything with this decoder.

egur
1st July 2013, 22:28
It turns out my Asus board has a license for Virtu MVP so I did a few tests.
My setup:
* Windows 8 x64 fully patched.
* LAV splitter and EVR.
* Latest released ffdshow
* SandyBridge i7-2600
* Latest Intel drivers (15.28).
* AMD Radeon 6950 + Catalyst 13.4
* Single display connected to AMD dGPU.
* Virtu MVP from Asus site (2.1.221.24927)

32 bit - ZoomPlayer or mpc-hc
* iGPU profile: crashed when calling Direct3DCreate9 or Direct3DCreate9Ex. When not running under a debugger, the image is just black.
* dGPU profile: works fine in D3D11 mode.
* No profile or disabled profile - works fine in D3D11 mode.

64 bit - mpc-hc x64
* iGPU profile: works fine in D3D11 mode. This should be D3D9! Will dig deeper later on.
* dGPU profile: works fine in D3D11 mode.
* No profile or disabled profile - works fine in D3D11 mode.

I tried to contact LucidLogix (the company that makes Virtu), maybe they have a newer version that works better.

Update:
Same setup but screen is connected to the iGPU.
32 bit
* All modes (i/d/disabled) - all work in D3D9. dGPU profile should have been D3D11.
64 bit
* iGPU mode - works in D3D9.
* dGPU mode - doesn't work (fallback to libavcodec)
* No profile or disabled profile - works fine in D3D9 mode.

Update2
I updated to the latest version from Lucid's website. The results didn't change much.
Now I watched more than 2 seconds and saw that there's massive A/V sync and the CPU jumps from 2% to 27% utilization! Disabling Virtu for the player solved the problem.
Something is horribly wrong here :(
So until I get support from Lucid, nothing I can do with it. The version from the LucidLogix website doesn't accept the Asus license so in 30 days it will expire.
Conclusion (for now) - don't mix QS (only this decoder) and Virtu MVP.

jkauff
2nd July 2013, 00:07
Also, madVR doesn't work in Virtu's iMode. I don't put any of my players in Virtu.

Your "fake display" hack works fine for ffdshow and LAV. I have yet to play around with Win 8 without the fake display to see if it will use the iGPU. I'll give it a try tomorrow.

theoneofgod
2nd July 2013, 00:23
QSV in GOM Player using the latest ffdshow works fine with Virtu and a dGPU. The dGPU is the primary output, using DVI. I don't add the media player to Virtu's applications list. No manual tricks or anything.
I install the iGPU before the dGPU to insure ffdshow installs the correct dll, after doing this, I setup ffdshow codecs to use QSV for the relevant sources. Running AMD Radeon 13.4 drivers without Catalyst, I use Radeon Pro and MSI Afterburner, not that it matters.
When playing an mkv, ffdshow states Intel QSV D3D11.

egur
2nd July 2013, 09:31
Yes, it works fine with Virtu when Virtu is not active for the player/app.
Please check if the new ffdshow version installs correctly on your system, I've fixed the installation issue (for windows 8). In Windows 7, when connecting the screen to the dGPU, a system check will not see the iGPU and will not install QS. This is done because ffdshow admin (clsid) doesn't want this DLL to always install. As far as I'm concerned, I'd remove the check.

itsonlyjustincase
2nd July 2013, 10:55
Any update regarding the Optimus issue ?

theoneofgod
2nd July 2013, 10:56
I just reinstalled ffdshow, it installed fine, QSV shown for Windows 8, can't say for Windows 7.

egur
2nd July 2013, 11:22
Any update regarding the Optimus issue ?
Not yet, I have identified a few contacts and waiting for an answer.

I just reinstalled ffdshow, it installed fine, QSV shown for Windows 8, can't say for Windows 7.
For window 7, a screen (or fake screen) must connected to the iGPU during both installation and runtime.

jkauff
3rd July 2013, 01:13
For window 7, a screen (or fake screen) must connected to the iGPU during both installation and runtime.
I played around with Win 8 without the fake screen today, and LAV seems to have trouble with it. Config dialog shows QS as available, but doesn't use it during runtime. I'll try re-installing the Intel drivers tomorrow and see if that makes a difference.

itsonlyjustincase
3rd July 2013, 13:10
I played around with Win 8 without the fake screen today, and LAV seems to have trouble with it. Config dialog shows QS as available, but doesn't use it during runtime. I'll try re-installing the Intel drivers tomorrow and see if that makes a difference.

Same here it uses avcodec

wanezhiling
12th July 2013, 12:02
9.18.10.3214 (http://drivers.softpedia.com/get/GRAPHICS-BOARD/INTEL/Intel-Iris-HD-Graphics-Driver-15333214-Beta-for-Windows-8-Windows-81.shtml)

theoneofgod
14th July 2013, 06:56
9.18.10.3214 (http://drivers.softpedia.com/get/GRAPHICS-BOARD/INTEL/Intel-Iris-HD-Graphics-Driver-15333214-Beta-for-Windows-8-Windows-81.shtml)

Those drivers make my QSV slow with Media Converter.

ryrynz
14th July 2013, 07:12
9.18.10.3214 (http://turbobit.net/download/free/2kd5wdg67xqu#) Windows 7/8/8.1 32/64 bit for HD graphics 4000+
Turbobit.net (217MB)

wanezhiling's link is for Windows 8/8.1 only.

egur
14th July 2013, 08:00
Beta drivers...
They are meant mostly for developers to test Win 8.1 new features.

theoneofgod
14th July 2013, 08:19
Beta drivers...
They are meant mostly for developers to test Win 8.1 new features.

Thought so, didn't expect them to break existing functionality though.

diizzy
19th July 2013, 11:12
First of all, great work Eric! :-)

I reported this to nevcairiel who directed it to you so I'll just quote it.
I just updated to the newest version (0.58.1) and there seems to be a regression using QuickSync. From what I can tell it pretty much affects all types of MPEG-2 irregardless of container (.ts, .mpg, .vob). If you're lucky you'll get a few frames correctly but it'll then play roughly one frame per second making it a slideshow. Turning off QuickSync fixes the issues, H.264 works fine.

Windows 7 SP1 64-bit
LAV Filters 0.58.1 (32-bit)
MPC-HC 1.7.0.7634 (32-bit)
madVR 0.86.9 (32-bit)
Intel Graphics HD4000 (i7-3770) - v9.18.10.3165
https://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&ProdId=3442&DwnldID=22873&ProductFamily=Desktop+Boards&ProductLine=Intel%C2%AE+7+Series+Chipset+Boards&ProductProduct=Intel%C2%AE+Desktop+Board+DZ77GA-70K&lang=eng

Best regards,
Daniel

egur
19th July 2013, 16:08
I couldn't reproduce on an i7-2600 with Windows 8.
Plays great with the LAV + MadVR (ZoomPlayer and MPC-HC).
I'm using LAV as splitter (splitter source) in my tests. What do you use?
Also, try changing settings in MadVR and see if things change (like queue lengths, etc.). My MadVR settings is default + DXVA scaling.

diizzy
19th July 2013, 16:39
I did a few more tests, something breaks when you enable hardware deinterlacing in LAV Filters (QS). I confirmed on both MPEG2 and H.264. QS and YADIF works fine though...
My settings are default in MadVR including scaling. Didn't notice it on H.264 earlier because I just a few files that are interlaced.
Best regards,
Daniel

nevcairiel
19th July 2013, 17:36
Yeah i'm personally not really convinced that the QS hardware deinterlacing works all that great, or it fails when i disable timestamp correction in QS, or something, but i've heard numerous problem reports from it.

Generally, you should just turn it off, and turn YADIF off as well, and just let your renderer do the deinterlacing.

egur
20th July 2013, 14:56
I also checked with and without HW deinterlacing. Still works on all my 18 MPEG2 test clips.
In one clip, when HW DI is off, MadVR had issues. This clip is a pathological case where the stream switches between soft and hard telecine (evil_trees.ts clip).
Normal clips had no issues.
The reason I asked about the splitter is that some splitters may produce very bad time stamps affecting playback, nothing I can do about this...

Please share a representative clip (<100mb).

diizzy
20th July 2013, 18:20
I can cut a few regular TS files too but here a MTS file.
http://projects.pyret.net/dump/sample.mts
I use LAV Filter as splitter, missed to mention it earlier.
//Daniel

theoneofgod
23rd July 2013, 11:42
What a dick move to Windows 8.1 to find Lucid doesn't work! ffdshow works fine though with QSV, if not better on Windows 8.1

VFR maniac
23rd July 2013, 15:53
Hi.
I'm using Marumo ISDB Splitter, which supports PID change in a service of ISDB stream.
http://www.marumo.ne.jp/junk/isdbsplitter-0.2.19.lzh

I can't use Intel Quick Sync Decoder with this splitter.
egur's ffdshow won't start playback of any ISDB stream.
LAV Video Decoder can't select as an active decoder for any ISDB stream.

Is this an issue of Intel Quick Sync Decoder?
Or of Marumo ISDB Splitter?

Here is my playback environment.
OS: Windows 7 Professional SP1 64bit
CPU: Core i5-3570 Intel HD Graphics 2500 (9.18.10.3165)
Player: MPC-HC rev7646 (x86)
Video Renderer: madVR 0.86.9

egur
23rd July 2013, 21:12
I don't know whose fault it is...
Could be a different (unsupported) fourCC code or an unsupported profile.
If there for me a way to test this?

VFR maniac
23rd July 2013, 21:46
What is needed for you to test and confirm this issue?

At least, I can use Quick Sync Decoder of your ffdshow and LAV Video when LAV Splitter is used to split from ISDB stream.

egur
23rd July 2013, 22:09
For testing I need a sample file and how to setup this splitter. If this splitter require connection to a live TV broadcasts (not via the Internet) then I can't test this.
What is this splitter used for?

VFR maniac
23rd July 2013, 22:23
What is this splitter used for?
For local file playback.

For testing I need a sample file and how to setup this splitter.
OK, here is a sample: http://vfrmaniac.fushizen.eu/TX_noise_sample.ts
And the setup is just doing "regsvr32 isdbsplitter.ax".

egur
24th July 2013, 15:25
@VFR maniac
I reproduced the failure with this splitter but I don't know what the exact cause is. It's sending a different stream than LAV splitter.
This splitter doesn't work at all with some of my TS files (H264 and MPEG2) - simply doesn't connect to the File Reader (Async) filter needed for playback.

My suggestions is to use LAV splitter.
Unless you're the developer of this splitter, why would you use it?

VFR maniac
24th July 2013, 15:59
@VFR maniac
My suggestions is to use LAV splitter.
Unless you're the developer of this splitter, why would you use it?

LAV Splitter (libavformat) doesn't support PID change in a service.
A certain TV channel I frequently recode changes PID when a SD TV program is changed into another HD, and vice versa.
So LAV Splitter is useless unless splitting TS file at points of PID change.

In addition, this splitter supports decryption of Japanese ISDB stream through smart card reader with B-CAS card.
For people who legally watch encrypted ISDB stream in Japan, LAV Splitter is absolutely useless.

diizzy
24th July 2013, 21:47
@ egur

Did you manage to replicate the issue?

Best regards,
Daniel

egur
25th July 2013, 16:05
@VFR maniac
I'll take a deeper look when I have the time.

@Diizzy
The clip plays perfectly fine on my machine.
Looks like a setup issue on your side. Try reinstalling the driver.
Another option is to change scaling in MadVR to 'DXVA'. Let me know if this changed anything.
How does it work with EVR?

Sparktank
4th August 2013, 05:22
Hi,

I don't know where to go for help.

1)
My laptop is preconfigured and discontinued. The price you pay for growing up poor.
I have an HP Pavilion G6 with Intel HD Graphics 3000 which HP has stopped providing driver updates for since 2011.
So I can't really update to latest drivers without worrying if the generic drivers are missing anything custom that HP did to them.


2)
I use primarily K-Lite Mega Codec Pack to install everything and never had a problem before.
Latest stable version is 9.9.5 (+9.9.6 update).

I don't know if they modify anything but but the 9.9.6 update uses LAV Filters 0.57-17-g1cc21b3.
I'm able to use QuickSynch for decoding AVC/H264 in LAV Video without problems.

But since I tried one of their BETA packages (9.9.9 BETA 2), they've upgraded their LAV Filters to 0.58.1-5-gcb4e2dc.
And QuickSynch was lost.

I also tried copying the portable version of LAV 58.2 into the K-Lite directory (never had a problem doing that before).
I even copied the little "dependencies" file and un/registered the three filters in the LAV folder.
All three un/registered successfully.

3)
For any version that's >58.x, QuickSynch is shown as "Not Available" when just in 57.1 it was available.
I prefer using LAV Video for decoding H264 streams because there is an incredible amount of performance efficiency compared to using FFDShow.

I use SVP (Smooth Video Project) a lot now and watch the performance graphs to see how much I can get out of my machine.
For some reason FFDShow takes nearly 90% of the CPU usage while LAV Video only peaks around 35% most of the time.

There's four places I could go to get help:

Here
LAV Filters
HP
KLCP


The KLCP forums are very dead.
I've asked in the HP forums "how safe is it to update to generic drivers?"
And I'm unsure who to bring this to and don't want to spam the forum with the same post so I figured it's mostly relevant to QuickSynch than LAV?

I'm so tired right now and wasted a good 3 hours doing nothing but googling and setting up an account with HP to post in their forum.

I could uninstall KLCP entirely and download the last 3 versions of LAV/FFDShow and find out which ones exactly lost QuickSynch, if that helps.

Superb
4th August 2013, 05:28
I could uninstall KLCP entirely and download the last 3 versions of LAV/FFDShow and find out which ones exactly lost QuickSynch, if that helps.Do that. Install the latest official LAV Filters (currently 0.58.2) w/ the official installer and then test.

Sparktank
4th August 2013, 05:59
Do that. Install the latest official LAV Filters (currently 0.58.2) w/ the official installer and then test.

Done.

LAV Video 58.0 and above lose QSV functionality. (Official builds)

Reverted back to KLCP 9.9.6 that uses LAV Video 57.0.

NikosD
4th August 2013, 06:29
You have old Intel drivers.

If you can't update them, you have to stick with old LAV filters.

If you want to use latest LAV filters, you have to update Intel driver too.

Think it as a pair.

egur
4th August 2013, 07:20
You should be quite safe installing the latest Intel drivers. Worst case, reinstall the old drivers and tell me the exact driver version.

nevcairiel
4th August 2013, 07:44
I heard from other people that the latest version of the decoder doesn't work with older drivers anymore, what caused this, and can you fix it?

Sparktank
4th August 2013, 08:23
You should be quite safe installing the latest Intel drivers. Worst case, reinstall the old drivers and tell me the exact driver version.

I'll give the newest drivers a try tomorrow and see if >58.0 works properly for me.

EDIT: Updating to latest Intel HD Graphics drivers from Intel website (not HP website) was a success (so far).

With current drivers, LAV 58.2 shows QSV as available.
And it does work.

I was using an old Intel driver from 2011 (the last driver HP pushed for Pavilion G6).
Intel High-Definition (HD) Graphics Driver
2011-11-10 , Version:8.15.10.2476
The only information it provided for this update was...
Fix/Enhancement

- Provides the updated driver.

So far I'm not seeing any difference in using the generic build from Intel. But video plays back, QSV is back in LAV >58.0 and SVP is liking it. A lot.

Latest driver (using auto-detect on Intel)...
* Package: 191470
*
* Graphics: 9.17.10.3062
* Display Audio Driver: 6.14.0.3097
*
*
* March 20, 2013

Since I haven't been updating the drivers since 2011, I can't really say which version actually prevented QSV functionality.

If any more information is needed, please let me know.
Thanks for all the help (so far). :)

egur
4th August 2013, 20:16
As a rule of thumb, it's usually a good idea to update drivers.
I've updated all my drivers (network graphics, sound, etc.) directly from the manufacturer sites. OEMs sometimes create bloated drivers w/o any apparent functionality and on my HW, the OEM drivers were also very old.

I'll check why old drivers fail tomorrow. Thanks for the report. My home system is Win8 now so drivers are relatively new.

jkauff
7th August 2013, 06:23
Eric, now that you've been using Win 8, have you found any software that takes advantage of the headless iGPU support? Everything I use still needs the fake display. Do we have to wait for new drivers from Intel for headless to work?

NikosD
7th August 2013, 13:37
Using latest Intel drivers of SNB for Windows 8 x64 and latest flash version, I get crashes of IE 10 when trying to play ANY YouTube 4K video.

For example:
http://www.youtube.com/watch?v=Cx6eaVeYXOs

I remind you in order to reproduce the crash, you have to select "Original" resolution in order to activate the UHD resolution - It's above the 1080p option.

Of course I'm talking for streaming playback and only above 1080p.

nevcairiel
7th August 2013, 13:57
Keep in mind that this thread is about the QuickSync Decoder that Eric wrote, not about generic driver bug reports.

egur
7th August 2013, 13:59
Eric, now that you've been using Win 8, have you found any software that takes advantage of the headless iGPU support? Everything I use still needs the fake display. Do we have to wait for new drivers from Intel for headless to work?
The drivers are there for a long while. The issue is that applications need to change in order to enable this feature - they must work in D3D11. The previous behavior was to use D3D9.

Using latest Intel drivers of SNB for Windows 8 x64 and latest flash version, I get crashes of IE 10 when trying to play ANY YouTube 4K video.

For example:
http://www.youtube.com/watch?v=Cx6eaVeYXOs

I remind you in order to reproduce the crash, you have to select "Original" resolution in order to activate the UHD resolution - It's above the 1080p option.

Of course I'm talking for streaming playback and only above 1080p.
Looks like a bug in the flash player component. SNB doesn't support 4K...

NikosD
7th August 2013, 14:07
Maybe it's flash problem or Win 8 drivers problem.
Particularly in the software fallback mode, exactly because SNB doesn't support 4K.

Win 7 x64 plays fine in software mode - same driver, same flash version.

Is it flash or Win 8 driver ?

Update:
Same behavior with a discrete card (Radeon 5750) inside the SNB system.
IE doesn't crash, but shows a green screen because 5750 is forced to use DXVA and not CPU even for 4K, which doesn't support.
So it's rather a flash problem than the immaturity of Win 8 drivers from both Intel/AMD.

NikosD
10th August 2013, 08:35
For those interested I did some tests regarding multiple streams decoding on various video hardware and various video formats

The test platform was:

Win 8 x64
MPC-HC v1.6.8 (with internal codecs using DXVA native)

Video Processors (with latest drivers and default clocks)

UVD2.2 (Radeon 5750)
VP4 (Geforce 440GT)
VP5 (Geforce 610GT) and
QuickSync 1 (HD 2000 - SandyBridge)

The video formats were all 1080p (full HD 1920x1080 progressive):

WMV HD (a 1080p24fps@10Mbps clip - the toughest WMV3 clip I have)
VC-1 (a 1080p24fps@18Mbps clip - a medium to hard VC-1 clip)
MPEG-2 (a 1080p24fps@45Mbps clip - a hard MPEG-2 (.ts) clip)
H.264 (a 1080p24fps@11Mbps clip - a Main@L4.1 "normal" clip)

The results are below - very interesting in my opinion.

WMV3

UVD2.2 - 2 streams
VP4 - 3 streams ~89% VPU utilization
VP5 - 4 streams ~89~ VPU utilization
QuickSync - Not supported

VC-1

UVD2.2 - 2 streams
VP4 - 3 streams ~95% VPU utilization
VP5 - 4 streams ~95~ VPU utilization
QuickSync - Not supported

MPEG-2

UVD2.2 - Not supported
VP4 - 3 streams ~80% VPU utilization
VP5 - 5 streams ~92~ VPU utilization
QuickSync - >9 streams


H.264

UVD2.2 - 2 streams
VP4 - 3 streams ~88% VPU utilization
VP5 - 4 streams ~99~ VPU utilization
QuickSync - >9 streams

Comments:

1)
UVD2.2 supports only 2 streams for all formats - odd behavior (driver?).
VP4, VP5 are the only video processors supporting all of 4 formats
I stopped QuickSync multiple streams at 9, not because of frame dropping or performance reasons, but because of limited space in my one and only screen (21.5" - 1920x1080). I think that maybe 10 or 11 streams were doable.

2) It's a pity that so fast hardware like QuickSync supports only 2 formats (MPEG-2, H.264) in DXVA native mode even AFTER 3 GENERATIONS/ VERSIONS of QuickSync.
UVD3.0 supports 5 formats (MPEG-2, MPEG-4 ASP, H.264, VC-1, WMV3) and VP4, VP5 support 4 and a half - because MPEG-4 ASP is supported only in CUVID mode.

3)When trying to measure QuickSync VPU utilisation with Intel GPA monitor, I had major frame dropping with the window open in front. Only in minimized mode it worked well - strange.
From what I've seen, the major bottleneck was EU utilisation and not MFX utilisation.
Faster QuickSync versions with more EUs and faster clocks can go up to a lot more streams I believe.

theoneofgod
11th August 2013, 06:11
Out of sync audio is common while using the iGPU in another process, like watching a movie + converting with both QSV?

egur
11th August 2013, 09:20
NikosD,
The HW supports WMV3 and VC-1 but use a different GUID for this task for some unknown reason.
The HW and driver also support H264 MVC profile as well as SVC in Haswell (encode + decode).

NikosD
11th August 2013, 10:23
H.264 MVC is supported by all video processors in HW.
I didn't mention it because it's the least common of all.

CharlieCL
14th August 2013, 15:52
For those interested I did some tests regarding multiple streams decoding on various video hardware and various video formats



Are you decoding multi-stream video by multi-thread or multi-tasking (multi-player)?

I found an interesting CPU usage change for multi-player testing. One player CPU usage maybe 5%, two maybe 10%, three maybe 20%, four maybe 40%. It is non-linear.

Usually there are at most two hardware decoders in a GPU, when they are not available, software decoder has to be used. So there is non-linear CPU usage curve.