Skip to content

[Feature] Encoding settings #1

Open

Description

@JRDevo

Restored from the old repo (deleted and recreated on 2026-10-23). Originally opened by LazyLazyCoder on 2026-10-15, closed on 2026-10-23. The whole thread is below.

Original report

What do you want to do that you cannot do now?

Hello

First of all. Amazing work!

It's possible to add additional encoding settings for H265:

  • Constant Frame Rate. Now is Variable. VFR is not compatible/fully suppoted with Davinci Resolve
  • Encoding Rate Control: QP. Now it uses CB or VBR
  • Preset mode

Sound:

  • Possibiliy to disable(silent) Record/Stop sound because is recorded too.

b.r.

How should it work?

No response

Your setup

No response

Thread

JRDevo · 2026-10-16 22:44 UTC

yes and sounds like a good plan, i was not watching my own repo and didnt see this in time.... just released a new version. your changes will be next....

JRDevo · 2026-10-17 15:12 UTC

LazyLazyCoder check and let me know please

LazyLazyCoder · 2026-10-17 15:14 UTC

5. LazyLazyCoder check and let me know please

Sure. I'll test it and let you know. I have already new suggestion (simple to apply) after 1 day of usage :) Will check first this version first.

Thanks!

JRDevo · 2026-10-17 15:17 UTC

still building 0.4.0 give it 5 please

JRDevo · 2026-10-17 15:50 UTC

LazyLazyCoder check the new release notes and let me know with some testing: https://github.com/JRDevo/OpenXR-EyeCapture/releases/tag/v0.4.0

LazyLazyCoder · 2026-10-17 15:55 UTC

8. LazyLazyCoder check the new release notes and let me know with some testing: https://github.com/JRDevo/OpenXR-EyeCapture/releases/tag/v0.4.0

Of course. I just downloaded it, configured. Patience please :)

JRDevo · 2026-10-17 15:58 UTC

XD sorry I think there is a timing issue between the comments and release, I'm in no rush... take as long as you need

LazyLazyCoder · 2026-10-20 17:50 UTC

I have checked v5.0 and all working perfectly :)

My suggestions/needs:

  • make toogle to add 3D tag to video. I patched function "PatchStereoSpherical" in dll to just return and it working well for me, but I must patch dll for every update. Disable 3D tag help edit video in any software like Davinci Resolve
  • encoding bitrate. Before was option to manually put Bitrate, now we have fixed list. Is not a problem, but if you can add more items like 350,400,450,500 - it will be nice. I used before 450 and 5090 can handle it. It's for VR180 because we see more details/inperfection in VR180
  • VR180 video is little blurry when compared to SBS. I think it's because of dome projection mapping, because I did similar conversions and I get blurred video too (and little jagged lines). Solution is to apply sharpness filter, but I'm not sure how many fps it can hit. Is not essential, because I do futher video reprocessing. But 8K video is heavy for video sw when any effects is applied :)
  • Please add also Main10 profile. Some games are recorded with ugly color banding

Overall, perfect for me :)

Question:
Do VR180 video can have more "data" at left and right edge or is any kind if stencil/limitation?

I marked them on image:
https://ibb.co/XwFX6gG

JRDevo · 2026-10-23 08:03 UTC

Hi LazyLazyCoder, thanks again for the detailed list!

v0.5.1 is out: https://github.com/JRDevo/VR-EyeCapture/releases/tag/v0.5.1

From your last list, done in this version:

  • 3D tag toggle: tag_3d = 0 in config.ini (or the check box in the app window) writes a plain MP4 without the st3d / sv3d boxes. No more DLL patching. "Tag as 3D..." can add the tag later.
  • More bitrates: the list now goes up to 350 / 400 / 450 / 500 Mbit/s. Any value up to 1000 still works in config.ini (bitrate_mbps).

From your first list (already in 0.5.0): constant_frame_rate = 1, rate_control = qp + qp, quality_vs_speed (preset), and beeps = 0.

Not done yet:

  • Main10 / 10-bit: still on my list. The recording is 8-bit for now.
  • Sharpen for VR180: not yet. Thanks for the tip, I will look at a cheap GPU sharpen pass.

About the left / right edges in VR180: the dome can only show what the headset renders. Each eye sees only so far to the side, so the rest of the 180° stays black (or shows the last seen picture with fill = last_seen). Your idea is right: Virtual Desktop's FOV tangent setting at 80% makes the game render a smaller view, so you get less picture at the edges. 100% gives the full width.

Also new in 0.5.1 for VR180 / VR360:

  • Each eye now paints only the area that both eyes see (dome_shared_view = 1). This removes the one-eye strips at the outer edges that strained the eyes (see [Bug] SteamVR few bugs #2). The picture is a few degrees narrower; dome_shared_view = 0 gives the old, wider view.
  • A game's black lens corners are no longer painted into the dome (they left black holes in the last-seen picture).
  • fill_fade_s = 0 keeps everything you looked at in its place for the whole video; with projection = vr360 you can turn all the way around.
  • Very large recordings are now scaled to the HEVC / AV1 maximum (8192 x 4352), so every player opens them.

And the VR controller hotkey (hold both thumbstick clicks for 1 s) now works in SteamVR games too.

Please test and tell me how it works for you.

JRDevo · 2026-10-23 09:40 UTC

Hi LazyLazyCoder, the last two items from your list are done and released:

10-bit (Main10): bit_depth = 10 in config.ini, or "Colour depth: 10-bit" in the app window.

  • HEVC records Main10, AV1 records 10-bit. The VR180 / VR360 dome pass also runs in 10-bit now, so the banding should be gone.
  • H.264 stays 8-bit (no 10-bit hardware encoding). If an encoder refuses 10-bit, the recording falls back to 8-bit and the log says so.

Sharpen: sharpen = 0 .. 1 in config.ini, or "Sharpen: Light / Medium / Strong" in the app window.

  • It is a contrast-adaptive sharpen (like AMD CAS) on the GPU while recording. Fine detail gets more, hard edges less, so there are no bright halos. Each eye is sharpened on its own.
  • For VR180 I suggest Medium (0.6). Sharper video needs a bit more bitrate, so your 450 Mbit/s fits well.
  • The cost is one small GPU pass per frame. Please tell me if you see dropped frames on your 5090 at 8K.

v0.5.2 is out with both: https://github.com/JRDevo/VR-EyeCapture/releases/tag/v0.5.2
(0.5.1 also offers the update itself from the tray.)

When you test, please send me:

  1. Whether the banding is gone with 10-bit.
  2. How VR180 looks with sharpen 0.3, 0.6 and 1.0, compared with off.
  3. The "recording summary" line from eye_capture.log. It now ends with for example 10-bit, sharpen 0.60, and it shows dropped frames.

Thanks again for the ideas!

LazyLazyCoder · 2026-10-23 09:45 UTC

I'll test it all give you reply :) Good job!

LazyLazyCoder · 2026-10-23 12:49 UTC
  • "encoding bitrate." - enchanced - Perfect!
  • "3D tag toggle": Working
  • 10 bit working (tested with AV1). For banding compare, I need more test because it depend of game (mostly seen on blue, large area). We can assume that is working, because media info report 10-bit depth :)
  • Sharpening working very good. I compared 0.0 and 1.0. For me 1.0 looks like I see game in headset, but maybe is game depend or preference. Anyway, sharpening algorithm is VERY GOOD!. It do not produce any halos, artifacts etc. I like it :)
  • "recording summary line:
2026-10-23 14:14:31.530 [pid  7316] INFO  recording summary: OK | H:\Video\Beat Saber\hlvr_20261023_141428_VR180.mp4 | 8192x4096 AV1 VBR 300 Mb/s 60 fps nominal | layout vr180 dome | 10-bit, sharpen off | frames written 187, dropped 0 (ring full 0, gpu busy 0, encoder stall 0), duplicates 0, over max_fps 38 | variable frame rate (real timestamps) | duration 3.10 s | audio AAC (150240 frames = 3.13 s) | finalize 0x00000000 | st3d+sv3d: off (tag_3d = 0)
  • "About the left / right edges in VR180". I have tested with 88% and 100% and now video is wider at 100%. There is less "data" in SteamVR mode compared to OpenXR mode. OpenXR (in ver. 0.5.0. I haven't checked yet 0.5.2 in OpenXR) looks more immersive, but have overlaped area visible (which is better than just black). Is SteamVR mode not too much cutted left/right edge now? Compare v0.5.0 with 0.5.2. Scene/angles may be different, but you will see area size.

SteamVR mode (0.5.0). About 1970 px wide per eye
https://ibb.co/5XwFX56v

SteamVR mode (0.5.2). About 1760 px wide per eye
https://ibb.co/Lh0mycB7

OpenXR (0.5.0) mode. About 1970 px wide per eye
https://ibb.co/MxQnQkD8

JRDevo · 2026-10-23 13:41 UTC

Hi LazyLazyCoder, thanks for testing 10-bit and sharpen, and for the side-by-side pictures. They made the cause easy to find!

Why the SteamVR VR180 picture is narrower in 0.5.2

This is not a bug in the SteamVR mode. It comes from a new VR180 / VR360 setting in 0.5.1: dome_shared_view = 1 (the default).

  • Each headset eye sees more toward its outer side. On your Quest 3 the left eye sees about 54° to the left but only 40° to the right (the right eye is the mirror image).
  • With dome_shared_view = 1, each eye shows only the part that the other eye also sees. The outer strip (about 14° on each side) is cut off.
  • I added this because of your report in [Bug] SteamVR few bugs #2 about the "crossed eyes": only one eye sees those outer strips, and the other eye sees black or older video there. That is hard on the eyes in a headset.
  • OpenXR games use the same setting, so OpenXR in 0.5.2 will be narrower too. Your OpenXR picture is from 0.5.0, before the setting existed.

If you prefer the wider picture

Set this in config.ini, in the [dome] section:

dome_shared_view = 0

Then each eye shows its full view again, like in 0.5.0, but the outer strips are one-eye only. Which one looks better is a matter of taste, so please tell me what you think.

In the next version the setting is also a check box in the app window: "Both eyes only (shared view)", on the Dome fill row.

Other points

  • Thanks for the log: 0 dropped frames, 10-bit and sharpen 1.00 all look right.
  • Yes, one thread is easier. Let's continue in this issue, and I will close [Bug] SteamVR few bugs #2.
  • "Repair" greyed out and Alyx unticked after the update: thanks, I will look into both.
JRDevo · 2026-10-23 14:36 UTC

LazyLazyCoder v0.5.3 is out: https://github.com/JRDevo/VR-EyeCapture/releases/tag/v0.5.3

It has the new check box from my last comment: app window → Video tab → Stereo 3D → "Both eyes only (shared view)", on the Dome fill row (VR180 / VR360 only). Clear it for the wider 0.5.0 look; leave it ticked for the comfortable view. No need to edit config.ini any more.

The app window also has a new layout with four tabs (Recording, Video, Export, App).

Your tray offers the update itself ("update available"), or use the setup from the link. After the update, open SteamVR games... and click Repair if it asks for it (close Alyx and SteamVR first).

I'd like to hear which one you prefer: shared view on or off!

Activity

  1. reopened this on Oct 23, 2026
  2. LazyLazyCoder commented on Oct 24, 2026

    @LazyLazyCoder
    1. Tested latest 0.5.3 version.
    • Shared View: Working perfect!
    • I reinstalled 0.5.3 over latest 0.5.3 and already ticked Steam game untick byself. Repair button was grayed out. For me - no problem, just give info to verify if working as designed :)

    I carefully tested SteamVR recorded video and compare to live view, because in my experience with VR, many people are highly sensitive to issues like excessive depth or an incorrect IPD (interpupillary distance), which can cause pain or discomfort - often leading to rapid eye fatigue.

    But my eyes are sensitive to see it (mostly for quality, fluid playback etc) and I see some IPD mismatch. I didn't see it in OpenXR, but maybe because of content. Let me explain how to spot. Run Alyx and look at weapon or hand close to your face (~25cm distance). While is comfortable in game, then in recorded video eyes must make a little cross eye to focus on it. I checked with Shared View ticked/unticked and is same. I wrote IPD (my guess), but it can be something else. If you can check it, then will be perfect :)

    Overall, I didn't find anything more important to report. I'll continue today some real work case (not testing) :)

    1. One thing what I found, but I'm not sure if is related with our app, or RTX 5090 limiatation. I try to record game (OpenXR) with OptiScaler with DLSS5 enabled and MSI Afterburner (to show FPS). I saw FPS drop from 60 (limited in game engine) to 55-58 with DLSS5, but recorded video had always 29-31 FPS. But I didn't see FPS drop while I hit record key. Maybe some conflict or because I use older driver (596.21) because of flickering in DMC5 game in DX12 on new drviers. Soon I'll reinstall drivers to latest one (after finish DMC5 recording) and will retest it.

    2. Things what I found as "feature" or "non prio fix":

    • Maybe is only me, but when I record many short clips (like 60-70 clips - I compose full video from them later) then I get video + json file. In many cases I do not need json file and I just delete it. It's possible to make checkbox for it? Not critical
    • When log level if Off then "eye_capture.log" is still created, but empty

    b.r.

  3. JRDevo commented on Oct 24, 2026

    @JRDevo
    OwnerAuthor

    Thanks @LazyLazyCoder! At this point I think 180 and 360 need more work. I’d like the picture to stay in place and follow head movement for as long as possible. Right now I’m not happy with it: the picture doesn’t follow head movement, and even small movements cause stretching and warping.

    I want to spend some time on depth and head movement first. I’ll take your fixes for now, and if I can’t improve it, I’ll release as soon as possible. Just give me some time.

  4. LazyLazyCoder commented on Oct 24, 2026

    @LazyLazyCoder

    Sure. No hurry. For now is best sw for me. I stopped to use OBS + other sw, because this one replaced it :)
    Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions