I have always run into the same issue with several HEVC videos, not necessarily 6K and greater. The only way to get them to play is to "jumpstart" them like you said by toggling either DirectShow or the "Alternate" (Unity) playback method. The Alternate playback is actually the only way I can get 6K and greater videos to play without stuttering anyways, but seeking is extremely slow with it enabled.
For some older 4K AVC videos and even some newer higher res HEVC ones that have "spatial metadata" already, the "regular" playback method is entirely unusable because the videos will appear very distorted - they are vertically squashed and the L/R views are somehow jumbled up together. The options for the videos are always set correctly, L/R, 180 degree SBS, etc. If you try "flat" they actually look correct, but with no depth.
Switching to DirectShow makes them render properly, but that has its own problems. Sometimes DirectShow will play videos at 2x speed with audio that is also pitched 2x as high; this causes sudden, loud "Alvin and the Chipmunks" audio to play. This goes away after turning off DIrectShow, waiting 2-3 seconds, and then turning it back on. More importantly, it's unusable for anything >4K on my system, so the Unity player is the only option.
And before you ask, yes, I have LAV Filters installed and I have checked repeatedly that they work properly in other players, like MPC-HC. I even went out of my way to double check the "merit" for LAV and all other DirectShow filters, as well as check how my system would decode files outside of DeoVR, using both DirectShow and Media Foundation.
It's incredibly annoying to still get an "LAV Filter, VP9, blah blah blah" message when:
- The file isn't VP9...it's an MP4, with either AVC or HEVC
- LAV Filters are already installed
The errors persist on those same files even when LAV's DirectShow "priority" is basically forced, by using the typical MERIT_PREFERRED
value, 0x00800000
or even by exceeding it a bit, like by entering 0x00800001
, making sure that nothing else should ever be loaded. LAV Filters are also set up properly and checking the decode "path" the files in question take in DXVAChecker shows that they're being utilized under DirectShow playback and that Microsoft's own AVC/HEVC WMF filters are working properly under Media Foundation, with the files decoding at 60 FPS and not dropping any frames.
DXVAChecker can be helpful to try and pin things down, even if it doesn't necessarily answer why DeoVR suddenly doesn't want to use LAV Filters but only for particular files, or why the developers hardcoded a message about VP9 into a generic "decode" error message without at least including some kind of error code or even a useful message! It's even worse when the error gets stuck and is undismissable, at which point the only option is to restart DeoVR.
I'm not responsible if you mess things up by changing filter merit or unregistering them! Be careful! Checking how a file is decoded and how it performs (frame rate, dropped frames, etc) doesn't change any system settings and is easy:
DS/MF Decoder
Tab
- Pick the desired "path" from the dropdown box on the top left of that section - "DS" for DIrectShow, "MF" for Windows Media Foundation which should be the default in DeoVR, 32 bit, 64 bit, etc. I believe DeoVR is a 64-bit app, but don't quote me on that.
Check Decoders
Select Media File
If you do choose to edit any merit values underneath "DSF/MFT Viewer" - at the very least, note the original values before you edit them. You can brick things otherwise.
You can remove the "side data" that causes that if you know your way around ffmpeg. Easiest way to tell if a file has that metadata is to try opening it in VLC. If you get a "flat", uncorrected view of both eyes, as if it were just a regular video, then there is no side data. If VLC actually renders it as a 360 degree video and allows you to pan/zoom, then there is spatial metadata in the video. Or if you check it with ffprobe, you can see something like this in the output, sandwiched between the (truncated) video/audio stream data in this snippet below:
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 3840x1920 [SAR 1:1 DAR 2:1]...
Side data:
stereo3d: side by side
spherical: tiled equirectangular (0.000000/0.000000/0.000000) [1920, 0, 1919, 0]
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo...
Hope that helps someone...