51 (edited by GregZone 02-06-2025 04:56:56)

Re: Howto: play BD3D with SVP using MPC-BE or Daum PotPlayer

dawkinscm wrote:

It could be argued that 4XVR is the best VR solution because it allows you to play full 3D rips without re-encoding. But the same thing can be done with Virtual Desktop and  MPC-BE which I think is a more flexible solution and allows you to play full Atmos audio through an audio receiver. MPC-BE is not the best, that would be MPV, but MPV requires time and work while MPC-BE just works and is more than good enough for a great 3D virtual experience smile

Yes, as I noted, 4xVR does MVC 3D playback quite nicely in Quest 3 standalone.  I think "full 3D rips without re-encoding" has already been estabilished as the prerequsite. Original MVC 3D quality playback is the starting point!

However, although Quest 3 supports 120fps playback, delivering integer multiple consistent film-rate motion, you still experience the 24fps motion limitation.  This I still find a little uncomfortable in the VR environment (although significantly better than frame-rate mismatch judder).

My testing has shown me: Virtual Desktop + SVP + MPC-BE provides the best Quest experience (even considering the 4xVR native App convenience).

I have a 120Hz 4K desktop, and whether I also use 120fps VR Virtual Desktop refresh rate, or switch to 90fps Quest / Virtual desktop refresh rate, as long as I have SVP set to match the VR refresh rate, I get nice smooth motion video playback (without the 24fps motion limitation that I still see in 4xVR).

So, although I do agree that 4xVR is the best standalone VR solution, I only agree on the basis of  the need for a standalone player.  Where the best quality smooth motion video playback (and great Theater Environments) are the priority, then I'd definately say that Virtual Desktop + SVP + MPC-BE currently rules.

Re: Howto: play BD3D with SVP using MPC-BE or Daum PotPlayer

Hey GregZone,

I just wanted to say thanks for documenting your process of getting SVP working with BD3D MVC decoded video.
I'm about to attempt it for use with a 3d projector using frame sequential output via PotPlayer. I'll let you know if I have any success getting it to work without the single eye stretched video output.
I had a similar problem with stretched single eye video output before and I found switching between the intermediary frame buffering modes then stopping and starting the video resolved it.
This wasn't with using SVP, I am about to embark on trying to get that working.
I don't think MPC-BE supports frame sequential output unless I'm mistaken so I think PotPlayer is probably my best chance for smooth 3d with SVP via frame sequential output.

Re: Howto: play BD3D with SVP using MPC-BE or Daum PotPlayer

r75cq wrote:

Hey GregZone,
I'm about to attempt it for use with a 3d projector using frame sequential output via PotPlayer. I'll let you know if I have any success getting it to work without the single eye stretched video output.

Thanks. I'm really interested to hear your findings.  I'm due a Valerion Max (3D capable projector) in a couple of months, and I have every intention of experimenting with PC output, compared to my stand-alone Zidoo Z9X option, for MVC playback.

54 (edited by r75cq 10-06-2025 00:21:36)

Re: Howto: play BD3D with SVP using MPC-BE or Daum PotPlayer

Hey Greg,

I saw a post a month ago that detailed how to get "half 4k 3d" resolution on many 3d capable 4k projectors using a custom resolution with ToastyX CRU tool.
I can't find the original post I read, but I found a similar post that is pretty good.
You may want to check it out, getting the pixel clock and timings just right is difficult otherwise you can get tearing.
If I were buying a new 4k 3d capable projector I would definitely try that with SVP and see if you can get amazing results smile
half resolution 4k at 60 hz for 3D would be something special I have no doubt smile
https://www.avsforum.com/threads/setup- … r.3291217/
I didn't get a chance to try SVP just yet as I'm waiting for a period where I will have a few days to take full advantage of the 1 week trial to try and get it working right!
EDIT:
I think I found the original link I had read I'll post it here for completeness (it's by the same guy who would have guessed this guy is pretty rigorous in his documentation just like you).
https://www.avsforum.com/threads/playin … e.3289889/

Re: Howto: play BD3D with SVP using MPC-BE or Daum PotPlayer

Hey Greg,

