Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. Domains: forum.doom9.org / forum.doom9.net / forum.doom9.se |
|
|
#21 | Link | ||
|
Moderator
![]() Join Date: Jan 2006
Location: Portland, OR
Posts: 5,134
|
Quote:
Quote:
Bear in mind WMV9 was released in 2003, and thus was optimized to run well enough on single-core x86-32 MMX CPUs as a baseline, so they had a fraction of the MIPS/pixel to work with than H.264 Main Profile. The major difference between WMV9 Main and WMV9 Advanced/VC-1 was allowing for adaptive QP on I-frames, which was overlooked in the original implementation. But performance was identical with the same parameters (although VC-1 implementations tended to have overlap transform and loop filter on by default, while WMV9 originally defaulted to them off for decoder performance reasons). The in-loop deblocking filter was one of the big retrospective regrets by the VC-1 developers. They felt they over optimized on decoder performance and the codec would have been a lot more competitive against H.264 if they'd just used a few more taps so it could do a better job. Bear in mind that VC-1 also had overlap transform, which also played a role in reducing blocking, and they were presumed to be working together. The other big regret was implementing differential QP by doing a RLE bitmask of variable length codes of the per-macro block differential. The actual bitrate overhead of that signaling turned out to be high enough as to eliminate the value of using adaptive QP in many low-bitrate cases. H.264 did it a lot more efficiently so it was a safe always-on feature to use. In more advanced VC-1 encoders, advanced adaptive deadline techniques without any signaling overhead wound up addressing a lot of what adaptive QP did in other codecs. |
||
|
|
|
|
|
#22 | Link | |
|
Registered User
Join Date: Apr 2024
Posts: 26
|
Quote:
|
|
|
|
|
|
|
#23 | Link | |
|
Moderator
![]() Join Date: Jan 2006
Location: Portland, OR
Posts: 5,134
|
Quote:
VC-1 was really a well thought-out design for a codec that had to run well on x86-32 with MMX, and was competitive with H.264 Baseline at similar bitrate and software decoder overhead. And available encoders were faster and more robust than the early commercial H.264 encoders like Main Concept. The VC-1 Professional Edition encoder could handle a much broader range of content than early H.264 encoders, like screen recordings with transparent GUI (Vista and Aqua) and cel animation. But didn't have enough in the tank to compete with H.264 Main and High profiles, particularly when coupled with the miracle of x264 and how well it leveraged open source and dedicated community with a wide variety of use cases to test. And when Microsoft decided that the Windows Media mission was achieved (no more uncapped per unit decoder licenses like MPEG-2), there wasn't any reason to work so hard swimming upstream and the company pivoted to standards-based codecs like AAC and H.264. Microsoft had a really nice early H.264 encoder that was competitive with x264 in quality (but not at speed, as it only had slice-level parallelism while x264 had frame-level). But it was buried in a .dll and never really promoted or had any tools released that used it other than Expression Encoder. And there wasn't any business justification to fund a team continuously optimizing it at the level the x264 community was providing that. |
|
|
|
|
|
|
#24 | Link | |
|
Lost my old account :(
Join Date: Jul 2017
Posts: 396
|
Quote:
Cineform was it as well if i remembered correctly, didnt see that wide adoption but it was very good, and was one of the best DI options and rather common on windows until we started to see prores support there. |
|
|
|
|
|
|
#25 | Link | ||
|
Registered User
Join Date: Apr 2024
Posts: 26
|
Quote:
![]() Quote:
I should have specified 'low bit rate image/video coding' in my original comment because that's generally where people felt wavelets looked worse. |
||
|
|
|
|
|
#26 | Link | ||
|
Moderator
![]() Join Date: Jan 2006
Location: Portland, OR
Posts: 5,134
|
Quote:
Quote:
|
||
|
|
|
|
|
#27 | Link | ||
|
Moderator
![]() Join Date: Jan 2006
Location: Portland, OR
Posts: 5,134
|
Quote:
The coolest use for VC-1 was in the Xbox 360 video streaming service. It did 1080p variable GOP VBR adaptive bitrate streaming in 2009! Due to the loop filter and overlap transform issues in VC-1, even 10 Mbps could get blocky at 1080p with some stressful content. And once you had a blocky p-frame, the rest of the GOP was going to look bad. So they built analysis of the motion vectors and frequency distribution horizontally and vertically. Then they would apply anamorphic spatial compression per fragment to the largest that would maintain the target maximum QP. Which worked well psychovisually, as it would tend to compress along the axis of motion, where there was motion blur and less resolution was needed to maintain detail! This got around the classic compression conundrum of having to pick a static frame size that didn't look too terrible for high complexity content while not being overkill for static content which would have been fine with higher resolution (and benefits the most from it). It was also helpful for software decode (and that's all there was in the 360/PS3 generation), as the more complex the motion compensation was for a frame, the fewer pixels needed to have it applied. That also left more compute to apply CPU load dynamic out-of-loop deblocking and deringing post processing. It was a great technique that didn't really get picked up after that. Modern codecs with their stronger in-loop deblocking, SAO, and similar in-loop artifact suppression features can "recover" from a QP spike better as a high QP frame can still make an okay reference frame. And support for bigger block sizes has meant that required bitrate increases for a given resolution increase is relatively less, so it's safer to err on the side of higher resolutions. Still, Yuri from BrightCove demoed 10% savings even with HEVC using a similar technique at SMPTE MTS in 2023. Film grain was the primary limiting factor in practical use.[/QUOTE] Quote:
Fingers crossed someone will have the genius idea to make it work someday. I thought I've had it a half dozen times myself ! But "temporal wavelets" just never gel into anything plausibly practical.Thanks for great excuses to go down codec memory lane! I encoded my first digital video file back in 1989, so this has truly been my life's work. |
||
|
|
|
|
|
#28 | Link |
|
Big Bit Savings Now !
Join Date: Feb 2007
Location: close to the wall
Posts: 2,036
|
Nice reading, Ben !
Going through the Blu-ray editions I bought I am still happy with the natural detail retention vs. bitrate over all the VC-1 encodes I've seen. It is just good codec R&D. I came to value .wmv much later, after H.264 indeed, as more and more bitrate-starved blotchy H.264 videos came into my task and after all one would come to the conclusion that a 1Mbps .wmv would look less maimed. I just would have wished an earlier Expression Encoder release and I would have paid for that. The release strategy around VC-1 was a bit unclear for me, but well, I was late to this party anyway.
__________________
"To bypass shortcuts and find suffering...is called QUALity" (Die toten Augen von Friedrichshain) "Data reduction ? Yep, Sir. We're that issue working on. Synce invntoin uf lingöage..." |
|
|
|
|
|
#29 | Link | ||
|
Registered User
Join Date: Apr 2024
Posts: 26
|
Quote:
Quote:
3D DCT and 3D wavelets have been tried and always fall flat mainly due to how inefficient they are at coding similarities between adjacent frames. Block matching is both fast and effective since similarities between frames are not always able to be described by a curve or function. What did you use to encode your first digital video file by the way? |
||
|
|
|
|
|
#30 | Link |
|
Broadcast Encoder
Join Date: Nov 2013
Location: Royal Borough of Kensington & Chelsea, UK
Posts: 3,378
|
Yep. And it's already been 2 and a half years since I wrote "The Ultimate Avisynth DCP (Digital Cinema Package) creation guide" here on Doom9 describing exactly that. One of the funny thing about JPEG2000 and its all intra nature is that it still scales up nicely after so many years. Basically, being all intra, each frame of the source is a .tiff picture that gets fed to the OpenJPEG encoder to create a .j2k for each frame. Those then gets appended together to create the actual JPEG2000 stream and such a stream is muxed in the mxf container. This allows to potentially scale as much as you want as you can encode as many frames as a CPU has cores in parallel. I've recently encoded every episode of The Last of Us for the marathon of the 1° series that was gonna be displayed at the cinema leading up to the first episode of the second series and I was in a bit of a hurry, so I just set the number of threads to 56 (I have a 56c/112th Xeon in one of my servers) and it scaled up pretty nicely.
![]() There have also been experiments with the KLT (Karhunen Loève Transform) back when the first H.265 HEVC proposals were still being evaluated and before ending up with the actual DST and DCT. Ultimately, although the KLT was supposed to be optimal in many scenarios, its overall computational cost and lack of any known "fast" algorithm made it so that it wasn't worth pursuing. Last edited by FranceBB; 30th June 2025 at 00:04. |
|
|
|
|
|
#31 | Link | |
|
Registered User
Join Date: Oct 2024
Posts: 10
|
Quote:
Last edited by a.ok.in; 30th June 2025 at 11:57. |
|
|
|
|
|
|
#32 | Link | ||
|
Moderator
![]() Join Date: Jan 2006
Location: Portland, OR
Posts: 5,134
|
Quote:
Another secret weapon of VC-1 for Blu-ray was xscaler, a command line utility written by Spears and Munsil back when they worked at Microsoft. It was a really advanced, very tweakable dithering tool to get down from 10+ bit mezzanine sources to the 8-bit 4:2:0 of original flavor Blu-ray. And it was bundled with the VC-1 professional encoding tools, and the Blu-ray compressionists were trained in using it. The best codec in the world can't fix upstream banding or dithering issues, so that really helped. Of course, the tool was codec agnostic, and got used by some of the same compressionists after they switched to H.264 disc authoring. Quote:
Literally everything I worked on in my six years at Microsoft had been cancelled before I left, often in some incredibly stupid and customer-harmful ways. My book and aspects of MPEG-DASH are about all I did there that matters anymore. At Amazon I'm still iterating on stuff I started my first day 13 years ago. "Customer Obsession" is real. |
||
|
|
|
|
|
#33 | Link |
|
Big Bit Savings Now !
Join Date: Feb 2007
Location: close to the wall
Posts: 2,036
|
Many thanks for your open words, Ben.
__________________
"To bypass shortcuts and find suffering...is called QUALity" (Die toten Augen von Friedrichshain) "Data reduction ? Yep, Sir. We're that issue working on. Synce invntoin uf lingöage..." Last edited by Emulgator; 1st July 2025 at 22:30. |
|
|
|
|
|
#34 | Link | |
|
Broadcast Encoder
Join Date: Nov 2013
Location: Royal Borough of Kensington & Chelsea, UK
Posts: 3,378
|
Quote:
Last edited by FranceBB; 2nd July 2025 at 05:28. |
|
|
|
|
|
|
#36 | Link | ||
|
Moderator
![]() Join Date: Jan 2006
Location: Portland, OR
Posts: 5,134
|
Quote:
That said, xscaler wasn't codec aware at all. It was just very good and tunable for its era. Parametrized Floyd-Steinberg and such. We have access to at least as good stuff today. Quote:
|
||
|
|
|
|
|
#37 | Link |
|
Moderator
![]() Join Date: Jan 2006
Location: Portland, OR
Posts: 5,134
|
Happy to provide. I imagine the codec historians of the future will treasure the archive.org logs of Doom9!
And everyone is always welcome to ask more questions of this sort. Want to hear about MacroMind Director Accelerator RLE encoding circa 1989 ?
|
|
|
|
|
|
#38 | Link |
|
Registered User
Join Date: Apr 2024
Posts: 26
|
Tiny little update I added to address an issue I noticed at lower bit rates when encoder with a longer GOP length.
Basically, the encoder keeps track of which blocks in the GOP have been marked as intra at some point and if there are too many that have been marked intra, the encoder inserts an intra-frame. Blocks that are unmoving are double counted since those are more noticeable to the viewer. https://github.com/LMP88959/Digital-...ideo-2/pull/19 |
|
|
|
|
|
#39 | Link |
|
Registered User
Join Date: Apr 2024
Posts: 26
|
Huge encoder update! (encoder version 14)
- statistics tracking and reporting - 'sfr' argument now works with y4m inputs - intra frame psy improvements The biggest changes were to motion estimation: - improved motion vector RDO - added dynamic psy-based block difference metric - improved inter/intra/skip mode selection - added a ton of estimation candidate vectors + an extra subpel test I have updated the example encodes / comparisons in the GitHub's README, please check them out! https://github.com/LMP88959/Digital-Subband-Video-2/ |
|
|
|
|
|
#40 | Link |
|
Registered User
Join Date: Apr 2002
Location: Germany
Posts: 5,001
|
another waveleto
hmm after Rududu,Dirac,Snow,JPEG-2000 lot of new movement ![]() the Chinese are also very actively invested working on it improving also with their Deep Learning Power for geospatial purposes (which is also a codeword for land reconnaissance UAV in military/space use terms) Funny thing about VC-1 it was very successful for some who preferred skin retention now we can see that AV1 improved everything VC-1 did less efficient BTW see who found his way to Microsoft Ben https://patents.google.com/patent/US...=Sergey+Sablin TSU->Elecard/Mainconcept->Aspex Semiconductor->Microsoft(Skype)->Meta(Facebook)->AV1 https://gitlab.com/users/ssablin/activity https://gitlab.com/AOMediaCodec/SVT-..._requests/2507
__________________
all my compares are riddles so please try to decipher them yourselves :) It is about Time Join the Revolution NOW before it is to Late ! http://forum.doom9.org/showthread.php?t=168004 Last edited by CruNcher; 13th September 2025 at 19:08. |
|
|
|
![]() |
| Tags |
| codec, open source, subband, wavelet |
| Thread Tools | Search this Thread |
| Display Modes | |
|
|