Comments (6)
we must have something to offer
We don't. If we have nothing to offer this is similar to "we have nothing to answer" which is described as
None of the offered media formats are supported and, if applicable, allowed by codec preferences.
in https://rtcweb-wg.github.io/jsep/#rfc.section.5.3.1
I think this case is rare enough that going for 3 is a pragmatic solution. And yes, I have a code change for that already that is quite small
from webrtc-pc.
@henbos You may be taking JSEP Section 4.2.6 too literally. It is correct in saying that sCP is not for selecting what is sent. That is true regardless of direction
. However, saying that sCP only applies to codecs that can be received, regardless of direction
, has to contend with RFC 3264 Section 5.1:
"For a sendonly stream, the offer SHOULD indicate those formats the offerer is willing to send for this stream. For a recvonly stream, the offer SHOULD indicate those formats the offerer is willing to receive for this stream. For a sendrecv stream, the offer SHOULD indicate those codecs that the offerer is willing to send and receive with."
Since this is a SHOULD, there is some wiggle room for sendrecv streams. For example, a sendrecv m-line with preference {H.265, H.264} could be allowed if H.265 can be received but not sent. This would allow negotiation to succeed between a receive-only H.265 Offerer and an Answerer who can send and receive both H.265 and H.264, using only a single sendrecv m-line, as long as the Answerer included both H.265 and H.264 in its Answer. Since non-WebRTC endpoints may not support sendonly and recvonly m-lines, this approach has interoperability advantages.
However, concluding that sCP with a sendonly m-line is only about receiving preferences seems like a step too far. Instead I'd suggest that a sendonly transceiver can only offer codecs/profiles that can be sent (send-only or send/recv). In a situation where the browser can send at a different profile/levels than it can receive, only the send profiles can be included when direction
= sendonly
.
Similarly, a recvonly transceiver can only offer codecs/profiles that can be received (recv-only or send/recv). In a situation where the browser can send at a different profile/levels than it can receive, only the receive profiles are included. This is consistent with JSEP Section 4.2.6.
from webrtc-pc.
Related: aboba/hevc-webrtc#22
from webrtc-pc.
This issue was discussed in WebRTC February 2024 meeting β 20 February 2024 (setCodecPreferences to deal with both send and recv codecs #2939)
from webrtc-pc.
@henbos what are next steps here?
from webrtc-pc.
@jan-ivar H.265 is getting close to being enabled behind a flag, so in the near future we will be able to see how receive-only codecs behave, and what the problems are. At that point we can present the issue to the WG in light of the behavior we see. IMHO it would be desirable to converge on recommended changes prior to enabling H.265 by default.
from webrtc-pc.
Related Issues (20)
- Update the accessibility section 14 to include RFC 8865 for real-time text in WebRTC data channel HOT 43
- Clarify a=rtpmap codec mappings should be offered even if the codec is not a preferred one HOT 20
- Existing setCodecPreferences NOTE is wrong and should be deleted HOT 8
- Specify what should happen if filtering [[PreferredCodecs]]Β on direction results in empty list HOT 7
- setCodecPreferences, sendonly codecs and dummy codecs HOT 21
- If a preferred codec is filtered out, does it still get assigned a PT? HOT 16
- RTCSessionDescriptionInit vs "local" RTCLocalSessionDescriptionInit HOT 2
- Review mute/unmute/ended and constraints on RTCRtpReceiver's track. HOT 2
- Alternative storage for RTCCertificates needed HOT 6
- simple webrtc connection and manual signaling (QR, JSON, Carrier pigeon) - consent time out prevents connection HOT 3
- RTCIceCandidate's relayProtocol and url members can be null but not absent
- Missing tests for candidate amendments
- Incorporate jitterBufferTarget
- Confusion over duplicates in setCodecPreferences? Why allow them? HOT 10
- receiver.getParameters().codecs is broken (regression) HOT 4
- setCodecPreferences should take sequence<RTCRtpCodec>
- setCodecPreferences should trigger negotiationneeded HOT 3
- Implementations only update getParameters().codecs when negotiation has finished HOT 3
- Comparison rules for RTCRtpCodec needs clarification on how mimeType is compared HOT 10
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from webrtc-pc.