-
Notifications
You must be signed in to change notification settings - Fork 129
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
VideoEncoder knob for latency/realtime mode #269
Comments
I think in all modes |
I agree. I've updated the opening comment to clarify |
Copying @Djuffin's relevant comment from #240
Those behaviors sgtm. |
I don't think that a desire for "real-time" necessarily indicates that "quality" is not desired. In content-hints, we have hints for "motion", "detail" and "text", with "motion" meaning a preference for framerate, "detail" a preference for resolution, and "text" similar to "detail" but also potentially turning on screen coding tools. Note also the definition of |
Do you know to what extent these features are implemented across codecs under the hood? Particularly outside of the vpx library? My sense from scanning platform encoding APIs is they may not offer this rich set of options. But realtime vs quality seems pretty common. |
Moving discussion from #242 @Djuffin said:
@aboba said
The idea in this issue is that dropping is disallowed when mode = quality. In that mode, bitrate is not a constraint, but a target. We can alternatively break bitrate into bitrateMax (constraint) and bitrate (target), but I also like the proposal as-is. |
Many encoders (different platforms and APIs) allow CBR without frame drops. Sometimes the encoder just can't meet bitrate budget. I don't think that webcodecs need to be different from other APIs here. |
Editors call:
@aboba does like the clarity of having distinct "max" attribute. Avoids confusion previously seen in webrtc. @chcunningham following up w/ RTC implementers to understand how these attributes affect (passthrough?) the encoders or whether they're higher level. |
This comment has been minimized.
This comment has been minimized.
Discussed this with @ilyanikolaevskiy. In his own words:
From this I take away that the knobs we are now proposing are sort of orthogonal to WebRTC's content-hint. It sounds like we can satisfy the requirements above using the scalabilityMode config + some additional knobs for noise and QP. |
Editors call: the knobs proposed here sound good enough to send PRs. I will file separate issues for additional low level knobs shortly (min / max QP, motion vs detail hint, low level buffer dependency specification, etc) |
We've acknowledge the need for this in a few issues, including #241 (comment) and #240. Here's a strawman proposal that ties into #103.
Interface extensions
latencyMode = "realtime" | "quality" (default)
attribute toVideoEncoderConfig
lowLatency = true | false
framerate
(e.g. = 60) toVideoEncoderConfig
.Semantics:
encoderConfig.bitrate
and framerate targetsThe text was updated successfully, but these errors were encountered: