Skip to content

Update to m137 #173

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 50 commits into
base: m137_release
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 44 commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
89e26b7
[m125] webrtc stats: fix video remote-outbound-rtp timestamp
fippo Apr 17, 2024
8505a98
Revert "Ignore allocated bitrate during initial exponential BWE."
perkj Apr 16, 2024
46226b5
Update to m125. (#119)
cloudwebrtc Jun 12, 2024
7e8c15c
Fix missing RTC_OBJC_TYPE macros
hiroshihorie Jun 14, 2024
c600b00
Fix missing headers and Metal linking
hiroshihorie Jun 14, 2024
7534c15
Fix Mac Catalyst `RTCCameraVideoCapturer` rotation (#126)
hiroshihorie Jun 20, 2024
432a28b
Fix set frame transformer (#125)
hiroshihorie Jun 20, 2024
a5b6625
Fix webrtc_voice_engine not notifying mute change (#128)
davidliu Jul 9, 2024
7ddfc43
android: Allow for skipping checking the audio playstate if needed (#…
davidliu Jul 9, 2024
0ef336a
Allow to pass in capture session to RTCCameraVideoCapturer (#132)
hiroshihorie Jul 16, 2024
5778782
Fix NetworkMonitor race condition when dispatching native observers (…
davidliu Jul 18, 2024
6bb47f5
Support for Vision Pro (#131)
cloudwebrtc Aug 12, 2024
c852b0e
Multicam support (#137)
hiroshihorie Aug 20, 2024
158cde8
tvOS support (#139)
hiroshihorie Aug 22, 2024
14db92e
Add isDisposed to MediaStreamTrack (#140)
davidliu Sep 2, 2024
cdc3bba
chore: handle invalid cipher from key size. (#142)
cloudwebrtc Sep 14, 2024
3c17c96
Allow software AEC for Simulator (#143)
hiroshihorie Sep 23, 2024
7662c43
Fix AudioRenderer crash & expose AVAudioPCMBuffer (#144)
hiroshihorie Sep 23, 2024
d84b36e
fix: Fix bug for bypass voice processing. (#147)
cloudwebrtc Oct 4, 2024
0ae5688
chore: remove aes cbc for framecryptor. (#145)
cloudwebrtc Oct 7, 2024
c38ce7f
Change audio renderer output format (#149)
hiroshihorie Oct 19, 2024
cd6792e
Fixed issue with missing network interfaces on iOS (#151)
hiroshihorie Oct 19, 2024
543121b
Custom audio input for Android (#154)
davidliu Oct 31, 2024
b99fd2c
Use `rtc::ToString` instead of `std::to_string` in `SocketAddress::Po…
mgsloan Dec 3, 2024
f5243e3
Fix deadlock when creating a frame cryptor on iOS (#157)
davidliu Jan 16, 2025
844bafa
Expose apm config (#163)
hiroshihorie Jan 24, 2025
c4b376a
Android audio prewarm (#164)
davidliu Mar 17, 2025
1d5d3b8
Metal renderer scale patch (#165)
hiroshihorie Mar 19, 2025
7ec4c03
fix typo in framecryptor. (#167)
cloudwebrtc Mar 24, 2025
96cfb37
Prefix enums with `RTC_OBJC_TYPE` macro (#171)
hiroshihorie May 30, 2025
ed96590
Bump version for boringssl to fix compiler error. (#172)
cloudwebrtc Jun 3, 2025
2bb6173
Merge branch 'm125_release' into blaze/m137-patching
pblazej Jun 13, 2025
c6c6561
gn: bypass problematic visionOS check and privacy info
pblazej Jun 13, 2025
054ae1c
iOS: fix audio init flags
pblazej Jun 13, 2025
ff66124
tvOS, xrOS: update build repo
pblazej Jun 16, 2025
f571d7e
Apple: build script
pblazej Jun 16, 2025
c73d33f
Apple: update build repo
pblazej Jun 16, 2025
af50180
Revert "gn: bypass problematic visionOS check and privacy info"
pblazej Jun 16, 2025
3ff8a8c
Apple: remove duplicate (?) privacy file
pblazej Jun 16, 2025
53a190f
Apple: add missing iOS checks
pblazej Jun 16, 2025
509ebe4
Apple: parametrize script
pblazej Jun 16, 2025
9c77146
CR: Revert some namespaces
pblazej Jun 18, 2025
0dc6023
ObjC: Fix init warnings
pblazej Jun 18, 2025
a3ccf16
xrOS: bump target
pblazej Jun 18, 2025
8c9a349
Android: silence deprecation
pblazej Jun 20, 2025
c0f0c92
Android: fix optional
pblazej Jun 20, 2025
0c0d1e8
Android: fix more build errors
pblazej Jun 20, 2025
d49a6e1
Android: fix imports
pblazej Jun 20, 2025
93ac5ee
Android: fix jni
pblazej Jun 20, 2025
123975a
Android: fix ordinal warning
pblazej Jun 23, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -73,3 +73,9 @@
/xcodebuild
/.vscode
!webrtc/*
/tmp.patch
/out-release
/out-debug
/node_modules
/libwebrtc
/args.txt
2 changes: 1 addition & 1 deletion DEPS
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ deps = {
'src/base':
'https://chromium.googlesource.com/chromium/src/base@86c814633cf284bc8057a539bc722e2a672afe2f',
'src/build':
'https://chromium.googlesource.com/chromium/src/build@88030b320338e0706b6b93336c4b35e6bbaf467e',
'https://github.com/webrtc-sdk/build@9af2ddd8e5ad6278165cadfa554bea6f25081dd2',
'src/buildtools':
'https://chromium.googlesource.com/chromium/src/buildtools@0f32cb9025766951122d4ed19aba87a94ded3f43',
# Gradle 6.6.1. Used for testing Android Studio project generation for WebRTC.
Expand Down
26 changes: 26 additions & 0 deletions NOTICE
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
###################################################################################

The following modifications follow Apache License 2.0 from shiguredo.

https://github.com/webrtc-sdk/webrtc/commit/dfec53e93a0a1cb93f444caf50f844ec0068c7b7
https://github.com/webrtc-sdk/webrtc/commit/403b4678543c5d4ac77bd1ea5753c02637b3bb89
https://github.com/webrtc-sdk/webrtc/commit/77d5d685a90fb4bded17835ae72ec6671b26d696

Apache License 2.0

Copyright 2019-2021, Wandbox LLC (Original Author)
Copyright 2019-2021, Shiguredo Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

#####################################################################################
63 changes: 39 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,47 @@
**WebRTC is a free, open software project** that provides browsers and mobile
applications with Real-Time Communications (RTC) capabilities via simple APIs.
The WebRTC components have been optimized to best serve this purpose.
# WebRTC-SDK

**Our mission:** To enable rich, high-quality RTC applications to be
developed for the browser, mobile platforms, and IoT devices, and allow them
all to communicate via a common set of protocols.
This repository contains a fork of WebRTC from Google with various improvements.

The WebRTC initiative is a project supported by Google, Mozilla and Opera,
amongst others.
## Main changes

### Development
### All

See [here][native-dev] for instructions on how to get started
developing with the native code.
- Dynamically acquire decoder to mitigate decoder limitations [#25](https://github.com/webrtc-sdk/webrtc/pull/25)
- Support for video simulcast with hardware & software encoders [patch](https://github.com/webrtc-sdk/webrtc/commit/ee030264e2274a2c90548a99b448782049e48fb4)
- Frame cryptor support (for end-to-end encryption) [patch](https://github.com/webrtc-sdk/webrtc/commit/3a2c008529a15fecde5f979a6ebb75c05463d45e)

[Authoritative list](native-api.md) of directories that contain the
native API header files.
### Android

### More info
- WrappedVideoDecoderFactory [#74](https://github.com/webrtc-sdk/webrtc/pull/74)

* Official web site: http://www.webrtc.org
* Master source code repo: https://webrtc.googlesource.com/src
* Samples and reference apps: https://github.com/webrtc
* Mailing list: http://groups.google.com/group/discuss-webrtc
* Continuous build: https://ci.chromium.org/p/webrtc/g/ci/console
* [Coding style guide](g3doc/style-guide.md)
* [Code of conduct](CODE_OF_CONDUCT.md)
* [Reporting bugs](docs/bug-reporting.md)
* [Documentation](g3doc/sitemap.md)
### iOS / Mac

[native-dev]: https://webrtc.googlesource.com/src/+/main/docs/native-code/
- Sane audio handling [patch](https://github.com/webrtc-sdk/webrtc/commit/272127d457ab48e36241e82549870405864851f6)
- Do not acquire microphone/permissions unless actively publishing audio
- Abililty to bypass voice processing on iOS
- Remove hardcoded limitation of outputting only to right speaker on MacBook Pro
- Desktop capture for Mac [patch](https://github.com/webrtc-sdk/webrtc/commit/8e832d1163644ab504412c9b8f3ba8510d9890d6)

### Windows

- Fixed unable to acquire Mic when built-in AEC is enabled [#29](https://github.com/webrtc-sdk/webrtc/pull/29)

## LICENSE

- [Google WebRTC](https://chromium.googlesource.com/external/webrtc.git), is licensed under [BSD license](/LICENSE).

- Contains patches from [shiguredo-webrtc-build](https://github.com/shiguredo-webrtc-build), licensed under [Apache 2.0](/NOTICE).

- Contains changes from LiveKit, licensed under Apache 2.0.

## Who is using this project

- [flutter-webrtc](https://github.com/flutter-webrtc/flutter-webrtc)

- [LiveKit](https://github.com/livekit)

- [Membrane Framework](https://github.com/membraneframework/membrane_rtc_engine)

- [Louper](https://louper.io)

Are you using WebRTC SDK in your framework or app? Feel free to open a PR and add yourself!
1 change: 1 addition & 0 deletions api/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -382,6 +382,7 @@ rtc_library("libjingle_peerconnection_api") {
"video:encoded_image",
"video:video_bitrate_allocator_factory",
"video:video_frame",
"video:yuv_helper",
"video:video_rtp_headers",
"video_codecs:video_codecs_api",
"//third_party/abseil-cpp/absl/algorithm:container",
Expand Down
17 changes: 15 additions & 2 deletions api/audio/audio_device.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,15 @@ namespace webrtc {

class AudioDeviceModuleForTest;

// Sink for callbacks related to a audio device.
class AudioDeviceSink {
public:
virtual ~AudioDeviceSink() = default;

// input/output devices updated or default device changed
virtual void OnDevicesUpdated() = 0;
};

class AudioDeviceModule : public webrtc::RefCountInterface {
public:
enum AudioLayer {
Expand Down Expand Up @@ -62,11 +71,11 @@ class AudioDeviceModule : public webrtc::RefCountInterface {
public:
// Creates a default ADM for usage in production code.
static scoped_refptr<AudioDeviceModule> Create(
AudioLayer audio_layer, TaskQueueFactory* task_queue_factory);
AudioLayer audio_layer, TaskQueueFactory* task_queue_factory, bool bypass_voice_processing = false);
// Creates an ADM with support for extra test methods. Don't use this factory
// in production code.
static scoped_refptr<AudioDeviceModuleForTest> CreateForTest(
AudioLayer audio_layer, TaskQueueFactory* task_queue_factory);
AudioLayer audio_layer, TaskQueueFactory* task_queue_factory, bool bypass_voice_processing = false);

// Retrieve the currently utilized audio layer
virtual int32_t ActiveAudioLayer(AudioLayer* audioLayer) const = 0;
Expand Down Expand Up @@ -176,6 +185,10 @@ class AudioDeviceModule : public webrtc::RefCountInterface {
virtual int GetRecordAudioParameters(AudioParameters* params) const = 0;
#endif // WEBRTC_IOS

virtual int32_t SetAudioDeviceSink(AudioDeviceSink* sink) const { return -1; }
virtual int32_t GetPlayoutDevice() const { return -1; }
virtual int32_t GetRecordingDevice() const { return -1; }

protected:
~AudioDeviceModule() override {}
};
Expand Down
18 changes: 18 additions & 0 deletions api/crypto/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,24 @@ group("crypto") {
]
}

rtc_library("frame_crypto_transformer") {
visibility = [ "*" ]
sources = [
"frame_crypto_transformer.cc",
"frame_crypto_transformer.h",
]

deps = [
"//api:frame_transformer_interface",
]

if (rtc_build_ssl) {
deps += [ "//third_party/boringssl" ]
} else {
configs += [ ":external_ssl_library" ]
}
}

rtc_library("options") {
visibility = [ "*" ]
sources = [
Expand Down
Loading