View Full Version : WMV3 to WVC1 (FourCC)
insect111
19th April 2011, 04:49
I use Media Player Classic Home Cinema and Splash Pro in playing my video files. Although both softwares provide DXVA acceleration of VC-1 files, they only do so if the fourCC of the video file is WVC1 but not with WMV3 fourCC files. Is there a simple way to "convert" or change the fourCC of WMV3 videos to WVC1?
As per Wikipedia, "Simple and Main Profiles of VC-1 remained completely faithful to the existing WMV3 implementation, making WMV3 bitstreams fully VC-1 compliant." Therefore, video files with WMV3 fourCC can be accelerated by any multimedia player that can provide DXVA acceleration to VC-1 files provided that the fourCC is changed from WMV3 to WVC1.
Is the situation as simple as it seems or are there complications that I need to be aware of?
(BTW, the files that I am referring to are all encoded as WMV3 Main Profile @ High Level (MP@HL)).
roozhou
19th April 2011, 07:16
What video card are you using? IIRC only NVidia provides WMV3 acceleration.
space1999
19th April 2011, 07:27
As per Wikipedia, "Simple and Main Profiles of VC-1 remained completely faithful to the existing WMV3 implementation, making WMV3 bitstreams fully VC-1 compliant." Therefore, video files with WMV3 fourCC can be accelerated by any multimedia player that can provide DXVA acceleration to VC-1 files provided that the fourCC is changed from WMV3 to WVC1.
That's not correct, I'm afraid.
VC-1 is more complex than WMV3. Even if you managed to change the Codec-ID from WMV3 to VC-1, quite probably the player would try to decode the video as "true VC-1", and it would fail.
sneaker_ger
19th April 2011, 08:02
VC-1 is more complex than WMV3.
That may be, but WMV3 being a subset of VC-1 does not mean that VC-1 is also a subset of WMV3. I.e. a VC-1 decoder could very well be able to decode WMV3 but not the other way round.
roozhou
19th April 2011, 08:02
DXVA supported or not is not determined by complexity of the codec, but by the manufacturer. AVC is more complex than VC1 and MPEG2. VLD level acceleration for AVC was brought with VP2, but VLD MPEG2 acceleration was brought with VP3 and VC1 with VP4.
WMV3 and VC1 are similar but different. IIRC WMV3 bitstream lacks some element which appears in VC1. If the manufacturer decides not to support WMV3, you will never get DXVA from their video card.
space1999
19th April 2011, 22:37
That may be, but WMV3 being a subset of VC-1 does not mean that VC-1 is also a subset of WMV3. I.e. a VC-1 decoder could very well be able to decode WMV3 but not the other way round.
AFAIK, I tried to say,
"Many/most VC-1 decoders will not decode plain WMV3, even if the official specs may require such capability".
But no problem, false misunderstandings have always been a good excuse for post-wh0ring. :)
insect111
20th April 2011, 04:26
"The Windows Media Video 9 (WMV3) codec implements the Simple and Main modes of the VC-1 codec standard, providing high-quality video for streaming and downloading."
Thus, WMV3 is a subset of the VC-1 standard and there is no reason why a particular media player that accelerates (using DXVA) VC-1 won't be able to accelerate a WMV3 bitstream.
"Simple and Main Profiles of VC-1 remained completely faithful to the existing WMV3 implementation, making WMV3 bitstreams fully VC-1 compliant."
A media player probably cannot differentiate WMV3 and VC-1 bitstreams based on the previous statement.
"That's not correct, I'm afraid. VC-1 is more complex than WMV3. Even if you managed to change the Codec-ID from WMV3 to VC-1, quite probably the player would try to decode the video as "true VC-1", and it would fail."
Of course, VC-1 is more complex than WMV3, but it makes no sense to say that a player would fail if it tries to decode a WMV3 file masquerading as a VC-1 file (through an edited fourCC) since WMV3 is simply a subset of VC-1.
space1999
20th April 2011, 06:12
OK, let's try to be as clear as possible:
VC-1 is WMV9 plus Advanced Profile.
Supposing I am a firmware designer, and I decide to make a chip ignore the non-complicated profiles of the WMV9 format, what are you going to do? Sue me? :)
Do it right away, sir! :rolleyes:
Midzuki
20th April 2011, 07:18
"The Windows Media Video 9 (WMV3) codec implements the Simple and Main modes of the VC-1 codec standard, providing high-quality video for streaming and downloading."
Thus, WMV3 is a subset of the VC-1 standard and there is no reason why a particular media player that accelerates (using DXVA) VC-1 won't be able to accelerate a WMV3 bitstream.
"Simple and Main Profiles of VC-1 remained completely faithful to the existing WMV3 implementation, making WMV3 bitstreams fully VC-1 compliant."
A media player probably cannot differentiate WMV3 and VC-1 bitstreams based on the previous statement.
"That's not correct, I'm afraid. VC-1 is more complex than WMV3. Even if you managed to change the Codec-ID from WMV3 to VC-1, quite probably the player would try to decode the video as "true VC-1", and it would fail."
Of course, VC-1 is more complex than WMV3, but it makes no sense to say that a player would fail if it tries to decode a WMV3 file masquerading as a VC-1 file (through an edited fourCC) since WMV3 is simply a subset of VC-1.
Short answer:
http://cid-5acf098e0ebae8d5.office.live.com/self.aspx/.Public/zer0th/fake-wvc1.avi
Long answers:
http://forum.doom9.org/showthread.php?t=156482
änd
http://forum.doom9.org/showthread.php?t=119102
änd
http://forum.doom9.org/showthread.php?t=131117
insect111
21st April 2011, 02:02
Thank you very much!
Midzuki
23rd April 2011, 04:15
You're welcome ^_~
BTW, and just for the sake of completeness:
There are six levels of headers in VC-1 video bitstream syntax — Sequence, Entry Point, Picture, Slice, MB and Block. AP has explicit Sequence header, but SP/ MP don’t have any Sequence header or Entry Point header in VC-1. The data necessary in the Sequence header should be provided by an external means. Sequence header contains basic parameters such as profile/level, interlace, loop filter, max_coded_width, max_coded_height and some other global parameters. This includes display related metadata and HRD parameters.
The Entry Point header is the random access point, and is present only in AP. It is used to signal control parameter changes in the decoding. Examples include broken_link, closed_entry, refdist_flag, loopfilter, overlap, coded_width, coded_height and other global parameters until the next Entry Point header. It also contains HRD fullness information.
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.