M63
WebRTC M63 branch (cut at r20237)
WebRTC M63, currently available in Chrome's beta channel and as native libraries for Android and iOS, contains over 15 new features and over 50 bug fixes, enhancements and stability/performance improvements. As with previous releases, we encourage all developers to run versions of Chrome on the Canary, Dev, and Beta channels frequently and quickly report any issues found. Please take a look at this page, for some pointers on how to file a good bug report. The help we have received has been invaluable!
The Chrome release schedule can be found here.
Applying a session description with both “a=fingerprint” (for DTLS) and “a=crypto” (for SDES) will now fail; the offerer must decide on one or the other. Support for SDES itself is not being removed yet. See this announcement for more details.
A workaround for the macOS missing audio issue has landed (webrc:4799) in Chrome and is currently running under an experiment. Details of the issue have been submitted to Apple with the aim of fixing the underlying problems. The current workaround only applies to macOS 10.10 and newer.
As of M63, webrtc::CreatePeerConnectionFactory() accepts audio encoder and decoder factory arguments; WebRTC will use the supplied factories when creating audio encoder and decoder objects. The point is that the factories determine the set of supported codecs, so it is now possible for applications to support codecs that aren’t included in the WebRTC code base, and to omit support for codecs that are included. See this announcement for details.
webrtc::CreateModularPeerConnectionFactory() is available and it can be used to build WebRTC with DataChannel support only. It accepts MediaEngineInterface, CallFactoryInterface and RtcEventLogFactoryInterface as arguments. If the application knows it won't use certain modules, it can pass in null pointers for specific modules and omit the corresponding modules from its build. See an example of usage in webrtc:7613.
Most of the legacy VoiceEngine interfaces have been removed: VoENetwork, VoERTP_RTCP, VoECodec and VoEFile, as well as unused methods from VoEBase, and the VoiceEngineObserver callback interface. As a result, the internal classes voe::OutputMixer and AudioConferenceMixer were no longer required so they have been removed too.
Platform | Issue | Description | Component |
Native | Removed AudioDeviceObserver and make ADM not inherit from the Module interface. | Audio |
Type | Issue | Description | Component |
Feature | Add post processing interface to audio processing module | Audio | |
Feature | Implement RTCMediaStreamTrackStats.concealmentEvents. | Audio | |
Feature | Implement RTCMediaStreamTrackStats.jitterBufferDelay. | Audio | |
Feature | Better slicing for calls for analyzing the benefits of audio network adaptor. | Audio | |
Feature | AEC3 buffering issues due to clockdrift and audio pipeline glitches should be more visible | Audio | |
Feature | Unify logging mechanisms. | Audio, Video | |
Feature | Build WebRTC with DataChannel only | Build | |
Feature | Allow external implementations of TaskQueues | Internals | |
Feature | Slice receive stats on simulcast id and ALR experiment group | Stats, Video | |
Feature | Report received content_type in old getstats from recieve statstics proxy. | Stats, Video | |
Feature | Implement new SentToInputFpsRatioPercent send-side UMA metric. | Stats, Video | |
Feature | It should be possible to change the complexity of the frames generated by the square generator. | Video | |
Feature | Refactor FrameBuffer2 to use unwrapped picture ids. | Video | |
Bug | Switching to conservative mode after timeout mode causes excessive ducking | Audio | |
Bug | The size of the allowed jitter in EchoCanceller3 reduces the glitch recovery time | Audio | |
Bug | AEC3 leaks echoes for speech with strong high-frequency content initially in the calls | Audio | |
Bug | The AEC3 transparency to nearend is sometimes low | Audio | |
Bug | On systems with a known echo path delay, the AEC3 would benefit from a specified initial delay value | Audio | |
Bug | Suboptimal NLP gains for the nonlinear echo power estimate | Audio | |
Bug | The amount of echo being masked by the nearend signal is sometimes underestimated. | Audio | |
Bug | The AEC3 NLP gain is applied in a too abrupt manner | Audio | |
Bug | The transparency in AEC3 is sometimes not ideal | Audio | |
Bug | AEC3 fails to detect the echo path delay in reverberant environments with moderate echo return loss | Audio | |
Bug | AEC3 sometimes fails to detect a valid linear filter estimate in reverberant environments | Audio | |
Bug | Too much echo suppression initially in the calls for AEC3 | Audio | |
Bug | Chrome extension desktopCapture for tabs regression | Blink>GetUserMedia | |
Bug | Suspend/resume can cause MediaStream track onended event to be fired. | Blink>GetUserMedia>Mic, Blink>WebRTC>Audio | |
Bug | Switching to conservative mode after timeout mode causes excessive ducking | Blink>WebRTC>Audio | |
Bug | The size of the allowed jitter in EchoCanceller3 reduces the glitch recovery time | Blink>WebRTC>Audio | |
Bug | The echo canceller3 alignment functionality may get stuck in a noncausal state during capture data loss | Blink>WebRTC>Audio | |
Bug | Video sometimes freezes | Network>RTP | |
Bug | AudioEncoderOpus - invalid read | Audio | |
Bug | WebRTC generates often this error "AcmReceiver::SetExtraDelay" failed: delay_ms=10000 | Audio | |
Bug | Expand rate may be wrong in some cases. | Audio | |
Bug | WebRTC Mac app enable audio fail | Audio | |
Bug | On some platforms, the allowed API call jitter in AEC3 is too low, resulting in excessive resets | Audio | |
Bug | Improve reading SkImage pixels in canvas captureStream() | Blink>Canvas, Blink>MediaStream> CaptureFromElement | |
Bug | WebRTC screen sharing issue | Blink>GetUserMedia> Desktop | |
Bug | RTCPeerConnection.getRemoteStreams() should return all streams of all receivers | Blink>WebRTC> PeerConnection | |
Bug | RTCPeerConnection should not rely on remote stream added/remove events | Blink>WebRTC> PeerConnection | |
Bug | Certain functions in modules/pacing and modules/congestion_controller should be callable by multiple threads. | Cleanup | |
Bug | Window border cannot be captured when window is not in foreground on Windows 8+ | DesktopCapture | |
Bug | Potential race condition in AudioSendStream constructor | Internals | |
Bug | Config events lost while logging to file if the file is full | Internals | |
Bug | RtcEventLogHelperThread::StartLogFile() can skip events | Internals | |
Bug | Migrate RtcEventLog to use a task-queue rather than a helper thread | Internals | |
Bug | TaskQueue::PostTask() overloading confused when posting subclass of PostedTask | Internals | |
Bug | OnRemoveTrack | Internals, PeerConnection | |
Bug | WebRTC send NACK request at constant period 100ms if remote no RTCP ReceiveReport send | Network>RTP | |
Bug | RtpPacketizerVp8 causes hard to spot issues for incorrect input | Network>RTP, Video | |
Bug | Existing RTX codec added to the end of the list when APT codec's payload type was remapped | PeerConnection | |
Bug | Stop supporting fallback from DTLS to SDES. | PeerConnection | |
Bug | The concealedSamples counter should not go down. | Stats | |
Bug | Fix temporal layer flags used for vp8 with 4 layers | Video | |
Bug | x-google-min-bitrate doesn't seem to work with H264 | Video | |
Bug | Remote Java MediaStream isn't updated when tracks are added/removed via SRD | PeerConnection |
Type | Issue | Description | Component |
Feature | Add a scoped smart pointer type for CoreFoundation objects | Mobile (iOS, Mac) | |
Feature | Android: Support RGB texture frames | Mobile (Android) | |
Feature | Add support in Android GlShader for uploads of vertex arrays with non-zero stride. | Blink>WebRTC (Android) | |
Bug | Win7 Chrome can't decode H264 stream from Android Chrome | Blink>WebRTC>Video (Android) | |
Bug | Memory leak in RTCVideoEncoderH264 | Mobile (iOS) | |
Bug | Memory leak in RTCMTLNV12Renderer | Mobile (iOS0 | |
Bug | Byte buffer objects returned by getDataY/U/V are shared between threads unsafely. | Mobile (Android) | |
Bug | Android AAR generation is broken by Java 8 | Mobile (Android) | |
Bug | iOS video decoding fails after switching to background and coming back to active | Mobile, Video (iOS) | |
Bug | Hangs in VTDecompressionSessionInvalidate in iOS 11. | Mobile, Video (iOS) | |
Bug | Continual gathering logic isn't regathering candidate when "getifaddrs" thinks interface is active but ConnectivityManager doesn't | Network>ICE (Android) |