Simple VR Video Player

Simple VR Video Player

p1mrx Jul 25, 2016 @ 11:53pm
GPU-only Decoding?
Is there any combination of video format and engine which will cause this player to decode, transform, and output a video without pushing all the pixels over the PCI-E bus? More specifically, if I want to play 90fps video at the highest possible resolution, with preprocessing in ffmpeg and no concern for file size, which format and engine would you expect to be optimal?

When using DirectShow with LAV, I notice that DXVA2 (native) has no effect, while DXVA2 (copy-back) works, but slowly. Is it even theoretically possible to use DXVA2 (native) with a geometric transformation?
< >
Showing 1-5 of 5 comments
⌬ Codified ⌬ Jul 26, 2016 @ 2:02am 
Even with GPU decoding data still passes through the FSB.

Can I ask what container you are using? I'd recommend using matroska it has binary parsing and full indexes, if you're not using it, it should solve your problem.
p1mrx Jul 26, 2016 @ 10:48am 
I am using Matroska already. My experiments suggest that PopMovie with H.264 "fastdecode" or "baseline" can just barely play 3200x1600p90, but DirectShow cannot with any format, even mpeg2, mjpeg, and huffyuv (PopMovie doesn't support those formats, so it'd be nice to have a list of what it does support.)

But I think the problem is with copying the sheer quantity of pixels, moreso than the codec performance. Getting to 2160p90 and beyond will require keeping the path as short as possible, and throwing away non-visible pixels as soon as possible.
Last edited by p1mrx; Jul 26, 2016 @ 10:51am
⌬ Codified ⌬ Jul 27, 2016 @ 5:03am 
Well libVLC is your best bet but is a mere shadow on the true ffmpeg, it would be nice if we could add our own engines then you could add cuda/opencl but I'm guessing that isn't on the horizon. I have the best luck with DirectShow using madVR, if you have a few decoders you'll need to manually adjust the merits.

That said, when I get to 6K 360 SBS, it gets very choppy but hey we're pioneers here :)
simplevr  [developer] Jul 27, 2016 @ 9:54am 
Yeah I wish I had a more definitive answer as to what works best and how to get the most out of DirectShow w/hardware acceleration, but I really do need to spend a good day or two doing some benchmarking tests myself. You can also try Nvidia Cuvid if you have a GeForce card.

I do need add some benchmarking stats in the app to help with this. Right now only way is trial and error which can be frustrating. One annoying thing about LAV is that I have to make changes and restart the app to test everything again.

The best tool I've used is DXVA Checker if you're not using it already
http://bluesky23.yukishigure.com/en/DXVAChecker.html

It can trace log dxva calls to see if calls are working and also has a built in Merit changer for filters so that it'll force it to use a specific filter. You can see all the registered Dshow filters you've installed, register new ones, and change merits.

I also use GraphStudioNext (x64) to help trouble shoot everything too.
https://github.com/cplussharp/graph-studio-next

I'll have to find some 90fps videos too :)
⌬ Codified ⌬ Jul 27, 2016 @ 12:31pm 
Don't worry about it, you've done a great job, a lot these problems can be a myriad of things. Just so you know, I'm a C/C++ kind of guy, done plenty of work in video, so feel free to add me if you want to have a natter.
< >
Showing 1-5 of 5 comments
Per page: 1530 50