Interop Notes

Firefox Nightly (as of 1/30/13) and Chrome 25 and later are interoperable, but currently require a small degree of adaptation on the part of the calling site.

API differences

Firefox and Chrome both prefix their interfaces and are likely to continue to do so until the standard is more finalized. The
following table shows the relevant names:

W3C Standard           Chrome                   Firefox
--------------------------------------------------------------
getUserMedia           webkitGetUserMedia       mozGetUserMedia
RTCPeerConnection      webkitRTCPeerConnection  mozRTCPeerConnection
RTCSessionDescription  RTCSessionDescription    mozRTCSessionDescription
RTCIceCandidate        RTCIceCandidate          mozRTCIceCandidate

Constraints / configurations issues.

Chrome does not yet do DTLS-SRTP by default whereas Firefox only does DTLS-SRTP. In order to get interop, you must supply Chrome with a PC constructor constraint to enable DTLS:

   { 'optional': [{'DtlsSrtpKeyAgreement': 'true'}]}


Finally, Firefox offers a data channel on every offer by default (this is a stopgap till the data channel APIs are complete). Chrome mishandles the data channel m-line. In order to suppress the Firefox data channel offer, you need to supply a mandatory constraint to Firefox on CreateOffer. E.g.,

  {'mandatory': {'MozDontOfferDataChannel':true}}

All of these issues are expected to be fixed in the near future.

Interop with AppRTC

AppRTC (https://apprtc.webrtc.org) already takes care of all of the above tasks.

In addition, AppRTC is written using a polyfill which takes care of all the differences listed under "API DIFFERENCES" above.
That polyfill can be found in the apprtc Google code repository: