M58
WebRTC M58 branch (cut at r16937)
WebRTC M58, currently available in Chrome's beta channel and as native libraries for Android and iOS, contains over 20 new features and over 60 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.
A regression has been fixed that was introduced M57 and affects in how the "b=AS" SDP attribute is handled. This SDP attribute can be used to limit the maximum total bandwidth used by a media stream, and it's should be possible to set different values for different m sections. For details and a workaround for M57, see this PSA.
The promise-based getStats is released which (unlike the callback-based getStats) returns stats that follow the spec (Statistics Model, Identifiers for WebRTC's Statistics API). Most but not all stats are supported. The callback-based getStats is still available but we aim to deprecate it in a future release.
Starting from version 1.2-alpha, Opus supports direct encoding of audio frames with a duration up to 120 ms. Chromium does not include this Opus version in its third party dependency yet, but WebRTC has built up infrastructure to support 120ms encoding. Longer frames reduce transport overhead on low capacity networks. To utilize the upcoming Opus 120ms frame encoding, audio network adaptor has also been updated to allow frame length to adapt to 120ms.
The setConfiguration method allows an application to modify the RTCConfiguration of an RTCPeerConnection. Specifically, it allows changes to the ICE servers and ICE transport policy, e.g., to specify new TURN credentials when the existing credentials expire. Previously, there was no workaround for this scenario aside from a full teardown of the connection. Another use case is changing the ICE transport policy depending on the phase of a call. For example, a call may begin with only relay connections (either to speed up call setup or to protect the user's privacy), then later switch to the "all" policy. Note that the iceCandidatePoolSize member of RTCConfiguration is still unsupported, but is planned to be implemented in M59.
WebRTC can now make use of proxies that require explicit credentials, as long as the user has authenticated against said proxy at least once before initiating a WebRTC connection. Proxies that use Single-Sign-On or that do not require authentication continue to work as expected.
There now exists a script for generating WebRTC Android library (.aar). The script exists in tools-webrtc/android/build_aar.py and can be used to generate .aar-file that can be included in an Android Studio project that uses WebRTC. More information on how to use the script can be found at the top of the script.
There are existing VP9 HW decoder implementations in Chrome, i.e. DXVA based in Windows and V4L2/VAAPI based in Chrome OS. It is now possible to use these as external video accelerators in WebRTC calls where VP9 is used.
The video jitter buffer has been rewritten from scratch. The new jitter buffer has been implemented as five classes (PacketBuffer, NackModule, FrameObject, RtpFrameReferenceFinder, FrameBuffer). The benefits of the new jitter buffer are lower code complexity resulting in easier maintenance and tuning. It opens up the possibility to implement transports other than RTP. The new design will enable the reduction of memcpys, but this requires further work. There should be no significant difference in behavior between the current and the new video jitter buffer.
A debug recording of audio output is now generated when checking “Enable diagnostic audio recordings” in chrome://webrtc-internals. File recording of playout audio happens in the browser process close to the OS/sound system.
Platform | Issue | Description | Component |
Chrome | Remove support for manual reference counting in ObjC code | Cleanup | |
Chrome | Removed Wave-based audio capture implementation on Windows | Audio | |
Chrome | Remove outdated openssl defines. | Cleanup, Network | |
Chrome | Delete VideoReceiveStream::Config::pre_render_callback | Video | |
Chrome | Remove shared global SSRC database | Video | |
Native | Remove Wave legacy audio capture implementation on Windows | Audio | |
Native | Remove VideoRendererGui | Mobile, Video | |
Native | Delete header file webrtc/base/common.h | Internal | |
Native | Removed VoEExternalMedia interface. | Audio | |
Native | Removed VoEVideoSync interface. | Audio | |
Native | Removed VoEAudioProcessing interface. | Audio | |
Native | Removed unused and untested methods from VoERTP_RTCP interface. | Audio | |
Native | Removed base/linux.cc/.h and linuxfdwalk.c/.h. | Internal | |
Native | Removed base/dbus.cc/.h. | Internal |
Type | Issue | Description | Component |
Feature | Add support for 120ms frames in the audio network adaptor. | Audio | |
Feature | Adding support of Opus 120ms direct encoding in WebRTC. | Audio | |
Feature | Adding network adaptation to audio encoder. | Audio | |
Feature | Logging audio network adaptor decisions in the event log | Audio | |
Feature | Add tool for visualisation of the Audio network adaptor decisions | Audio | |
Feature | Frame length controller should not switch to shorter frame lengths when it will cause a overuse. | Audio | |
Feature | Optionally disable APM limiter in AudioMixer. | Audio | |
Feature | Use FallbackDesktopCapturerWrapper for ScreenCapturerWinMagnifier | DesktopCapture | |
Feature | Values stored in rtc::Optional does not print properly in tests | Internals | |
Feature | Basic command line tool to print packet information from an RTC event log | Internals | |
Feature | Implement support for setting constraints-related properties on MediaStreamTrack | SpecConformance | |
Feature | video_replay: output RTP header contents when delivery fails | Video | |
Feature | Adding transport feedback based packet loss estimation. | Video | |
Feature | Jitter Buffer Rewrite. | Video | |
Feature | Log delay-based bandwidth estimate | Video | |
Feature | Add probe logging to RtcEventLog (and UMA?). | Video | |
Feature | Launch bug for promise-based RTCPeerConnection.getStats | Blink>WebRTC | |
Feature | Add debug recording to file of speaker output | Blink>WebRTC>Audio | |
Feature | Use DirectX for faster screen capture on Windows | Blink>GetUserMedia>Desktop | |
Feature | Enable VP9 support in WebRTC HW encoder and decoders | Internals>Media>Codecs | |
Feature | PeerConnection.setConfiguration | Blink>WebRTC>Network | |
Feature | Use assembler for OpenH264 encoding on Windows and Linux | Blink>WebRTC>Video | |
Bugfix | Make Opus decoder go to CNG mode for 2-byte payloads | Audio | |
Bugfix | Transmit correct number of bytes returned by the Opus encoder in DTX mode | Audio | |
Bugfix | Allow residual echo detector to be enabled/disabled using AudioOptions | Audio | |
Bugfix | AudioEncoderOpus can set bitrate that no audio can be encoded. | Audio | |
Bugfix | Stop sending audio packets when the connection becomes unwritable | Audio | |
Bugfix | disable APM clobbering for WebKit build | Audio | |
Bugfix | StartupShutdownWithExternalADM sometimes enters a busy loop | Audio | |
Bugfix | Don't recreate audio receive streams if they were previously unsignaled | Audio, PeerConnection | |
Bugfix | Enable bitrate probing for audio streams. | Audio, Video | |
Bugfix | GetStaticInstance subject to race | Audio, Video | |
Bugfix | "stereo" parameter isn't handled correctly for Opus decoder | Audio | |
Bugfix | FakeAudioDeviceModule runs a busy loop by default. | Audio | |
Bugfix | Potential use are free in h264 packetizer | Internals | |
Bugfix | current webrtc's NO_RETURN definition is conflicting with WebKit one | Internals | |
Bugfix | Add support for multimedia timers to TaskQueue | Internals | |
Bugfix | Add support for priorities to TaskQueue | Internals | |
Bugfix | Allow applications to control the DTLS timeout | Network | |
Bugfix | Allow STUN RTTs up to 60 seconds | Network | |
Bugfix | Change UpdateIce to SetConfiguration in the JS PeerConnection API | PeerConnection | |
Bugfix | Having a=crypto in an SDP offer causes exception in Canary | PeerConnection | |
Bugfix | Add better comments to interfaces in api/ subdirectory | PeerConnection | |
Bugfix | Data races in AsyncInvoker destructor [linux_tsan2] | PeerConnection | |
Bugfix | Expose DtmSender from RtpSender (in C++, Java interfaces) | PeerConnection | |
Bugfix | Should VideoCapturerTrackSource increase its reference count when sending message on the thread? | PeerConnection | |
Bugfix | peerconnection_client tool not working | PeerConnection, SampleApps, Video | |
Bugfix | webrtc stops playing video when SSRC of incoming RTP stream has changed | PeerConnection, Video | |
Bugfix | RTX payload types are not updated in VideoReceiveStream when WebRtcVideoChannel2::SetRecvParameters is called. | Video | |
Bugfix | FlexfecReceiveStreams are leaked when WebRtcVideoChannel2 is destroyed | Video | |
Bugfix | Video scaling stuck at low resolution | Video | |
Bugfix | Busy loop in PacedSender+BitrateProber | Video | |
Bugfix | Busy loop in VideoReceiveStream | Video | |
Bugfix | Video streams can get stuck in suspended state | Video | |
Bugfix | Log which delay estimator type is picked by BWE. | Video | |
Bugfix | NackModule will enter a busy loop when running_ == false | Video | |
Bugfix | AV sync issue in WebRTC in 20% of streams | Video | |
Bugfix | Video call no longer starts with scaled resolution on low initial bandwidth. | Video | |
Bugfix | protection bitrate should include overhead as well | Video | |
Bugfix | webrtcvideoencoderfactory grows codec list every time codecs/supported_codecs is called | Video | |
Bugfix | Video decoder software fallback not reinitialized after ::Release() | Video | |
Bugfix | Improve computational performance of bandwidth estimator | Video | |
Bugfix | Add new simulations to test BWE at low bitrates | Video | |
Bugfix | |event_| in RembWithSendSideBwe is never set | Video | |
Bugfix | FakeNetworkPipe can cause a busy loop in PlatformThread | Video | |
Bugfix | Picker list is too small when sharing tab only | Blink>GetUserMedia>Desktop | |
Bugfix | DirectX screen capturer doesn't handle screen size changes properly | Blink>GetUserMedia>Desktop | |
Bugfix | Very old frame emitted from tab capture after resume() | Blink>GetUserMedia>Tab | |
Bugfix | Media Remoting should never admit initialization failed | Blink>GetUserMedia>Tab | |
Bugfix | Cannot select camera in Chrome Capture Settings | Blink>GetUserMedia>Webcam | |
Bugfix | webrtc::Ramp in webrtc/modules/audio_mixer/audio_frame_manipulator.cc is slow | Blink>WebRTC, Blink>WebRTC>Audio | |
Bugfix | PowerSaveBlock activated even though there are no active PeerConnections | Blink>WebRTC | |
Bugfix | Move AudioDebugFileWriter from content/ to media/ | Blink>WebRTC>Audio | |
Bugfix | Integer-overflow in webrtc::TimeStretch::SpeechDetection | Blink>WebRTC>Audio | |
Bugfix | WebRTC data channel responds with old sctp draft on new sctp offer format | Blink>WebRTC>Network | |
Bugfix | WebRTC cannot connect to TURN servers through HTTP proxies that require auth | Blink>WebRTC>Network | |
Bugfix | Black boxes around cropped videos | Blink>GetUserMedia>Desktop |
Type | Issue | Description | Component |
Feature | Android AppRTCMobile: Swap between local and remote feed on the fullscreen. | Mobile (Android, iOS) | |
Feature | Script to generate AAR-files for Android Studio. | Mobile (Android) | |
Feature | Support new peerconnection certificate policy API in ObjC | Mobile (iOS), PeerConnection (Mac) | |
Feature | AppRTCMobile - Capture from file instead of camera and save rendering to file | SampleApps (Android) | |
Feature | Remove unnecessary thread in MediaCodecVideoEncoder on Android | Video (Android) | |
Bugfix | Consolidate helpers_ios into webrtc/base/objc | Audio (iOS) | |
Bugfix | Apple Non-Public API usage | Audio (iOS) | |
Bugfix | PlatformThread on posix has a potential for a costly busy loop | Internals | |
Bugfix | Handle multiple H264 codecs in SDP when reordering the codec list priority | Mobile (Android, iOS) | |
Bugfix | AppRTCMobile not working on Galaxy S3 mini running Android 4.2.2 | Mobile (Android) | |
Bugfix | Camera1Session: Fatal error: Camera is being used after Camera.release() was called | Mobile (Android) | |
Bugfix | Android log spam in loopback call: Assuming benign blocking error : [0x0000000e] Bad address | Mobile (Android), Network | |
Bugfix | Allow applications to control ICE timers from RTCConfiguration | Mobile, PeerConnection | |
Bugfix | Check failed: 0 == slice_height (0 vs. 1) | Mobile (Android), Video | |
Bugfix | SecRandomCopyBytes does not build using Xcode 8 on iOS | SampleApps (iOS) | |
Bugfix | MediaCodec decoder has trouble with low resolutions | Video (Android) | |
Bugfix | Camera2Session calls onCameraError instead of onCameraDisconnected if the session gets disconnected during startup | Video (Android) | |
Bugfix | webrtc/sdk/objc/Framework/Headers/WebRTC/WebRTC.h doesn't compile on macOS | Video (iOS) |
M58
RegardsAnatoli
--
---
You received this message because you are subscribed to the Google Groups "discuss-webrtc" group.
To unsubscribe from this group and stop receiving emails from it, send an email to discuss-webrtc+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/discuss-webrtc/958b1d75-50bd-4fed-86a6-548c5faf757b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to discuss-webrt...@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to discuss-webrtc+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/discuss-webrtc/c8ccadc8-c1a0-40d3-9d05-bf933cc5fc41%40googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to discuss-webrt...@googlegroups.com.