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.

 

Go Back   Doom9's Forum > Video Encoding > VP9 and AV1

Reply
 
Thread Tools Search this Thread Display Modes
Old 28th May 2022, 17:15   #1  |  Link
BuccoBruce
Registered User
 
Join Date: Apr 2022
Posts: 25
The "Xbox One" AV1 decoder AOM/Google wrote will run on Windows...

Has anyone else actually tried compiling and running it on Windows? I can't get the .exe to launch directly, and I don't know the first thing about C++ or UWP, other than that the U means Universal. Forcing it to "Debug" locally instead of on an Xbox One just worked.*

*I couldn't make north or south of how it was trying to access files, so I just changed where it was supposed to be looking and threw hard links and junctions all over the place until I figured it out. I'll use git later to pull and then properly fork if anyone is actually interested in playing with this.

Edit Line 22 of uwp_common/Source Files/decoder_creator.h to read:
Code:
#define _CONFIG_PATH_ "args_av1.txt"
and lines 160/161 of uwp_common/Source Files/decoder_creator.cpp to read:
Code:
  write_path = "";
  read_path = "";
You honestly might not have to make either change, but after doing so, I was able to put args_av1.txt directly into \x64\Release\uwp_dx12_player\AppX

Code:
-dir "./streams" -t 6 -frate 0 -progress
I made a "streams" folder right next to the .exe and put 2 WEBMs in there, right clicked uwp_dx12_player and hit Debug.



Ignore the high temperatures and memory consumption on the WX 2100, it's "special" and I think the fan might be lying about what it's doing. The WX 5100 was completely idle before testing it out though, and it actually played the videos without being stuck at a weird resolution. I tried a file with "wrong" grain synthesis data to see how it handled very heavy grain in general, and that was still a go at 720p24.

These are piddly old cards, and the WX 2100 is a gimped RX 550 as far as raw shader performance is concerned. From peeking at the code, it looks like it's hard limited to 4096x2176x10bpp - I'm assuming they were targeting 4K24p on the Xbox One X. libav1 only seems to target Shader Model 5.0, which means you might be able to run this on some real stinkers of cards! That might also mean it could run really well on nVIDIA cards that "just" missed HW/ASIC AV1 decode but are otherwise monsters.




This is hardly as useful as it would've been before dav1d got faster though. I tried Netflix's "Sparks-5994fps-AV1-10bit-1920x1080-film-grain-synthesis-2013kbps" and it was dropping frames to maintain real-time playback - it could only decode ~50 FPS. The old Xeons in this server chewed through it at <10% load, and a lowly Ivy Bridge HTPC managed real time playback with no dropped frames at 50% load. I can't be arsed to try and get my RX 5700 to fit in this server, or install an IDE on my gaming machine, but it can likely handle 10 bit 1080p60 with grain with plenty of headroom.



You'd think it wouldn't be quite this easy to run an "Xbox app" on Windows Server. There's probably a way to get an unsigned .appx out of this, but that would also require building more of an actual "player" with proper file selection and an interface, unless you want to figure out where a UWP pointing at "./" is actually looking. And scaling. And sound... An HLSL based DirectShow or Media Foundation decoder might not be too difficult to figure out.
BuccoBruce is offline   Reply With Quote
Old 29th May 2022, 04:01   #2  |  Link
BlueSwordM
Registered User
 
BlueSwordM's Avatar
 
Join Date: Dec 2021
Posts: 9
I'm surprised you even got it to work in the 1st place. To be fair though, being mainly a Linux guy, I never even bothered.

However, with libplacebo GPU grain synth now in mpv(and likely soon VLC since it does have libplacebo support technically) and libplacebo hybrid GPU decoding coming in the future as well, this isn't as impressive as it would have been when this was introduced back in 2021.
BlueSwordM is offline   Reply With Quote
Old 29th May 2022, 13:19   #3  |  Link
Beelzebubu
Registered User
 
Join Date: Feb 2003
Location: New York, NY (USA)
Posts: 98
Quote:
Originally Posted by BlueSwordM View Post
However, with libplacebo GPU grain synth now in mpv(and likely soon VLC since it does have libplacebo support technically) and libplacebo hybrid GPU decoding coming in the future as well, this isn't as impressive as it would have been when this was introduced back in 2021.
That's a bit unfair. the xbox codebase runs *all* DSP utilities as GPU shaders, including inverse transforms, inloop postfilters, intra/inter prediction, etc. - placebo+dav1d just runs the grain on the GPU. It's an interesting accomplishment and it's nice of them to opensource it.
Beelzebubu is offline   Reply With Quote
Reply

Tags
i was so preoccupied with, that i didn't stop to, think if i should, whether or not i could

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 23:42.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2022, vBulletin Solutions Inc.