Log in

View Full Version : SIAP: when did VC1 bitstream format change?


seeker010
17th August 2014, 03:13
I'm testing anamorphic 1080p wmv using the VC1 advanced profile (WVC1). I know, nobody uses VC1 anymore around here, and certainly not anamorphic. I was just curious since my older laptop accelerates VC1 better than H264.

What I found was depending on the decoder, the PAR can be read backwards. What I mean is, in Expression Encoder, if I set the PAR to 4:3, WMP in Windows 7 will play back a 16:9 stream. However, my Xbox 360, PS3, Lumia 1020 and Win 8 WMP/Video app will play back a 1:1 stream.

If I set the PAR in Expression Encoder to 3:4, then Windows 7 WMP will play back a 1:1 stream, but the other devices will play back a 16:9 stream.

Since the SAR is 4:3, it's obvious the PAR X:Y values have been reversed between Win7 & Win 8. I don't have older Windows or other devices to test, but my best guess is hardware players will use the Windows 8 PAR order, while older WMP/Windows versions will use the Win7 PAR order. It looks like MPC-HC/LAV filters uses the older Windows 7 PAR order when not using DXVA, which needs to be updated, I filed a bug report for MPC-HC but nobody's said anything.

Ultimately, this means Microsoft effectively forked the VC1 specification... which is its own damn specifications. :rolleyes: I'm guessing no more updates for WMP11 (XP,Vista) but Win7 is still in mainstream support. I doubt anyone at MS will read this or get any support to fix it even if it was read. :angry:

Here are some clips to test, correct.wmv means Windows 8 PAR order, incorrect.wmv means Windows 7 (and older presumably) PAR order. I think the clips fall under fair use since it's only 24 frames and it's for educational purposes, but mods please remove if you feel differently.
http://1drv.ms/1ppTboK

filler56789
17th August 2014, 06:47
I downloaded and demuxed the sample files

(Skydrive is sucking too much BTW :p )

The "correct" one has PAR=4:3,whereas the "incorrect" one has PAR=3:4.

FWIW: I'm talking about the elementary streams, not about the ASF container.

my Xbox 360, PS3, Lumia 1020 and Win 8 WMP/Video app will play back a 1:1 stream.

I presume "Xbox 360, PS3, Lumia 1020 and Win 8 WMP/Video app" share the same bug — or rather, design flaw.

P.S.: why use Expression Encoder? :confused: It's too overbloated IMNSHO. If you can't do without a GUI,
at least choose something like MainConcept Reference 2.x :devil:

seeker010
17th August 2014, 17:47
Sorry, some confusion, maybe the way I worded it.
Xbox 360, PS3, Lumia 1020 and Win 8 WMP/Video app play back correct.wmv fine at 16:9, but Windows 7 will not, it will play back the incorrect.wmv at 16:9.

What I mean is the PAR values were reversed in Win 7 (and presumably earlier) and never fixed until Win 8. So the VC1 standard has been basically forked into pre-Windows 8 software vs hardware + Windows 8. Expression Encoder would fall into the Pre-Win8 software camp. I use it because it's free :)

btw how did you demux the streams? DO you know of a tool that can change the PAR in a vc1 ES and remux into wmv?

filler56789
17th August 2014, 19:44
ASF2VC1: http://www.ftyps.com/unrelated/asf2vc1/

DO you know of a tool that can change the PAR in a vc1 ES...... ?

Nope, I don't. The few anamorphic VC-1 samples I have created, I muxed them all into MKVs, or TSs, or MP4s, or even AVIs. Also, I am not a big fan of Windows Media Player... I use MPC-HC, MPC-BE and MPlayer, and if I give them, let's say, a 720x540 VC-1 clip whose PAR = 4:3, they all will display a 960x540 image.

Therefore, to me it seems there is something "broken" on your Windows 7 setup, OR with your copy of Expression Encoder :confused:

What I mean is the PAR values were reversed in Win 7 (and presumably earlier) and never fixed until Win 8. So the VC1 standard has been basically forked into pre-Windows 8 software vs hardware + Windows 8. Expression Encoder would fall into the Pre-Win8 software camp. I use it because it's free :)

With the help from the WMF11 package, one can encode to VC-1 through Windows Media Encoder, NicWmEnc, or
the custom VBS file written by Alex Zambelli :sly:
Besides, there is the "AVS2ASF" ( <= this name sucks! ) mod created by TinTime.

seeker010
17th August 2014, 20:09
thanks. have you tested the above clips with your players? I can't get mpc-hc to play correct.wmv correctly (without DXVA), but it plays incorrect.wmv fine.

Besides, WMP should be the definite authority on WVC1 since it's you know a MS creation, but that's neither here nor there.

I wonder if Alex still drops by from time to time to shed some light.

filler56789
17th August 2014, 20:32
I can't get mpc-hc to play correct.wmv correctly (without DXVA), but it plays incorrect.wmv fine.

Make sure MPC-HC is not using the DMO decoder from M$. If you use LAV Video, or ffdshow, or Mainconcept's filter, then correct.wmv is displayed correctly and incorrect.wmv is displayed incorrectly (DOH! :D )

Besides, WMP should be the definite authority on WVC1 since it's you know a MS creation, but that's neither here nor there.

WMP is not a player :p More seriously, M$ cares too much about making easy money as fast as possible, and as a consequence,
they don't have the time to follow their own specs :scared:

from http://www.alexander-noe.com/video/amg/

Windows MediaPlayer replays all audio streams simultaneously. This is normal.
WMP does not support AVI files, don't use it.

bigotti5
17th August 2014, 21:17
Both streams are incorrect.
Disp_horiz_size is wrong in sequence layer for both streams (== 1439, should be 1919).

filler56789
17th August 2014, 21:37
Both streams are incorrect.
Disp_horiz_size is wrong in sequence layer for both streams (== 1439, should be 1919).

Thanks for the info :goodpost:

I was about to create an HD anamorphic VC-1 sample for testing the theory "Expression Encoder outputs borked streams", but thanks to your good-post, now that's unnecessary :)

clsid
18th August 2014, 15:22
LAV Video decoder uses the MS DMO/MFT decoder by default, and that indeed handles your sample files differently on Win7 than it does on Win8.