Fixed saving non-common encoder settings - #1770
Merged
Merged
Conversation
aleksandr-voitenko
force-pushed
the
fix-encoder-settings
branch
from
September 8, 2026 20:37
4c1c1ec to
05245d5
Compare
summeroff
approved these changes
Sep 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This is the OSN part of a coordinated fix with Desktop. Desktop passes the complete settings explicitly to
VideoEncoderFactory.createand refreshes saved audio track settings.The simplest way to reproduce the existing issue is to set keyframe interval to some desired value, make a recording and check keyframes in the resulting file. Now, it's always
4.166(a default value).Motivation and Context
Desktop’s Factory API migration left a gap between saved UI settings and encoder creation. Recording forwarded only bitrate and rate control, streaming forwarded a limited subset, and Advanced audio tracks were created with a hardcoded 160 Kbps bitrate.
Settings therefore remained visible in the UI while encoders used defaults or hardcoded values. For example, a requested one-second keyframe interval could produce approximately 4.166-second intervals with x264 at 60 FPS.
The new API reads settings without creating outputs or modifying configuration files. Existing service restrictions, recording quality policies, and
legacySettingsaccessors remain in place.Regression tests inspect real recordings with
ffprobe, checking one- and two-second keyframe intervals and 160/320 Kbps AAC tracks across settings changes. Streaming encoder coverage uses local recordings without transmitting a live stream.How Has This Been Tested?
Manually, Windows only + automated tests
Types of changes