View Single Post
Old 17th May 2006, 01:08   #1  |  Link
zambelli
Doom9ing since 2001
 
zambelli's Avatar
 
Join Date: Oct 2001
Location: Seattle, WA, USA
Posts: 2,002
VC-1 and Windows Media Video 9 FAQ

Q: Where can I get the latest and greatest WMV9 (Microsoft VC-1) codec?
A:
There are several existing ways to get the WVC1 (Advanced Profile) and WMV3 (Simple/Main) codecs.Q: What is VC-1? What is WMV9? What's the difference?
A:
VC-1 is a codec specification as standardized by SMPTE in 421M. WMV9 is an implementation of that specification. Think of it this way: WMV9 is to VC-1 what x264 is to MPEG-4 AVC. In the context of Microsoft video codecs, WMV9 and VC-1 can be considered one and the same. Note, however, that in the future other companies may choose to implement VC-1 codecs, too.

Q: So what's the big deal with Advanced Profile? Is it a new codec?
A:
In some ways it is a new codec... in others, it's just an extension of the classic WMV9 codec. The SMPTE 421M standard for video compression (nicknamed "VC-1") was originally based on Microsoft's Windows Media Video 9 codec. However, a number of changes and improvements were made to the specification as a part of the SMPTE standardization. Three profiles were defined for VC-1: Simple, Main and Advanced Profile. The existing implementation of WMV9 (FourCC: WMV3) already covered Simple and Main profiles so Microsoft only had to add the remaining third profile. Advanced Profile includes new features such as true interlaced encoding support, transport independent bitstreams, resolutions up to 2048x1536 and bitrates up to 135Mbps.

Q: But wait! Didn't WMP10 ship with a WMV Advanced Profile codec years ago?
A:
Indeed it did. Microsoft began working on its implementation of WMV AP before VC-1 spec was finalized. That codec (FourCC: WMVA) shipped with WMP10 (Format SDK 9.5), but as final changes to the VC-1 spec were made, WMVA got out of sync with the official spec. Today WMVA is no longer VC-1 compliant and is generally considered deprecated.

Q: Does the new Advanced Profile codec have a different FourCC?
A:
Yes, it does. In order to differentiate it from SP/MP codec (FourCC: WMV3) and the non-VC1-compliant AP codec (FourCC: WMVA) and avoid issues with legacy decoders, the VC-1 compliant WMV9 Advanced Profile codec uses a new FourCC code: WVC1.

Q: Will switching to WMV9 AP improve the quality of my encodings? Should I stop encoding to Main Profile?
A:
Just switching from Main Profile to Advanced Profile is not enough to increase quality. Quality is subject to encoder efficiency, not profile level. The differences between profiles - in any codec - are in the feature set and decoder complexity. It is implied that AP content is more difficult to decode than MP content - that's the whole point of having profiles and levels.

Q: So what's the advantage of Advanced over Main Profile?
A:
Take a look the feature tables at http://en.wikipedia.org/wiki/VC-1 and the one below. AP's most important features are:
  • Interlaced encoding support (both frame and field modes)
  • Chroma and luma range reduction
  • Encoding at resolutions different than decode resolutions
  • Bitstream encapsulated metadata that allows VC-1 to be placed in almost any file container or transported over any protocol
For most part, none of that really affects quality if you're encoding progressive content. Microsoft's latest version of the WMV9 (WMV3/WVC1) encoder is v11, now available for download with the v11 Player and WMF SDK. If you use this encoder to encode to either Main Profile or Advanced Profile, you ought to be able to get the same quality for both because most of the quality-related optimizations (i.e. B-frames, inloop filtering, perceptual optimization, etc.) apply to both MP and AP.

When deciding whether to encode to Main or Advanced profile, you should consider your target playback platform (PC? Xbox? Zune? PocketPC?) and your source (progressive? interlaced? mixed?).