Just to update you I was unable to get 60hz 4k to display properly.
The comment by Bob3D was accurate in my case. As soon as it engages 3D mode in the DLP chipset it disables pixelshift.
So the result you got was the equivalent of just sending 1080p half SBS or 1080p half TAB
My projector I'm testing on is a Xgimi Aura Pro.
Now for the good news. I was able to add a custom monitor profile using CRU based on the post here.
https://www.mtbs3d.com/phpbb/viewtopic.php?t=26494

1920x2205 (1080*2+45) which is the resolution for frame packed HDMI 3d signals.
I was able to get it to send to the projector at 60 hz.
And then I was able to engage the projectors 3D mode and it stripped out the 45 pixel blanking region and assigned them to the eyes properly.
So I was getting Full HD at 60 hz per eye.
The only issue remains is that windows "3d mode" automatically sets the computer to frame packed 24 hz mode.
So you need to just play the video in full TAB mode. But then because of the 45 hz left right frame packed spacing interval you get a 22 pixel vertical difference between the left and right views.
I will need to use a vapoursynth script or avisynth script to re-align them before display (which shouldn't be an issue).
I haven't gotten to the actual part of trying to use the rife frame generation yet that will be next week probably.

There's a really good youtube channel I found that discusses how to modify the vapoursynth scripts for different software like SVP to get optimal results and speed.
You may want to check his channel out he's promised me he will make an update to date video at some point for using MPV.
https://www.youtube.com/@displaytalk

Re: Howto: play BD3D with SVP using MPC-BE or Daum PotPlayer

Hey Greg,

One other update, regarding PotPlayer there is actually an installer script written by ThreeDeeJay
https://github.com/ThreeDeeJay/PotPlayer3D/releases
In his 1.2 release notes he said the following.
"""Updated PotPlayer to 240315(1.7.22128) (32-bit, as required by SVP) - ⚠️ Version 240509+ broke 3D SBS layout detection so SBS view looks quadrupled and manually changing it doesn't work, so avoid updating unless it was fixed, though you can always just run the script again to downgrade."""
This issue sounds similar to what you described as your problem with PotPlayer, you may want ot try downgrading to 240315(1.7.22128) (32-bit) and see if that fixes your issue (I havent tried it just yet).

Re: Howto: play BD3D with SVP using MPC-BE or Daum PotPlayer

Hey Greg,

Afew updates. I think I reproduced your issue with PotPlayer only showing one of the two eyes when VapourSynth is enabled.
I used side-by-side mode. I had all settings set to full side by side, input, mvc transition buffer, output. and I only get a single eye stretched to 3840x1080 when I enable VapourSynth for SVP.
Interestingly if I change the mvc intermediate render buffer to "half-sbs" it renders fine.
As such I suspect that whatever detection the SVP stuff is using to determine SBS something isn't quite right when it receives full side-by-side or full top-and-bottom as it seems to stretch a single view over where both left and right eyes should go.
I might try to look at the SVP vapoursynth script to see if I can spot where it is going wrong as I suspect it is in there.
I didn't have time to try using the older PotPlayer version 240315 but if I get a chance i will.

Also I'm curious what's your video card. I have a 3060 12GB attached via EGPU enclousure, and using RIFE TensorRT the best I can get stable output for is 1920x1080 and 24 -> 48 fps (2x). If i try to get 24 -> 60 fps (2.5x) it stutters and can't keep up.
I'm pretty sure there's no way I'm going to be able to run at 3840x1080 (2.5x) which I had hoped I might, I'm curious if a 4080 or 5080 would be fast enough. I did a quick analysis on the number of cuda cores.
```
GPU Model    CUDA Cores
RTX 3060 12GB    3,584
RTX 5060    3,840
RTX 5070    6,144
RTX 5070Ti    8,960
RTX 5080    10,752
RTX 4080    9,728
```
It seems like I would probably need a 4080 or a 5080 (around 10000 cuda cores assuming it scales in performance roughly linearly) (which is too expensive right now, so I think preprocessing my files is probably the way to go for now).
Do you know if any of the SVP preprocessing tools can process 3D videos? I seem to recall reading they couldn't and 3D was only supported for real-time decoding.

Re: Howto: play BD3D with SVP using MPC-BE or Daum PotPlayer

Downgrading to PotPlayer 64bit 1.7.22129 as per the ThreeDeeJay PotPlayer site didn't fix the issue.
I am able to get it working properly with PotPlayer VapourSynth script if I do the following.
Set the MVC 3D Transfer Mode to "Synthesized View: TAB/SBS at half resolution" followed by stopping restarting the video, then once the video is playing selecting Input Source "Full Resolution" twice (the first time it doesn't seem to work).
I don't like this solution because it means it's going to be generating a synthetic half resolution video before stretching it back (thus defeating the point).
But it just goes to show it works.
I looked into the vapuursynth script and I made some minor changes.
Irregardless of whether one selects half/full for "Synthesized View: SBS at half/full resolution" the "clip.width" seen by base.py is always 1920.
It should I believe be getting a clip.width of 3840 when Synthesized View: SBS at full resolution" is selected, but it is not....

I did the same test with avisynth and I get the same issue it shows 1920 as the width regardless of if Synthesized view is full or half width.
```
input2 = input.Subtitle("Width: " + String(input.Width()), size=60)  # Display the width
interpolate(input2)
```

Now for the interesting part.
For AVISynth If I disable the entries in "filter control" "custom filter manager".
And just add a simple subtitle to show the clip width in the inline avisynth logic it prints out the correct width 3840 for synthesized full width and 1920 for synthesized half width.
```
input = potplayer_source()
input2 = input.Subtitle("Width: " + String(input.Width()), size=60)  # Display the width
input2
```

And also for VapourSynth, same thing a custom added script properly shows the correct clip width and height for full and half transfer sizes.
```
import vapoursynth as vs

core = vs.core
clip = video_in
text = f"Width: {clip.width}"  # Get the width
clip = core.text.Text(clip, text, scale=6)  # Display the width with a larger font

clip.set_output()
```

Looking at the generated vapoursynth script the issue seems to be that.
```clip = VpsFilterSource.std.Trim(length=5000000)``` is getting a clip which always has 1920 irregardless of the transfer type half/full.
Meanwhile internal vapour_synth scripts to potplayer itself get a clip width that correctly matches the transfer type half/full.

I tried to load the script into potplayers varpoursynth plugin script location that change "clip = video_in". Then I proceeded to try and empty base.py in hopes that maybe it would work. But for whatever reason PotPlayer crashed, perhaps because SVP was still trying to load the second VapourSynth script and causing problems, or perhaps because the DLL cannot be loaded from within a VapourSynth script typed directly into PotPlayer..

At this point I'm at a bit of a loss. If the author of SVP wants to chime in and let me know why he thinks.
VpsFilterSource.std.Trim(length=5000000) is returning a different width from what the internal scripts get from "video_in"
I'm happy to try testing afew more things until my 30 day trial runs out.

Re: Howto: play BD3D with SVP using MPC-BE or Daum PotPlayer

Whats interesting is if I change the code so that VSP generates an empty temp vapoursynth script in "AppData\Roaming\SVP4\Scripts" then manually copy the following script into PotPlayers native VapourSynth script area.
```
import vapoursynth as vs

core = vs.core
clip = video_in
text = f"Width: {clip.width}"  # Get the width
clip = core.text.Text(clip, text, scale=6)  # Display the width with a larger font

clip.set_output()
```
Then I check to enable the "VapourSynth" in "Filter Control" -> "Filter Priority (overall)"
It shows the correct width of 3840 for "full width" transfer mode.
But the image is incorrect, it shows one eye stretched horizontally to fill the full 3840 width.
If I then go an uncheck to disable "VapourSynth" in "Filter Control" -> "Filter Priority (overall)"
It shows the correct width of 3840 for "full width" transfer mode.
And the image is now correct.
So there is something about using the internal "VapourSynth" vs the one packaged with SVP.
In addition to "VpsFilterSource.std.Trim(length=5000000)" returning the wrong width.
The VapourSynth to pot player is returning a different "video_in" image than the one returned when using the VapourSynth that is packaged with SVP and imported via "Filter Control" -> "Filter Priority (overall)".
All I can think is that internally PotPlayer is pre-modifying video_in when there internal VapourSynth implementation is used (perhaps via some kind of monkey patch).

Is there anyway we can get an internal PotPlayer script to communicate/work with SVP without enabling "Filter Control" -> "Filter Priority (overall)"