View Full Version : WMV/VC1 Encoding Profiles from Expression Encoder
Schrade
10th June 2008, 23:24
Question about the profiles used in Expression Encoder - is there any way to extract the settings from those profiles?
I'm trying to make some profile settings of my own for an application and would like to have those as an example to pull from.
Also, is there a really good resource that explains all of the VC1 SDK encoder settings thoroughly?
benwaggoner
11th June 2008, 05:27
Question about the profiles used in Expression Encoder - is there any way to extract the settings from those profiles?
I'm trying to make some profile settings of my own for an application and would like to have those as an example to pull from.
Also, is there a really good resource that explains all of the VC1 SDK encoder settings thoroughly?
You mean how it was encoded? Tools like WMSnoop can give you some details, like profile, VBR/CBR, bitrates, if B-frames were used. But there's no way post-hoc to determine the more esoteric stuff like chroma search or complexity.
As far as the documentation, there's the docs that are installed along with the SDK. If there's anything confusing in there for you, let me know what it is and I'll see if I can clarify.
Schrade
12th June 2008, 00:20
So is there a reference telling you what all the VC1 settings do? I'm looking for something similar to Lord Mulder's excellent wiki article for x264 settings in Avidemux: http://www.avidemux.org/admWiki/index.php?title=H264 Are there any documents like that for VC1?
Can all of the settings be accessed in Expression Encoder for test encoding purposes? Or do I need to use something else?
Are there any example profile settings available for perusal like Sharktooth's excellent meGUI profiles for x264?: http://forum.doom9.org/showthread.php?t=101813
Is there a general list of settings that should be or should not be used when it comes to CPU usage for encoding or playback?
The only document I found in the VC1 Pro SDK was a .chm file that offered little info.
benwaggoner
12th June 2008, 06:27
So is there a reference telling you what all the VC1 settings do? I'm looking for something similar to Lord Mulder's excellent wiki article for x264 settings in Avidemux: http://www.avidemux.org/admWiki/index.php?title=H264 Are there any documents like that for VC1?
Can all of the settings be accessed in Expression Encoder for test encoding purposes? Or do I need to use something else?
Are there any example profile settings available for perusal like Sharktooth's excellent meGUI profiles for x264?: http://forum.doom9.org/showthread.php?t=101813
Is there a general list of settings that should be or should not be used when it comes to CPU usage for encoding or playback?
The only document I found in the VC1 Pro SDK was a .chm file that offered little info.
The CHM is the most complete thing out there. I actually contributed some of the tuning suggestions in there; sorry it wasn't enough for you :).
In general, VC-1 has a much "flatter" decode complexity than H.264. There simply isn't that big a gap between how different modes effect things. The in-loop deblocking filter is probably the biggest one, and that's still under 20% at most.
For encoding time, well, sky's the limit. The main one is Complexity of course, but stuff like Chroma search, Adaptive Motion Match, and Adaptive Motion Search Range will all increase encoding time versus the default. The codec presets recommend some good starting points for general speed/quality tradeoffs.
Expression Encoder is a fine tool for testing, but it exposes only a small portion of the total set of API calls. We eliminated ones that had very narrow uses (Median Filter) and made others heuristic-based (Motion Vector Cost is Static if there are DQuant on P-Frames, otherwise Dyanmic).
Schrade
18th June 2008, 01:26
Ben,
Are there settings for VC1 that are just not compatible with Main Profile? A listing somewhere?
I've noticed that I had to set lookAhead to false and numOfBFrames to 0 otherwise I just get black video.
I am just trying to make some simple profiles currently. I wanted to be able to select Simple, Main or Advanced.
It would be helpful to have a list of what does and doesn't work in each of the profiles.
benwaggoner
18th June 2008, 07:10
Ben,
Are there settings for VC1 that are just not compatible with Main Profile? A listing somewhere?
The main encoding features not in Main Profile are interlaced support and I-frame DQuant. There's also some transport independency stuff like stream headers and such.
I've noticed that I had to set lookAhead to false and numOfBFrames to 0 otherwise I just get black video.
Hmmm. You should get an error message or have the incorrect mode silently ignored.
I am just trying to make some simple profiles currently. I wanted to be able to select Simple, Main or Advanced.
It would be helpful to have a list of what does and doesn't work in each of the profiles.
Good request.
ACrowley
5th July 2008, 08:35
I made a few Test with Expression Encoder 2 and WVC1 1080p.
Im very dissapointed about the Perfomance.
I use a QuadCore Intel Q6600 3600Mhz.
As you can read in other Threads the WMEncoder (wmcmd.vbs) is very slow on a quadcore (I know a lot of users with the same perfomance problme on a quad)
and the encoding Process takes +50% longer compared with x264(or Elecard)or Mainconcept Reference VC1 Pro.
My old Dualcore was faster. :)
Sadly the new Expression Encoder is sow as hell too.
Can someone test it with a quad core please ?
benwaggoner
5th July 2008, 17:49
I made a few Test with Expression Encoder 2 and WVC1 1080p.
Im very dissapointed about the Perfomance.
I use a QuadCore Intel Q6600 3600Mhz.
As you can read in other Threads the WMEncoder (wmcmd.vbs) is very slow on a quadcore (I know a lot of users with the same perfomance problme on a quad)
and the encoding Process takes +50% longer compared with x264(or Elecard)or Mainconcept Reference VC1 Pro.
My old Dualcore was faster. :)
Sadly the new Expression Encoder is sow as hell too.
Can someone test it with a quad core please ?
I use it with a quad core all the time, and we definitely test it on that.
You can change the performance down in the Advanced Codec Settings pane - there's a range of presets from super-fast to super-slow - probably at least a 10x difference between fastest to slowest.
With all default settings, the codec itself should be at least 2x the performance of WME. However, EEv2 does default to using higher quality and somewhat slower scaling and deinterlacing algorithms, so if you're doing preprocessing, you might see less of a difference.
If you can share the WMCmd.vbs settings you were using, I'd be happy to suggest some EEv2 tunings.
benwaggoner
5th July 2008, 20:18
I should also mention that EEv2 will scale up to 8 cores. The VC-1 encode itself will take up to four, but other operations, like source decode, scaling, deinterlacing, and audio.
For typical real-world projects, I see load from 55-90% on my 8-core.
ACrowley
6th July 2008, 08:46
I already use the same Settings from wmcmd.vbs :)
WindowsMediaEncoder Gui/wmcmd.vbs/Tmpgenc7ProCoder and now ExpressioneEncoder2 are all very slow on my QuadCore. With all Settings/Presets.
benwaggoner
6th July 2008, 15:25
I already use the same Settings from wmcmd.vbs :)
WindowsMediaEncoder Gui/wmcmd.vbs/Tmpgenc7ProCoder and now ExpressioneEncoder2 are all very slow on my QuadCore. With all Settings/Presets.
If it's equally slow with all settings, that suggests your bottleneck is either in source decode or preprocessing.
Are you really not seeing any difference in overall performance between Complexity 0 and 5?
ACrowley
6th July 2008, 20:10
If it's equally slow with all settings, that suggests your bottleneck is either in source decode or preprocessing.
Are you really not seeing any difference in overall performance between Complexity 0 and 5?
ofcourse theres a perfomance difference.
I mean its "generally" ve r y slow on my quadcore
my old dual core was not slower with wmcmd.vbs/exp.encoder 2
benwaggoner
6th July 2008, 20:33
ofcourse theres a perfomance difference.
I mean its "generally" ve r y slow on my quadcore
my old dual core was not slower with wmcmd.vbs/exp.encoder 2
So you're seeing a drop in performance with the same content with the same settings going from dual to quad?
If so, very odd. If you can provide the settings file you're using and some source details, I can have Test take a look at it.
ACrowley
7th July 2008, 14:18
So you're seeing a drop in performance with the same content with the same settings going from dual to quad?
If so, very odd. If you can provide the settings file you're using and some source details, I can have Test take a look at it.
No ,not a drop, buts its not faster. With all Settings.
On x264/ Mainconcept Ref 1.11 was a huge Perfomance Jump when going from dual to quad core
Nevermind..i dont use WVC1 anymore. When i want to encode VC1 is use Mainconcept Reference 1.11 with VC1 Pro Codec. I get 100% load on all cores and its very fast
benwaggoner
7th July 2008, 16:13
No ,not a drop, buts its not faster. With all Settings.
On x264/ Mainconcept Ref 1.11 was a huge Perfomance Jump when going from dual to quad core
Nevermind..i dont use WVC1 anymore. When i want to encode VC1 is use Mainconcept Reference 1.11 with VC1 Pro Codec. I get 100% load on all cores and its very fast
What's the quality like?
Anyway, what you're describing is definitely a regression, and I'd like to chase the bug down. Can you at least share a settings or project file?
ACrowley
8th July 2008, 16:24
wmcmd.vbs
cscript.exe c:\windows\wmcmd.vbs -input c:\test.avs -output c:\t.wmv -v_codec WVC1 -videoonly -v_mode 4 -v_preset better -v_bitrate 8750000 -v_peakbitrate 12000000 -v_peakbuffer 10000 -v_mslevel 3 -v_mmatch 0
Expression 2
<?xml version="1.0" encoding="utf-16"?>
<!--Created with Expression Encoder version 2.0.1406.0-->
<JobFile
Version="2.0">
<Job
OutputDirectory="C:\Users\Aleister\Documents\Expression\Expression Encoder\Output"
JobId="ALEISTER-PC 08.07.2008 17.19.14">
<MediaFiles>
<MediaFile
Source="D:\HD encoding\T E S T SAMPLES\Pirates.3.BluRay.XVID 1080p.avi"
VideoSizeMode="Source"
DeinterlaceMode="Off"
ThumbnailSize="1152, 480"
MarkerThumbnailSize="1152, 480">
<VideoProfile
CodecProfile="Advanced"
Width="1920"
Height="800"
Quality="95"
VideoCodecPreset="Custom"
InLoopFilter="True"
OverlapFilter="False"
NoiseEdgeRemovalFilter="False"
DenoiseFilter="False"
MotionMatchMethod="Hadamard"
MotionChromaSearch="MacroblockAdaptiveWithTrueChroma"
MotionSearchRange="MacroblockAdaptive"
BFrameNumber="2"
SceneChangeDetection="True"
AdaptiveGop="True"
ClosedGop="True"
DQuant="Off"
AdaptiveQuantization="0"
FrameRate="0"
Mode="VbrPeak"
BufferWindow="5000"
KeyFrameSpacing="5"
Bitrate="10000000"
MaxBitrate="15000000"
Codec="VC1" />
<UserInterfaceSettings
SyncSizeToCrop="False" />
</MediaFile>
</MediaFiles>
</Job>
</JobFile>
As i say its to slow. Theres no big benefit from a quadcore i never get nearly 100% CPU load
x264 is 50%+ faster, Mainconcept too
benwaggoner
9th July 2008, 04:30
So, are you not seeing 100% load on the 2nd pass on a quad core? If you aren't, something is off here.
Anyway, a few tweaks that might improve quality and/or perf:
ClosedGOP=False
AdaptiveQuantization=1
MotionMatchMethod=Adaptive
BFrameNumber=1
ACrowley
9th July 2008, 12:08
So, are you not seeing 100% load on the 2nd pass on a quad core? If you aren't, something is off here.
Anyway, a few tweaks that might improve quality and/or perf:
ClosedGOP=False
AdaptiveQuantization=1
MotionMatchMethod=Adaptive
BFrameNumber=1
No ! 1st pass 70-80% ,2nd Pass ~85%.
On wmcmd.vbs its more heavy with only ~60%. I know a lot of user with the same Problem so its not only me.
For example a 1,5min 1080p Sample in 10Mbps takes around 15min with Expression2.
Mainconcept takes ~5min , x264 3-4 min maximum :)
Yes, ofocurse i know these Quality Settings..Generally i use Hadamard /AQ etc etc
benwaggoner
10th July 2008, 05:17
No ! 1st pass 70-80% ,2nd Pass ~85%.
On wmcmd.vbs its more heavy with only ~60%. I know a lot of user with the same Problem so its not only me.
You should be getting 100% on the 2nd pass with a true quad core... Can you share some more system specs? Do you have adequate RAM ?
Yes, ofocurse i know these Quality Settings..Generally i use Hadamard /AQ etc etc
Full Hadamard is very rarely worth it; go for just Adaptive for high quality encoding. We normally use SAD for encoding that's not quality critical.
ACrowley
10th July 2008, 08:27
You should be getting 100% on the 2nd pass with a true quad core... Can you share some more system specs? Do you have adequate RAM ?
Full Hadamard is very rarely worth it; go for just Adaptive for high quality encoding. We normally use SAD for encoding that's not quality critical.
It has 100% sure nothing to do with my System cfg. I know users with different Quad System and they all have Perfomance Problems with wmcmd.vbs(or other Apps based on Codec)/ Express.2
My System :
Intel Core2 Q6600 @ 3.2ghz
Asus Maximus Formula (Intel x38)
4gb DDR800 @ 1000Mhz
Sapphire HD4870
Creative Xfi Extreme Music
Vista x64 SP1 ( same Problem with Wxp!)
Thank you :)
benwaggoner
10th July 2008, 18:18
It has 100% sure nothing to do with my System cfg. I know users with different Quad System and they all have Perfomance Problems with wmcmd.vbs(or other Apps based on Codec)/ Express.2
My System :
Intel Core2 Q6600 @ 3.2ghz
Asus Maximus Formula (Intel x38)
4gb DDR800 @ 1000Mhz
Sapphire HD4870
Creative Xfi Extreme Music
Vista x64 SP1 ( same Problem with Wxp!)
Thank you :)
Hmm. It's a 32-bit app. I haven't done much work with EE on 64-bit. I'll give it a shot on my 8-core Barcelona backup workstation (that runs Server 2008).
Blue_MiSfit
11th July 2008, 21:01
Rofl your backup workstation!
My backup workstation is a C2D laptop, and my main workstation is a single Q6600... I knew I should've twisted arms and gotten an 8 core. I can only do one 1080p encode at a time :(
~MiSfit
CruNcher
12th July 2008, 08:44
If you mean you could say for the current consumer VC-1 Encoder you need this Energy waste ;)
benwaggoner
14th July 2008, 00:32
Rofl your backup workstation!
Well, it's only 1.6 GHz per core, and only has a single 250 GB drive and a pretty weak (ATI 2600?) GPU that can't do DXVA of VC-1 Advanced Profile.
I mainly use it for testing Windows Media Services and other server stuff.
ACrowley
20th October 2008, 14:13
It has 100% sure nothing to do with my System cfg. I know users with different Quad System and they all have Perfomance Problems with wmcmd.vbs(or other Apps based on Codec)/ Express.2
My System :
Intel Core2 Q6600 @ 3.2ghz
Asus Maximus Formula (Intel x38)
4gb DDR800 @ 1000Mhz
Sapphire HD4870
Creative Xfi Extreme Music
Vista x64 SP1 ( same Problem with Wxp!)
Thank you :)
Hu....just have to report that Exppression Encoder 2 works very well on my Quadcore Q6600 now
I have not changed any Encoding Settings/System Componets etc....but now iv very good CPU Load on all Cores ~90-100 in both Passes. Perfomance is normal as it should be. All Perfomance Problems are gone ( Vista x64 -only 50-60 CPU Load on 4 Cores=Perfomance bad)
Dont know if there where a Vista x64 Update last Times ..but it works
Quality is great :)
So i switched back from MainConcept Reference VC1pro 1.6 to MS Ex.Enc2....
b66pak
20th October 2008, 17:49
so, what do you do? switched to win xp or vista32?
_
ACrowley
21st October 2008, 06:16
so, what do you do? switched to win xp or vista32?
_
....thats the point!
ive changed nothing. no hardware and no software. i still use vista x64
The Problem was that Ex. Enc 2 gave me only 50-65% Cpu load on my quad so the Encoding was very slow. It was not depending on the Source or Settings... it was generally veeery slow.
But now its fine....dont know why :)
zambelli
22nd October 2008, 09:01
wmcmd.vbs
cscript.exe c:\windows\wmcmd.vbs -input c:\test.avs -output c:\t.wmv -v_codec WVC1 -videoonly -v_mode 4 -v_preset better -v_bitrate 8750000 -v_peakbitrate 12000000 -v_peakbuffer 10000 -v_mslevel 3 -v_mmatch 0
Expression 2
<?xml version="1.0" encoding="utf-16"?>
...
As i say its to slow. Theres no big benefit from a quadcore i never get nearly 100% CPU load
x264 is 50%+ faster, Mainconcept too
BTW, your WMCMd.vbs settings and EE2 settings are not the same.
In WMCmd.vbs you're using Luma Only search (-v_mslevel 3 doesn't exist in wmvencod.dll) and Adaptive Hadamard. In EE2 you're using Adaptive True Chroma and fixed Hadamard. It's expected that EE2 is going to be slower in that case.
zambelli
22nd October 2008, 09:03
As Ben notes, EE2 should always use all 4 cores on a quad-core machine. Its VC-1 encoding engine is completely integrated into the application, therefore it has no dependencies on WM Format SDK or any other OS component, so there should be no differences between XP, Vista, Server 2008.
There's a Service Pack coming out for EE2 next month which will also expose the Thread Number control, in case you ever want to use less then 4 cores.
ACrowley
22nd October 2008, 11:59
BTW, your WMCMd.vbs settings and EE2 settings are not the same.
In WMCmd.vbs you're using Luma Only search (-v_mslevel 3 doesn't exist in wmvencod.dll) and Adaptive Hadamard. In EE2 you're using Adaptive True Chroma and fixed Hadamard. It's expected that EE2 is going to be slower in that case.
No, I was not talking about WMcmd.vbs vs EE2/ Perfomance/Settings/Comparison or somewaht.
EE2 was "Generally" very slow, no matter which Options where used ...CPU Usage was always only at ~50-60% on all Cores
And now its fine....ive 90-100% with all Settings, in any Case/Options/Source etc etc..
So ive no Problme anymore with EE2
By the Way.... Wmcmd.vbs isnt working on Vista x64 ? I use the WMCencoder x64 Version with the x264 cscript.exe
C:\Windows\SysWOW64\cscript.exe c:\windows\wmcmd.vbs -input f:\test.avs -output f:\t.wmv -v_codec WVC1 -videoonly -v_mode 4 -v_preset better -v_bitrate 8750000 -v_peakbitrate 12000000 -v_peakbuffer 10000 -v_mslevel 3 -v_mmatch 0
Error: Cannot initialize Windows Media Encoder object. Please verify that
Windows Media Encoder 9 Series is correctly installed on your system.
If running 64-bit Windows, make sure that the version of cscript.exe used
corresponds to the version (x86/x64) of WME9 installed on your system.
And when i use the x86 WMencoder with Cscript (x86): Prepare to encode failed with error -2147221164 Klasse nicht registriert
I use latest Avisynth without any Problems
zambelli
30th October 2008, 09:19
By the Way.... Wmcmd.vbs isnt working on Vista x64 ? I use the WMCencoder x64 Version with the x264 cscript.exe
C:\Windows\SysWOW64\cscript.exe c:\windows\wmcmd.vbs
No, it does work with WME9 x64. You just have to make sure you use 64-bit cscript.exe from System32.
Do you have 64-bit Avisynth installed? Are all the plugins and codecs that you're invoking from your Avisynth script also 64-bit?
And when i use the x86 WMencoder with Cscript (x86): Prepare to encode failed with error -2147221164 Klasse nicht registriert
For WME9 x86, make sure you're calling 32-bit cscript.exe from SysWow64, and make sure you have 32-bit Avisynth installed.
The rule of thumb is simple: For 64-bit encoding, everything in your end-to-end graph must be 64-bit too.
ACrowley
30th October 2008, 13:47
No, it does work with WME9 x64. You just have to make sure you use 64-bit cscript.exe from System32.
Do you have 64-bit Avisynth installed? Are all the plugins and codecs that you're invoking from your Avisynth script also 64-bit?
For WME9 x86, make sure you're calling 32-bit cscript.exe from SysWow64, and make sure you have 32-bit Avisynth installed.
The rule of thumb is simple: For 64-bit encoding, everything in your end-to-end graph must be 64-bit too.
Hö ? why should i use the Csript from 64 bit WOW64 Folder whne i need 32bit cscript? In this Folder is the 64bit Version from cscript ?
And the 32bit cscript is in System32.. isnt it ?
Thx, i will try it, im satisfied with ExpressionEnc 2 so far..but i cant use all Advanced Options in Expressesion Encoder 2 ,so wmcmd.vbs is better in this Point of View
benwaggoner
2nd November 2008, 06:15
Thx, i will try it, im satisfied with ExpressionEnc 2 so far..but i cant use all Advanced Options in Expressesion Encoder 2 ,so wmcmd.vbs is better in this Point of View
What features are you missing?
Bear in mind that EEv2 uses the VC-1 Encoder SDK, so it's got a better, faster underlying engine with better rate control. We tried to be really judicious in which options got trimmed out in order to make sure that we provided maximum effectiveness with minimum user confusion. Some combination of features only mattered in combination with others, so we automatically set Dynamic Motion Vector Cost as appropriate. Others simply weren't useful in practice, like range reduction.
The only two parameters that we wound up missing were Max QP and Num Threads, which we've added back in SP1.
ACrowley
2nd November 2008, 09:50
What features are you missing?
Bear in mind that EEv2 uses the VC-1 Encoder SDK, so it's got a better, faster underlying engine with better rate control. We tried to be really judicious in which options got trimmed out in order to make sure that we provided maximum effectiveness with minimum user confusion. Some combination of features only mattered in combination with others, so we automatically set Dynamic Motion Vector Cost as appropriate. Others simply weren't useful in practice, like range reduction.
The only two parameters that we wound up missing were Max QP and Num Threads, which we've added back in SP1.
ah, yes youre right, my mistake :)
@ zambelli
Yep, it works whne i call the 32bit csript from C:\Windows\SysWOW64\cscript.exe wmcmd.vbs.
ss3
5th November 2008, 21:17
Quote:
I am just trying to make some simple profiles currently. I wanted to be able to select Simple, Main or Advanced.
It would be helpful to have a list of what does and doesn't work in each of the profiles.
Good request.
Trying to second the request.
Schrade
7th November 2008, 21:44
Trying to second the request.
Zambelli finally gave me an XLS listing of these in E-mail. Zambelli, is it OK to post that list?
zambelli
15th November 2008, 12:05
Zambelli finally gave me an XLS listing of these in E-mail. Zambelli, is it OK to post that list?
Yeah, go for it!
Schrade
15th November 2008, 22:38
Download for the file is here: VC-1 SDK Profile Compatibility Chart.xlsx (http://www.sendspace.com/file/3umqg9)
Well, since I can't post HTML in here, here's an image of it:
http://i34.tinypic.com/21altkx.png
Esurnir
20th November 2008, 22:37
I'll probably sound stupid but... what is in your .avs file ?
Schrade
22nd April 2009, 01:40
Just going to update this real quick. I've been banging my head on VC-1 encoding profiles again all day.
These settings are not compatible with the VC-1 SDK and Main Profile:
LookAhead=true
NumOfBFrames=1 (or higher)
Those two need to be disabled in order to output a usable Main Profile video.
benwaggoner
24th April 2009, 16:52
Just going to update this real quick. I've been banging my head on VC-1 encoding profiles again all day.
These settings are not compatible with the VC-1 SDK and Main Profile:
LookAhead=true
NumOfBFrames=1 (or higher)
Those two need to be disabled in order to output a usable Main Profile video.
Hmmm. That shouldn't be it. We use B-frames and Lookahead all the time in Main Profile live streaming. All Lookahead does is buffer up to 16 analysis frames before making frame mode selection (I, P, P-with-fading, B, BI). The main effects are I-frame insertion, fading mode selection (which is P-frame only, and so B-frames need to be turned off), and inserting BI frames frames at flash frames.
Schrade
25th April 2009, 21:46
Heh after having my engineer go through his code I guess he found something that would cause this. He's going to fix it on Monday. Then I'll be able to finally use LookAhead and BFrames in my Main Profile settings... yay!
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.