Q: OK, I installed the codec. How do I encode with it? It doesn't show up in VirtualDub.
A:
All Windows Media codecs are implemented as DirectX Media Objects (DMO) and/or Media Foundation Transforms (MFT). VirtualDub uses ancient Video for Windows interfaces and requires VCM type codecs. Here's a short list of VC-1 encoder apps:
  • Many video editing applications such as Adobe Premiere Pro and Avid Xpress support exporting to WMV9. They typically leverage Microsoft WMV9 DMOs distributed with Windows/WMP/WMFormatSDK. If your video editing software supports exporting to WMV9 but you're not sure how updating to the latest WM Format runtime will affect it - check their website for support details first.
  • Microsoft Expression Encoder - The newest Microsoft encoder application is targeted at Silverlight content creators but can of course be used for general WMV9 encoding just as well.
  • Windows Media Encoder 9 Series - This Microsoft encoder supports nearly every scenario imaginable: offline encoding, live capture & encode, streaming over networks, washing your dishes... It's all there. To encode to WVC1, simply create a Custom Session, go to Properties, Compression tab, hit Edit - and select "WMV9 Advanced Profile" from the video codec list. WME9 also supports command-line encoding via the WMCmd.vbs script. One caveat though: WME9 is no longer supported by Microsoft.
  • WMNicEnc - Nic's WMV encoder takes Avisynth input only and supports all the advanced encoding settings of VC-1. Small, easy and effective.
  • WMV Muxer/Encoder by DVBPortal - A simple WMV muxer and encoder useful for muxing VC-1 streams into ASF without recompressing. Encoder feature requires .prx profiles which can be customized using the WM Profile Editor from the WME9 package.
Q: How do I configure the advanced settings of WMV9 AP? I don't see any UI in WME9 to do this!
A:
The advanced settings of the WMV9 Advanced Profile codec are available through the standard Windows Media Codec APIs, but are also enabled through registry settings. The registry settings are made available in order to allow legacy encoder applications (such as Windows Media Encoder 9) which are unaware of the new API properties to take advantage of the new settings. Windows Media Encoder has not been updated since Windows Media 9 Series and therefore does not have any user interface elements for the new codec. Yeah, it's not the greatest and user friendliest interface, but it's actually how most codecs store their long term settings. Fortunately, there are alternatives:
  • WMV9 PowerToy - a tool for configuring all the advanced settings of WMV9 encoder and decoder
  • McoreD's WMV9 Advanced Settings Editor - a UI for configuring the advanced settings of the WMV9 encoder
  • Nic's WMV Encoder - Nic's updated encoder now features an Advanced Options pane for configuring all the, well, advanced options
  • WMCmd.vbs - All you command-line fans can rejoice because the updated wmcmd.vbs supports all the advanced settings via command-line now
Q: I am trying to use WME9 on Vista and I'm experiencing crashes in cscript.exe and wmenc.exe. What can I do?
A:
These are known issues. Microsoft has released a hotfix that addresses the problems.

Q: Cscript.exe fails to initialize the WMEncoder object when I try to use WMCmd.vbs with 32-bit WME9 on XP/Vista x64. Is WMCmd.vbs encoding broken in this scenario?
A:
Not at all. The default script interpreter on Windows x64 is 64-bit cscript.exe. WME9 x86 installs 32-bit COM objects (used by WMCmd.vbs). In order to run WMCmd.vbs, you need to use the 32-bit cscript.exe located in \Windows\SysWOW64 or simply run the 32-bit cmd.exe command-prompt which will ensure the 32-bit version of cscript.exe gets invoked.

Q: Should I use the 32-bit or 64-bit version of Windows Media Encoder 9?
A:
64-bit WMV codecs don't really offer much of a performance improvement (if any at all) over 32-bit WMV codecs. The important thing to keep in mind is that if you want to use WME9 x64 for transcoding, your source decoders will need to be 64-bit too. So unless you've got 64-bit versions of XviD, MPEG-2, H.264 and whatever other decoders you want to use - it's probably not worth the hassle.

Q: WME9 gives me an error when I try to use Avisynth script as source. Does WME9 not support .avs input?
A:
It does - sort of. WME9 was developed years ago when Avisynth wasn't very widely used so the WME9 team never considered explicitly adding Avisynth support. However, due to Avisynth's similarity to the AVI interface, it's possible to force WME9 to read Avisynth scripts anyway:
  • GUI: Use a custom session and in Properties' Sources tab select "Both device and file" for source, then choose "Browse for file" for video and/or audio and point to your .avs script.
  • WMCmd.vbs: The original command-line encoder script that shipped with WME9 didn't support .avs inputs, but independent efforts have been made since then to update the script and work around the limitation.

Q: Do these registry settings apply only to Advanced Profile (WVC1)?
A:
Depends on which codec version you are using. If you're using the standalone WVC1 codec download package on top of WMP10/WMFSDK9.5, then the registry settings will affect only Advanced Profile (WVC1) encoding. If, on the other hand, you are using WMP11/WMFSDK11 (or Windows Vista or later), the registry settings will affect all 3 profiles - Simple, Main (WMV3) and Advanced (WVC1). However, not all registry settings are valid in every profile. Here is how they map out:

Q: Where can I find out more about VC-1 and WMV9 Advanced Profile?
A:
Check out these links:
I'll post more info as it becomes available.

Last edited by zambelli; 6th December 2012 at 07:55.
zambelli is offline   Reply With Quote