CARVIEW |
Select Language
HTTP/2 200
date: Sat, 11 Oct 2025 21:21:55 GMT
content-type: text/html; charset=utf-8
cache-control: max-age=0, private, must-revalidate
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com github.githubassets.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
link: ; rel=preload; as=fetch; crossorigin=use-credentials
referrer-policy: no-referrer-when-downgrade
server-timing: issue_layout-fragment;desc="issue_layout fragment";dur=237.908703,issue_conversation_content-fragment;desc="issue_conversation_content fragment";dur=614.372242,nginx;desc="NGINX";dur=1.463504,glb;desc="GLB";dur=137.922589
strict-transport-security: max-age=31536000; includeSubdomains; preload
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With, Accept,Accept-Encoding, Accept, X-Requested-With
x-content-type-options: nosniff
x-frame-options: deny
x-voltron-version: aab62e3
x-xss-protection: 0
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=ZqLpTLWnykO8C9Yu2zHNox6S14%2FTLNKBgmfbp4MphykRnzQLZ0UAY8oGj3zvQ%2Fv%2FANHdMmEr2qBEatJUE%2FtUVJkbYbg1IqZMVzAp8sHP91O9L4r2n3eJgkdIIQV98TIJM3mzLPJQw4OzL9mqtd3gT56w3YlmonTTymTr5C%2Fz%2BpOJ3P76eiC5CA1aJOzg7OAlYDQ%2BQ6f%2F4Npbd9X8%2B3cTlkChJhDEN6XIvjKa0KCpEDVf2AlnxIuyLMDbvVKc%2FIrrOda6vNRmxUI3kPUOfA488Q%3D%3D--2y4rDEU9EZFmSqsd--uPQzv8DDuubhWVdFR%2Fd9bw%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.811609361.1760217714; Path=/; Domain=github.com; Expires=Sun, 11 Oct 2026 21:21:54 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Sun, 11 Oct 2026 21:21:54 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: C99A:8CC4A:A2E1C0:D6B7D3:68EACA72
Opus inband FEC and other parameters · Issue #252 · w3c/ortc · GitHub
No one assignedNo typeNo projectsNo milestoneNone yetNo branches or pull requests
Skip to content
Navigation Menu
{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 42
Closed
Description
https://tools.ietf.org/html/draft-ietf-rtcweb-fec-01#ref-I-D.ietf-payload-flexible-fec-scheme
Support for codec-specific FEC mechanisms are typically indicated via
"a=fmtp" parameters. For Opus specifically, this is controlled by
the "useinbandfec=1" parameter, as specified in
[I-D.ietf-payload-rtp-opus]. These parameters are declarative and
can be negotiated separately for either media direction.
https://tools.ietf.org/html/draft-ietf-payload-rtp-opus-08#section-6.1
Has the following properties:
Required parameters:
rate: the RTP timestamp is incremented with a 48000 Hz clock rate
for all modes of Opus and all sampling rates. For data encoded
with sampling rates other than 48000 Hz, the sampling rate has to
be adjusted to 48000 Hz.
Optional parameters:
maxplaybackrate: a hint about the maximum output sampling rate that
the receiver is capable of rendering in Hz. The decoder MUST be
capable of decoding any audio bandwidth but due to hardware
limitations only signals up to the specified sampling rate can be
played back. Sending signals with higher audio bandwidth results
in higher than necessary network usage and encoding complexity, so
an encoder SHOULD NOT encode frequencies above the audio bandwidth
specified by maxplaybackrate. This parameter can take any value
between 8000 and 48000, although commonly the value will match one
of the Opus bandwidths (Table 1). By default, the receiver is
assumed to have no limitations, i.e. 48000.
sprop-maxcapturerate: a hint about the maximum input sampling rate
that the sender is likely to produce. This is not a guarantee
that the sender will never send any higher bandwidth (e.g. it
could send a pre-recorded prompt that uses a higher bandwidth),
but it indicates to the receiver that frequencies above this
maximum can safely be discarded. This parameter is useful to
avoid wasting receiver resources by operating the audio processing
pipeline (e.g. echo cancellation) at a higher rate than necessary.
This parameter can take any value between 8000 and 48000, although
commonly the value will match one of the Opus bandwidths
(Table 1). By default, the sender is assumed to have no
limitations, i.e. 48000.
maxptime: the maximum duration of media represented by a packet
(according to Section 6 of [RFC4566]) that a decoder wants to
receive, in milliseconds rounded up to the next full integer
value. Possible values are 3, 5, 10, 20, 40, 60, or an arbitrary
multiple of an Opus frame size rounded up to the next full integer
value, up to a maximum value of 120, as defined in Section 4. If
no value is specified, the default is 120.
ptime: the preferred duration of media represented by a packet
(according to Section 6 of [RFC4566]) that a decoder wants to
receive, in milliseconds rounded up to the next full integer
value. Possible values are 3, 5, 10, 20, 40, 60, or an arbitrary
multiple of an Opus frame size rounded up to the next full integer
value, up to a maximum value of 120, as defined in Section 4. If
no value is specified, the default is 20.
maxaveragebitrate: specifies the maximum average receive bitrate of
a session in bits per second (b/s). The actual value of the
bitrate can vary, as it is dependent on the characteristics of the
media in a packet. Note that the maximum average bitrate MAY be
modified dynamically during a session. Any positive integer is
allowed, but values outside the range 6000 to 510000 SHOULD be
ignored. If no value is specified, the maximum value specified in
Section 3.1.1 for the corresponding mode of Opus and corresponding
maxplaybackrate is the default.
stereo: specifies whether the decoder prefers receiving stereo or
mono signals. Possible values are 1 and 0 where 1 specifies that
stereo signals are preferred, and 0 specifies that only mono
signals are preferred. Independent of the stereo parameter every
receiver MUST be able to receive and decode stereo signals but
sending stereo signals to a receiver that signaled a preference
for mono signals may result in higher than necessary network
utilization and encoding complexity. If no value is specified,
the default is 0 (mono).
sprop-stereo: specifies whether the sender is likely to produce
stereo audio. Possible values are 1 and 0, where 1 specifies that
stereo signals are likely to be sent, and 0 specifies that the
sender will likely only send mono. This is not a guarantee that
the sender will never send stereo audio (e.g. it could send a pre-
recorded prompt that uses stereo), but it indicates to the
receiver that the received signal can be safely downmixed to mono.
This parameter is useful to avoid wasting receiver resources by
operating the audio processing pipeline (e.g. echo cancellation)
in stereo when not necessary. If no value is specified, the
default is 0 (mono).
cbr: specifies if the decoder prefers the use of a constant bitrate
versus variable bitrate. Possible values are 1 and 0, where 1
specifies constant bitrate and 0 specifies variable bitrate. If
no value is specified, the default is 0 (vbr). When cbr is 1, the
maximum average bitrate can still change, e.g. to adapt to
changing network conditions.
useinbandfec: specifies that the decoder has the capability to take
advantage of the Opus in-band FEC. Possible values are 1 and 0.
Providing 0 when FEC cannot be used on the receiving side is
RECOMMENDED. If no value is specified, useinbandfec is assumed to
be 0. This parameter is only a preference and the receiver MUST
be able to process packets that include FEC information, even if
it means the FEC part is discarded.
usedtx: specifies if the decoder prefers the use of DTX. Possible
values are 1 and 0. If no value is specified, the default is 0.
The ortc spec doesn't contain all the parameters listed so we should review to see what we want to include as part of the specification.
https://ortc.org/wp-content/uploads/2015/10/ortc.html#opus-codec-capabilities*
maxplaybackrate unsigned long A hint about the maximum output sampling rate that the receiver is capable of rendering in Hz.
stereo boolean Specifies whether the decoder prefers receiving stereo (if true) or mono signals (if false).
Metadata
Metadata
Assignees
Type
Projects
Milestone
Relationships
Development
Issue actions
You can’t perform that action at this time.