Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
4586 commits
Select commit Hold shift + click to select a range
21f7e78
Implement tagged subscribe methods only added to .h file
Dec 5, 2025
e175a31
Roll chromium_revision 275c9f73b3..0cc565f60f (1554551:1554680)
Dec 5, 2025
b2d7700
Roll chromium_revision 0cc565f60f..ce3025ea22 (1554680:1554841)
Dec 5, 2025
86e5cbb
Roll chromium_revision ce3025ea22..63ac73f6a0 (1554841:1554988)
Dec 6, 2025
06d0144
Update WebRTC code version (2025-12-06T04:10:02).
Dec 6, 2025
279926c
Roll chromium_revision 63ac73f6a0..9cfd2ded4f (1554988:1555094)
Dec 6, 2025
8093d56
MB config for compiling with C++23 on more_configs bots.
MirkoBonadei Dec 6, 2025
d80cfa2
Roll chromium_revision 9cfd2ded4f..07d18163ba (1555094:1555198)
Dec 7, 2025
16d94fe
Update WebRTC code version (2025-12-07T04:09:13).
Dec 7, 2025
6cbc53c
Update WebRTC code version (2025-12-08T04:07:34).
Dec 8, 2025
5b0b614
Roll chromium_revision 07d18163ba..cdc78b6d7c (1555198:1555309)
Dec 8, 2025
735591f
Test more combinations of CC negotiations
Dec 5, 2025
bfe5317
Log RTP timestamp when detecting a large gap in TimestampExtrapolator
fippo Dec 5, 2025
c1cfece
Reduce content from GEMINI.md that can cause confusion
Dec 8, 2025
83dd270
Add an injectable RtpTransportFactory
tonyherre Dec 8, 2025
1cf3c31
Remove is_pc_closed_ member from RtpTransceiver
Dec 8, 2025
4eee68a
Remove dependency on `channel->mid()` in stats collectors.
Dec 8, 2025
7442f8c
Attempt to deflake L4S tests on IOS
perkj Dec 8, 2025
1470098
Roll chromium_revision cdc78b6d7c..2d898ae89a (1555309:1555431)
Dec 8, 2025
f1f34ce
Roll chromium_revision 2d898ae89a..87161b5ae3 (1555431:1555552)
Dec 8, 2025
4edf02b
Roll chromium_revision 87161b5ae3..2625254a72 (1555552:1555719)
Dec 8, 2025
a9cdd1e
Remove Chrome and internal usage of libjingle_peerconnection_api
Dec 8, 2025
5fbb87b
Roll chromium_revision 2625254a72..6683094965 (1555719:1555848)
Dec 9, 2025
4d277b9
Update WebRTC code version (2025-12-09T04:03:08).
Dec 9, 2025
31492ed
Remove the api:api target
Dec 9, 2025
b89f777
Roll chromium_revision 6683094965..98e307118c (1555848:1555993)
Dec 9, 2025
0b8d70a
Remove uses of WAIT macro
Dec 9, 2025
cfacadc
Increase number of bytes read in the header.
Dec 5, 2025
81d6098
Use monotonic clock explicitly in AAudioWrapper
DanilChapovalov Dec 9, 2025
af4ee08
Recommend against using std::atomic
Dec 9, 2025
b96c510
build: let gn_check_autofix remove all deps from a build file
fippo Dec 8, 2025
fea4eea
Roll chromium_revision 98e307118c..be1eea1988 (1555993:1556144)
Dec 9, 2025
62b6eb2
Roll chromium_revision be1eea1988..af415b4eb6 (1556144:1556379)
Dec 9, 2025
68ca4f2
Create a simulated time benchmark (with packet loss) for DtlsInStun a…
Dec 9, 2025
aa063f2
Roll chromium_revision af415b4eb6..8b9ef3d46b (1556379:1556486)
Dec 10, 2025
19fa516
Update WebRTC code version (2025-12-10T04:06:24).
Dec 10, 2025
42b0d7c
Update some std::string usage in pc/ directory
Dec 10, 2025
e4a656a
build: clean up p2p/BUILD.gn dependencies
fippo Dec 10, 2025
8188e54
Remove unused functions.
MirkoBonadei Dec 10, 2025
4afd9f4
Roll chromium_revision 8b9ef3d46b..e7941f35f1 (1556486:1556696)
Dec 10, 2025
f64768b
Add Scream traffic policing test
perkj Dec 10, 2025
4805c49
build: clean up pc/BUILD.gn dependencies
fippo Dec 10, 2025
c7e0941
Roll chromium_revision e7941f35f1..8567654980 (1556696:1556905)
Dec 10, 2025
e6a6584
Add support for unified communications (behind field trial)
Dec 10, 2025
63ff8cc
Refactor StreamParams, SsrcGroup to use absl::string_view
Dec 10, 2025
e1392cb
Add DTLS Transport connection time metric
Dec 10, 2025
52742f0
Update WebRTC code version (2025-12-11T04:07:12).
Dec 11, 2025
ee215c6
Run SendRtpAudio on the worker thread.
Dec 10, 2025
e1eae8f
Add UMA for recording preferred congestion control algorithm
Dec 10, 2025
44519a4
Revert "build: clean up pc/BUILD.gn dependencies"
Dec 11, 2025
74d988f
Revert "Default enable WebRTC-HeaderExtensionNegotiateMemory"
Dec 11, 2025
e20ea06
Cleanup flags used for PowerPoint window going fullscreen
palak8669 Dec 11, 2025
c058d04
Experiment for maximum speech level
Dec 11, 2025
f5b8acf
Make SctpDataChannel::Send return false with any error. Update the co…
jxxywk Nov 26, 2025
c9a3475
Add a test_flags_tmp build target.
Dec 11, 2025
3373683
pc: don't use atomic for receptiveness state
fippo Dec 9, 2025
2182b92
Move SdpPayloadTypePicker out of sdp_offer_answer.cc
Dec 11, 2025
a5e9b3b
Roll chromium_revision 8567654980..bc0cc21157 (1556905:1557799)
Dec 12, 2025
3166c4f
Update WebRTC code version (2025-12-12T04:06:32).
Dec 12, 2025
57de068
Add possibility to use Scream with TWCC feedback
perkj Dec 11, 2025
fd570b8
Reland "build: clean up pc/BUILD.gn dependencies"
fippo Dec 11, 2025
4487720
Roll chromium_revision bc0cc21157..696be87122 (1557799:1557927)
Dec 12, 2025
0fd886c
Add tests for SdpPayloadTypeSuggester
Dec 12, 2025
bb8c7ff
Remove the dependency on test_flags_tmp.
Dec 11, 2025
d6d5d3e
Tweak DTLS-in-STUN filter benchmark filter
fippo Dec 10, 2025
1e943f0
Update implementation_basics.md
Dec 12, 2025
682fc13
Log RTX original sequence number in the RtcEventLog v2.
rasmusbrandt Dec 11, 2025
0ba5208
Request refresh frame on resolution scaling changes
Dec 12, 2025
9dbf924
Remove test_flags_tmp target.
Dec 12, 2025
35236fc
Integrate logging of RTX original sequence number in `Call`.
rasmusbrandt Dec 11, 2025
fc9cf05
Add flag to show grid in eventlog visualizer
perkj Dec 12, 2025
1bc083b
Rm SetUseHeuristicFullscreenPowerPointWindows as it's no longer used
palak8669 Dec 12, 2025
df3fdb5
ScreamV2 take REMB into account.
perkj Dec 12, 2025
7144f43
Add detailed plots of Scream state
perkj Dec 12, 2025
ae39365
Reland "Add test for QueueUserAPC compatibility"
Dec 2, 2025
b5ac1dd
Fix default value of unifiedcommunications field trial to be false!
Dec 12, 2025
df1ffee
Revert "Request refresh frame on resolution scaling changes"
Dec 13, 2025
0c460eb
Update WebRTC code version (2025-12-13T04:06:17).
Dec 13, 2025
8b70734
Use absl::string_view for sdp_mid parameters in a few places.
Dec 13, 2025
ccf6d64
Update WebRTC code version (2025-12-14T04:04:58).
Dec 14, 2025
a62cc1c
Namespace cleanup in video and voice engine tests
Dec 12, 2025
697133f
Add operator<< support to RTCError
Dec 14, 2025
08fd48a
More std::string usage updates in pc/ using absl::string_view
Dec 14, 2025
7475f5f
Update WebRTC code version (2025-12-15T04:08:09).
Dec 15, 2025
732ec16
Revert "Integrate logging of RTX original sequence number in `Call`."
rasmusbrandt Dec 15, 2025
54ff9c1
Add new frame drop method to EncodedImageCallback.
Dec 10, 2025
cc7d117
Deprecate some tag-less signal Subscribe functions
Dec 10, 2025
765f70d
Fixed AudioEncoderCopyRed decrementing past begin()
Nfrederiksen Dec 15, 2025
1edd5a0
Update WebRTC code version (2025-12-16T04:06:33).
Dec 16, 2025
efb3c2d
Refactor RtpSenders before moving creation of senders into transceiver
Dec 15, 2025
f089028
Remove RtpSenderInternal::SetTransceiverAsStopped
Dec 15, 2025
5590ade
Implement a fake ice lite agent
Dec 16, 2025
204df44
Remove the CreateDataChannel function
Dec 16, 2025
f0edfc3
Allow injecting media channel into VideoRtpReceiver
Dec 16, 2025
8a743ee
sdk: wrap RTCNativeAudioSessionDelegateAdapter with RTC_OBJC_TYPE
Lufftre Dec 15, 2025
b5be3b1
Extract connection unittest from port tests
Dec 16, 2025
b37a6b1
Revert "sdk: wrap RTCNativeAudioSessionDelegateAdapter with RTC_OBJC_…
Dec 16, 2025
073755f
Add RTC_GUARDED_BY to RtpSender::media_channel_
Dec 16, 2025
d20f129
Move FrameInstrumentationGeneratorImpl from api/ to video/
Dec 16, 2025
a0d1f0f
Revert "Allow injecting media channel into VideoRtpReceiver"
Dec 16, 2025
8fd6916
Bundle media channel teardown with other teardown tasks
Dec 16, 2025
8f138bb
Update WebRTC code version (2025-12-17T04:07:39).
Dec 17, 2025
935c805
Remove the "Cricket" name from sctp_transport_unittest.cc
Dec 16, 2025
bfc391f
Fix tools/autotest.py GEMINI instructions
Dec 16, 2025
fadce0a
Plumb a control for max SCTP streams from PeerConnection options.
Dec 17, 2025
cfd4138
Reland "Allow injecting media channel into VideoRtpReceiver"
Dec 16, 2025
7717f4e
Disable Scream integration tests on ASAN since some of them are too s…
perkj Dec 17, 2025
99af3b1
Suggest test::RunLoop in AutoThread/AutoSocketServerThread comments
Dec 16, 2025
138c5d0
Use simulated time controller in connection_unittest
Dec 16, 2025
7e66a9b
Add modernization section to GEMINI knowledge base
Dec 16, 2025
d020a4e
Let DataChannelController respect error from OpenChannel
Dec 17, 2025
4b6902c
Remove DestroyMediaChannels
Dec 17, 2025
f5f3fdd
Check for empty source in `RtpPacket::SetPayload`.
rasmusbrandt Dec 17, 2025
4176054
Accessing the tensors by name and not by index.
Dec 17, 2025
2429715
Update WebRTC code version (2025-12-18T04:07:38).
Dec 18, 2025
d91b747
Refactor common code in RtpTransceiver in preparation of adding a ctor
Dec 18, 2025
b3a6053
DCSCTP: Return negotiated rather than configured max stream count
Dec 18, 2025
459e9df
Update WebRTC code version (2025-12-19T04:08:22).
Dec 19, 2025
a7f2731
Minor Dtls-in-STUN-encapsulation cleanups
Dec 19, 2025
eb95c1e
Add macro for not running Scream integration tests with ASAN
perkj Dec 19, 2025
a1b6a89
Move creation of senders and receivers into Transceiver
Dec 19, 2025
7379b40
Fix potential crash when using encoder speed controller.
Dec 19, 2025
58ab11f
Update WebRTC code version (2025-12-20T04:07:40).
Dec 20, 2025
f60e425
Bundle sender stop tasks with channel deletion worker tasks
Dec 20, 2025
56cad90
Update WebRTC code version (2025-12-21T04:08:37).
Dec 21, 2025
be461fd
Silence warning when preferred_ack_type is nullopt
Dec 20, 2025
bec9c0f
Update WebRTC code version (2025-12-22T04:03:49).
Dec 22, 2025
60ccc50
Add FrameSelector utility class, used for ACD frame selection.
Dec 22, 2025
a3ec6a8
Fix data race in PeerConnection::ReportTransportStats
Dec 22, 2025
f376096
Provide thread-safe channel access during transport changes
Dec 22, 2025
ca640fb
Add async cancellation support to RTCStatsCollector
Dec 23, 2025
e2beed0
Convert RTCStatsCollector to unique_ptr ownership
Dec 23, 2025
ff08be5
Update WebRTC code version (2025-12-24T04:07:39).
Dec 24, 2025
89dc41c
Update WebRTC code version (2025-12-25T04:03:58).
Dec 25, 2025
1fbc1f1
Move DC ID allocation from SDP negotiation to SCTP connection
Dec 22, 2025
8d715f3
Change RTCStatsCollector from std::unique_ptr to direct member
Dec 24, 2025
5a25db7
Update WebRTC code version (2025-12-29T04:07:55).
Dec 29, 2025
c02fe24
Add call ERR_clear_error before SSL function. because the SSL_get_err…
Dec 4, 2025
7317154
Avoid `channel()` in LegacyStatsCollector transport lookup
Dec 28, 2025
a8491b2
Make sure BaseChannel::rtp_transport_ is nullptr when not connected.
Jan 1, 2026
4d18cf5
Fix unused-result values.
MirkoBonadei Dec 19, 2025
1fc7a76
Remove virtual methods from LegacyStatsCollector
Jan 2, 2026
ac62e7c
Roll chromium_revision 696be87122..1b7b6ca3a4 (1557927:1563826)
Jan 2, 2026
0e386a0
Update WebRTC code version (2026-01-03T04:08:59).
Jan 3, 2026
7ebafd2
Initialize data required by TrackMediaInfoMap on the signaling thread
Jan 3, 2026
7e833b4
Batch DtlsTransport lookups in SdpOfferAnswerHandler
Jan 4, 2026
5510538
Remove usage of deprecated proto2::MessageLite::ParseFromArray.
MirkoBonadei Jan 5, 2026
cfbe803
Potential fix for issue when removing transports.
Jan 5, 2026
02fc2a3
infra: Revive try/mac_chromium_compile bot as experimental
Jwata Dec 25, 2025
662f240
Revert "infra: Revive try/mac_chromium_compile bot as experimental"
Jwata Jan 6, 2026
dd67961
Wayland screencast: refactor EGL DMA-BUF handling for multi-GPU support
grulja Dec 15, 2025
0436eec
Wayland screencast: add support for preferred device
grulja Jan 6, 2026
15d74a5
Wayland screencast: add getter for all enumerated devices
grulja Jan 6, 2026
3a9d2a5
Roll chromium_revision 1b7b6ca3a4..678b098940 (1563826:1564885)
Jan 6, 2026
d176739
Stop reading arm_use_neon, arm_version in webrtc
nico Jan 6, 2026
bbfc886
Wayland screencast: move failed modifier tracking to EglDrmDevice
grulja Jan 6, 2026
29a89f8
Revert "Provide thread-safe channel access during transport changes"
Jan 6, 2026
e5e06a4
Update WebRTC code version (2026-01-07T04:06:30).
Jan 7, 2026
cbed365
Revert "Stop reading arm_use_neon, arm_version in webrtc"
MirkoBonadei Jan 7, 2026
55c2ed2
Fix flaky SimulcastWithScaleTo test by waiting for scalability_mode
Jan 6, 2026
16decba
Change single-argument Buffer() to static create function.
Jan 7, 2026
56a4a01
Roll chromium_revision 678b098940..ca41a5301d (1564885:1565550)
Jan 7, 2026
10eeb88
build: make rtc_test depend on test_main by default
fippo Dec 15, 2025
3e0edd0
Refactor Buffer::CreateUninitializedWithSize to CreateWithCapacity
Jan 7, 2026
faed192
Revert "Wayland screencast: move failed modifier tracking to EglDrmDe…
Jan 7, 2026
790c3c1
Guard RtpSenderBase::ssrc_ on the signaling thread
Jan 7, 2026
fb8372e
Avoid one thread hop when creating the channel object in the transceiver
Jan 7, 2026
1454752
Roll chromium_revision ca41a5301d..ba561af27a (1565550:1565834)
Jan 7, 2026
de81c0c
Revert "Wayland screencast: add getter for all enumerated devices"
Jan 7, 2026
2f3f05d
Add DTLS Version metric
Dec 11, 2025
f186bcf
Update WebRTC code version (2026-01-08T04:10:22).
Jan 8, 2026
14b7e26
Revert "Wayland screencast: add support for preferred device"
Jan 7, 2026
2ee20c9
Revert "Wayland screencast: refactor EGL DMA-BUF handling for multi-G…
Jan 7, 2026
5fca03c
Use std::vector not buffer in g722 temporary
Jan 8, 2026
0fc2b63
Fix: Log first frame scaling operation in VideoAdapter
Lufftre Jan 7, 2026
9a54a1d
Delete system_wrappers:field_trial deprecated target
DanilChapovalov Jan 7, 2026
98f063c
Replace one CreateUninitializedWithSize with AppendData
Jan 8, 2026
456c36d
Require initial Timestamp when constructing FakeFrameSource
DanilChapovalov Jan 7, 2026
fba20a2
Make Opus encoder configurations friendly to move-only types
Jan 8, 2026
bc37504
Make sure to apply media options in RtpTransceiver::CreateChannel
Jan 8, 2026
bdc50d3
Deprecate VoiceEngineInterface::CreateSend/ReceiveChannel with AudioC…
Jan 8, 2026
ce77fc8
Make SetMaximumBufferPackets and SetFastAccelerate not pure virtual.
Jan 8, 2026
ca9523b
Reland "Wayland screencast: refactor EGL DMA-BUF handling for multi-G…
grulja Jan 8, 2026
e180ac4
Add new factory method for FrameInstrumentationGenerator.
Jan 8, 2026
bfe2b4d
Use safety flags for tasks in RtpSender
Jan 8, 2026
3d8ce2f
Make creating codecs without CodecPairId possible
Jan 8, 2026
08888b6
Update WebRTC code version (2026-01-09T04:03:40).
Jan 9, 2026
3b85fe4
build: remove test_main dependencies from more rtc_tests
fippo Jan 8, 2026
10d0e78
Remove last vestiges of MOCK_METHODn from the codebase
Jan 9, 2026
14e19b2
Reland "sdk: add RTC_OBJC_TYPE to ios Metal renderer classes"
fippo Dec 4, 2025
d39834b
Make creating decoders without CodecPairId possible
Jan 9, 2026
ba2fd0c
pc: clean up pc/ dependencies
fippo Jan 9, 2026
5f1aeff
Reland "Request refresh frame on resolution scaling changes"
Jan 9, 2026
88eb867
Revert "Reland "sdk: add RTC_OBJC_TYPE to ios Metal renderer classes""
Jan 9, 2026
2504c70
Revert "pc: clean up pc/ dependencies"
Jan 9, 2026
5c4bf70
Add ability construct scalability mode from VideoCodec.
Jan 9, 2026
97b46e1
Run tools_webrtc/apply-clang-tidy on the repo
Jan 9, 2026
d298d37
Add field trial for corruption detection FrameSelector
Jan 9, 2026
92db681
desktop-capture: honor prefer_cursor_embedded on Wayland portal captures
Nfrederiksen Dec 19, 2025
faea246
Make SetMaximumBufferPackets and SetFastAccelerate pure virtual.
Jan 9, 2026
cca0737
Neural Residual Echo Estimator: Option for using an unbounded echo ma…
Jan 9, 2026
a864bc5
Update WebRTC code version (2026-01-10T04:04:22).
Jan 10, 2026
13c91bb
Mark clang-tidy run as blame-exempt
Jan 9, 2026
2bc24d4
Roll chromium_revision ba561af27a..49e616bdbd (1565834:1567370)
Jan 10, 2026
99443ea
Revert "Reland "Request refresh frame on resolution scaling changes""
Jan 10, 2026
1b1cc86
Minor cleanup/hardening for session_description.h
Jan 10, 2026
7648473
Roll chromium_revision 49e616bdbd..76b0415649 (1567370:1567477)
Jan 11, 2026
5aa1763
Update WebRTC code version (2026-01-11T04:04:53).
Jan 11, 2026
12a19f0
Clean out AudioCodecPairId from Neteq APIs
Jan 9, 2026
1f2f570
Adding DC-level estimator to for the capture mixer
Dec 10, 2025
82b7d70
Adding energy estimator to for the capture mixer
Dec 16, 2025
7de3961
Adding a saturation estimator to for the capture mixer
Dec 19, 2025
2821d3d
Adding a class bundling all the signal analysis in the capture mixer
Dec 19, 2025
2fe3d69
Adding code implementing the mixing logic for the capture signal remixer
Jan 11, 2026
6d6e28b
Promote SetOptions to VoiceMediaSendChannelInterface
Jan 11, 2026
4017b87
Roll chromium_revision 76b0415649..0e3a041724 (1567477:1567583)
Jan 12, 2026
84a167d
Reland "pc: clean up pc/ dependencies"
fippo Jan 9, 2026
9cc0d50
ssl: move Stream bio into anon namespace
fippo Jan 9, 2026
66f2adc
Adding code implementing the remixing of channel content
Jan 12, 2026
7c69b17
Fix Simulcast/AV1 test flakes by handling optional values
Jan 8, 2026
9e04f6d
Restructure BitBufferWriter to write to uninitialized memory
DanilChapovalov Jan 9, 2026
1e18e3e
Add callback for RtpSendParameters changes
Jan 12, 2026
b6a8240
Use dedicated threads in RtpSenderReceiver unit tests
Jan 12, 2026
67e80e1
Use separate threads in PeerConnectionInterface tests
Jan 12, 2026
77a2933
Remove WebRTC-UseNtpTimeAbsoluteSendTime field trial
Jan 7, 2026
b9909e9
Use dedicated threads in PeerConnectionJsepTest
Jan 12, 2026
1e0a6ec
Fix crash when replaying BWE using Scream
perkj Jan 12, 2026
72a64cb
build: clean up audio/ dependencies
fippo Jan 9, 2026
7fd01e0
Allow capturing editor window if slideshow is chosen for capturing
palak8669 Jan 12, 2026
5f2ab20
build: clean up p2p/ dependencies
fippo Jan 9, 2026
71785f4
Adding code for the main mixing functionality
Jan 12, 2026
5f1d5d9
Roll chromium_revision 0e3a041724..3597135a8f (1567583:1567718)
Jan 12, 2026
31e63e2
Wire up field trial for `FrameSelector`.
Jan 12, 2026
3d3a2df
Reland "Request refresh frame on resolution scaling changes"
Jan 12, 2026
68f0305
Demonstrate behavior of loose transceivers at answerer
Jan 12, 2026
b27bdb7
Fix bug in how Scream react to loss
perkj Jan 8, 2026
d79f32b
Scream V2 - compensate for time receiver delay feedback
perkj Jan 12, 2026
b47e68e
Roll chromium_revision 3597135a8f..86cd6c0b05 (1567718:1567966)
Jan 12, 2026
b91e4ba
Merge official WebRTC M137 baseline into Stream fork history
Apr 28, 2026
07cb6a9
[Enhancement] Merge official WebRTC M145 baseline
Apr 28, 2026
9fb6fec
Merge conflict fixes
Apr 28, 2026
a3935f5
[Fix] Preserve iOS WebRTC umbrella header in framework bundle
Apr 28, 2026
fb06fa1
Fix compilation errors
Apr 28, 2026
9118621
[Fix] Preserve audio transport registration for active Stream ADM
Apr 28, 2026
ade0016
fix: fixes objectFit="cover" rendering on iOS using the shared Metal …
santhoshvai May 5, 2026
328a648
Build fixes for android + Refactoring to reduce merge conflict occure…
PratimMallick May 11, 2026
6f40451
Restore crypto components and RTCAudioRenderer
May 12, 2026
6d6b1d9
Fix move-only factory dependency test setup
May 12, 2026
5ba7a3a
Iliaspavlidakis/m145/fix ios tests (#87)
ipavlidakis May 13, 2026
ad51315
Resolve merge conflicts with develop
May 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 18 additions & 14 deletions api/crypto/frame_crypto_transformer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -442,17 +442,18 @@ void FrameCryptorTransformer::encryptFrame(
auto key_set = key_handler->GetKeySet(key_index_);
uint8_t unencrypted_bytes = get_unencrypted_bytes(frame.get(), type_);

Buffer frame_header(unencrypted_bytes);
Buffer frame_header = Buffer::CreateUninitializedWithSize(unencrypted_bytes);
for (size_t i = 0; i < unencrypted_bytes; i++) {
frame_header[i] = data_in[i];
}

Buffer frame_trailer(2);
Buffer frame_trailer = Buffer::CreateUninitializedWithSize(2);
frame_trailer[0] = getIvSize();
frame_trailer[1] = key_index_;
Buffer iv = makeIv(frame->GetSsrc(), frame->GetTimestamp());

Buffer payload(data_in.size() - unencrypted_bytes);
Buffer payload =
Buffer::CreateUninitializedWithSize(data_in.size() - unencrypted_bytes);
for (size_t i = unencrypted_bytes; i < data_in.size(); i++) {
payload[i - unencrypted_bytes] = data_in[i];
}
Expand All @@ -462,8 +463,7 @@ void FrameCryptorTransformer::encryptFrame(
key_set->encryption_key, iv, frame_header, payload,
&buffer) == Success) {
Buffer encrypted_payload(buffer.data(), buffer.size());
Buffer tag(encrypted_payload.data() + encrypted_payload.size() - 16,
16);
Buffer tag(encrypted_payload.data() + encrypted_payload.size() - 16, 16);
Buffer data_without_header;
data_without_header.AppendData(encrypted_payload);
data_without_header.AppendData(iv);
Expand Down Expand Up @@ -566,12 +566,12 @@ void FrameCryptorTransformer::decryptFrame(

uint8_t unencrypted_bytes = get_unencrypted_bytes(frame.get(), type_);

Buffer frame_header(unencrypted_bytes);
Buffer frame_header = Buffer::CreateUninitializedWithSize(unencrypted_bytes);
for (size_t i = 0; i < unencrypted_bytes; i++) {
frame_header[i] = data_in[i];
}

Buffer frame_trailer(2);
Buffer frame_trailer = Buffer::CreateUninitializedWithSize(2);
frame_trailer[0] = data_in[data_in.size() - 2];
frame_trailer[1] = data_in[data_in.size() - 1];
uint8_t ivLength = frame_trailer[0];
Expand Down Expand Up @@ -613,12 +613,13 @@ void FrameCryptorTransformer::decryptFrame(

auto key_set = key_handler->GetKeySet(key_index);

Buffer iv = Buffer(ivLength);
Buffer iv = Buffer::CreateUninitializedWithSize(ivLength);
for (size_t i = 0; i < ivLength; i++) {
iv[i] = data_in[data_in.size() - 2 - ivLength + i];
}

Buffer encrypted_buffer(data_in.size() - unencrypted_bytes);
Buffer encrypted_buffer =
Buffer::CreateUninitializedWithSize(data_in.size() - unencrypted_bytes);
for (size_t i = unencrypted_bytes; i < data_in.size(); i++) {
encrypted_buffer[i - unencrypted_bytes] = data_in[i];
}
Expand All @@ -634,7 +635,8 @@ void FrameCryptorTransformer::decryptFrame(
H265::ParseRbsp(encrypted_buffer.data(), encrypted_buffer.size()));
}

Buffer encrypted_payload(encrypted_buffer.size() - ivLength - 2);
Buffer encrypted_payload = Buffer::CreateUninitializedWithSize(
encrypted_buffer.size() - ivLength - 2);
for (size_t i = 0; i < encrypted_payload.size(); i++) {
encrypted_payload[i] = encrypted_buffer[i];
}
Expand Down Expand Up @@ -795,7 +797,8 @@ RTCErrorOr<webrtc::scoped_refptr<EncryptedPacket>> DataPacketCryptor::Encrypt(

std::vector<uint8_t> buffer;
Buffer payload(data.data(), data.size());
auto frame_header = Buffer(0); // no frame header for data packets
auto frame_header = Buffer::CreateUninitializedWithSize(
0); // no frame header for data packets
if (AesEncryptDecrypt(EncryptOrDecrypt::kEncrypt, algorithm_,
key_set->encryption_key, iv, frame_header, payload,
&buffer) == Success) {
Expand Down Expand Up @@ -826,12 +829,13 @@ RTCErrorOr<std::vector<uint8_t>> DataPacketCryptor::Decrypt(
std::to_string(key_index) +
"] out of range for participant " + participant_id);
}

std::vector<uint8_t> buffer;
Buffer encrypted_payload(encryptedPacket->data.data(),
encryptedPacket->data.size());
encryptedPacket->data.size());
Buffer iv(encryptedPacket->iv.data(), encryptedPacket->iv.size());
auto frame_header = Buffer(0); // no frame header for data packets
auto frame_header = Buffer::CreateUninitializedWithSize(
0); // no frame header for data packets

auto key_set = key_handler->GetKeySet(key_index);
auto initialKeyMaterial = key_set->material;
Expand Down
1 change: 0 additions & 1 deletion api/test/mock_transformable_video_frame.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ class MockTransformableVideoFrame : public TransformableVideoFrameInterface {
(const, override));
MOCK_METHOD(std::string, GetMimeType, (), (const, override));
MOCK_METHOD(VideoFrameMetadata, Metadata, (), (const, override));
MOCK_METHOD(RTPVideoHeader&, header, (), (const, override));
MOCK_METHOD(std::optional<Timestamp>,
GetPresentationTimestamp,
(),
Expand Down
16 changes: 8 additions & 8 deletions modules/audio_device/include/test_audio_device.cc
Original file line number Diff line number Diff line change
Expand Up @@ -51,17 +51,17 @@ constexpr int kFramesPerSecond = kNumMicrosecsPerSec / kFrameLengthUs;
class TestAudioDeviceModuleImpl : public AudioDeviceModuleImpl {
public:
TestAudioDeviceModuleImpl(
TaskQueueFactory* task_queue_factory,
const Environment& env,
std::unique_ptr<TestAudioDeviceModule::Capturer> capturer,
std::unique_ptr<TestAudioDeviceModule::Renderer> renderer,
float speed = 1)
: AudioDeviceModuleImpl(
AudioLayer::kDummyAudio,
std::make_unique<TestAudioDevice>(task_queue_factory,
std::make_unique<TestAudioDevice>(env,
std::move(capturer),
std::move(renderer),
speed),
task_queue_factory,
&env.task_queue_factory(),
/*create_detached=*/true) {}

~TestAudioDeviceModuleImpl() override = default;
Expand All @@ -70,16 +70,16 @@ class TestAudioDeviceModuleImpl : public AudioDeviceModuleImpl {
class TestAudioDeviceModuleImpl : public AudioDeviceModuleForTest {
public:
TestAudioDeviceModuleImpl(
TaskQueueFactory* task_queue_factory,
const Environment& env,
std::unique_ptr<TestAudioDeviceModule::Capturer> capturer,
std::unique_ptr<TestAudioDeviceModule::Renderer> renderer,
float speed = 1)
: audio_device_(std::make_unique<TestAudioDevice>(
task_queue_factory,
env,
std::move(capturer),
std::move(renderer),
speed)),
audio_device_buffer_(task_queue_factory,
audio_device_buffer_(&env.task_queue_factory(),
/*create_detached=*/true) {
audio_device_->AttachAudioBuffer(&audio_device_buffer_);
}
Expand Down Expand Up @@ -784,12 +784,12 @@ size_t TestAudioDeviceModule::SamplesPerFrame(int sampling_frequency_in_hz) {
}

scoped_refptr<AudioDeviceModule> TestAudioDeviceModule::Create(
TaskQueueFactory* task_queue_factory,
const Environment& env,
std::unique_ptr<TestAudioDeviceModule::Capturer> capturer,
std::unique_ptr<TestAudioDeviceModule::Renderer> renderer,
float speed) {
auto audio_device = make_ref_counted<TestAudioDeviceModuleImpl>(
task_queue_factory, std::move(capturer), std::move(renderer), speed);
env, std::move(capturer), std::move(renderer), speed);

#if defined(WEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE)
// Ensure that the current platform is supported.
Expand Down
75 changes: 70 additions & 5 deletions sdk/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ if (is_ios || is_mac) {
rtc_library("base_objc") {
visibility = [ "*" ]
sources = [
"objc/base/RTCAudioRenderer.h",
"objc/base/RTCCodecSpecificInfo.h",
"objc/base/RTCEncodedImage.h",
"objc/base/RTCEncodedImage.m",
Expand Down Expand Up @@ -253,7 +254,7 @@ if (is_ios || is_mac) {
}

if (!build_with_chromium) {
if (is_ios) {
if (is_ios || is_mac) {
rtc_library("native_api_audio_device_module") {
visibility = [ "*" ]

Expand All @@ -263,7 +264,6 @@ if (is_ios || is_mac) {
]

deps = [
":audio_device",
":audio_device_module_error_handler",
"../api:make_ref_counted",
"../api:scoped_refptr",
Expand All @@ -274,8 +274,14 @@ if (is_ios || is_mac) {
"../rtc_base:logging",
"../system_wrappers",
]

if (is_ios) {
deps += [ ":audio_device" ]
}
}
}

if (is_ios) {
rtc_source_set("audio_session_observer") {
visibility = [ ":*" ]

Expand Down Expand Up @@ -681,7 +687,6 @@ if (is_ios || is_mac) {
if (is_mac) {
sources += [
"objc/components/renderer/metal/RTCMTLNSVideoView.h",
"objc/components/renderer/metal/RTCMTLNSVideoView.m",
]
frameworks += [ "AppKit.framework" ]
}
Expand Down Expand Up @@ -1094,11 +1099,19 @@ if (is_ios || is_mac) {
"objc/api/peerconnection/RTCDataChannelConfiguration+Private.h",
"objc/api/peerconnection/RTCDataChannelConfiguration.h",
"objc/api/peerconnection/RTCDataChannelConfiguration.mm",
"objc/api/peerconnection/RTCDataPacketCryptor.h",
"objc/api/peerconnection/RTCDataPacketCryptor.mm",
"objc/api/peerconnection/RTCDtmfSender+Private.h",
"objc/api/peerconnection/RTCDtmfSender.h",
"objc/api/peerconnection/RTCDtmfSender.mm",
"objc/api/peerconnection/RTCFieldTrials.h",
"objc/api/peerconnection/RTCFieldTrials.mm",
"objc/api/peerconnection/RTCFrameCryptor+Private.h",
"objc/api/peerconnection/RTCFrameCryptor.h",
"objc/api/peerconnection/RTCFrameCryptor.mm",
"objc/api/peerconnection/RTCFrameCryptorKeyProvider+Private.h",
"objc/api/peerconnection/RTCFrameCryptorKeyProvider.h",
"objc/api/peerconnection/RTCFrameCryptorKeyProvider.mm",
"objc/api/peerconnection/RTCIODevice.h",
"objc/api/peerconnection/RTCIODevice.mm",
"objc/api/peerconnection/RTCIceCandidate+Private.h",
Expand Down Expand Up @@ -1257,6 +1270,7 @@ if (is_ios || is_mac) {
"../api/audio_codecs:audio_codecs_api",
"../api/audio_codecs:builtin_audio_decoder_factory",
"../api/audio_codecs:builtin_audio_encoder_factory",
"../api/crypto:frame_crypto_transformer",
"../api/crypto:frame_decryptor_interface",
"../api/crypto:frame_encryptor_interface",
"../api/environment",
Expand Down Expand Up @@ -1290,10 +1304,9 @@ if (is_ios || is_mac) {
"../system_wrappers:metrics",
]

if (is_ios) {
if (is_ios || is_mac) {
deps += [
":native_api_audio_device_module",
"../api/transport:network_control",
]
}
}
Expand Down Expand Up @@ -1448,6 +1461,11 @@ if (is_ios || is_mac) {
}
}

bundle_data("darwin_privacy_info") {
sources = [ "objc/PrivacyInfo.xcprivacy" ]
outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
}

if (is_ios) {
apple_framework_bundle_with_umbrella_header("framework_objc") {
info_plist = "objc/Info.plist"
Expand All @@ -1473,6 +1491,7 @@ if (is_ios || is_mac) {
"objc/base/RTCVideoFrame.h",
"objc/base/RTCVideoFrameBuffer.h",
"objc/base/RTCVideoRenderer.h",
"objc/base/RTCAudioRenderer.h",
"objc/base/RTCYUVPlanarBuffer.h",
"objc/components/audio/RTCAudioDevice.h",
"objc/components/audio/RTCAudioSession.h",
Expand Down Expand Up @@ -1502,6 +1521,9 @@ if (is_ios || is_mac) {
"objc/api/peerconnection/RTCConfiguration.h",
"objc/api/peerconnection/RTCDataChannel.h",
"objc/api/peerconnection/RTCDataChannelConfiguration.h",
"objc/api/peerconnection/RTCDataPacketCryptor.h",
"objc/api/peerconnection/RTCFrameCryptor.h",
"objc/api/peerconnection/RTCFrameCryptorKeyProvider.h",
"objc/api/peerconnection/RTCFieldTrials.h",
"objc/api/peerconnection/RTCIceCandidate.h",
"objc/api/peerconnection/RTCIceCandidateErrorEvent.h",
Expand Down Expand Up @@ -1601,6 +1623,7 @@ if (is_ios || is_mac) {
deps = [
":audio_objc",
":base_objc",
":darwin_privacy_info",
":default_codec_factory_objc",
":metal_objc",
":native_api",
Expand Down Expand Up @@ -1642,6 +1665,39 @@ if (is_ios || is_mac) {
}

if (is_mac) {
rtc_library("desktopcapture_objc") {
visibility = [ "*" ]
sources = [
"objc/components/capturer/RTCDesktopCapturer+Private.h",
"objc/components/capturer/RTCDesktopCapturer.h",
"objc/components/capturer/RTCDesktopCapturer.mm",
"objc/components/capturer/RTCDesktopMediaList+Private.h",
"objc/components/capturer/RTCDesktopMediaList.h",
"objc/components/capturer/RTCDesktopMediaList.mm",
"objc/components/capturer/RTCDesktopSource+Private.h",
"objc/components/capturer/RTCDesktopSource.h",
"objc/components/capturer/RTCDesktopSource.mm",
"objc/native/src/objc_desktop_capture.h",
"objc/native/src/objc_desktop_capture.mm",
"objc/native/src/objc_desktop_media_list.h",
"objc/native/src/objc_desktop_media_list.mm",
]
frameworks = [ "AppKit.framework" ]

configs += [ "..:common_objc" ]

public_configs = [ ":common_config_objc" ]

deps = [
":base_objc",
":helpers_objc",
":videoframebuffer_objc",
"../modules/desktop_capture",
"../rtc_base/system:gcd_helpers",
"//third_party:jpeg",
]
}

apple_framework_bundle_with_umbrella_header("mac_framework_objc") {
info_plist = "objc/Info.plist"
output_name = "WebRTC"
Expand All @@ -1655,8 +1711,11 @@ if (is_ios || is_mac) {
"objc/api/peerconnection/RTCCryptoOptions.h",
"objc/api/peerconnection/RTCDataChannel.h",
"objc/api/peerconnection/RTCDataChannelConfiguration.h",
"objc/api/peerconnection/RTCDataPacketCryptor.h",
"objc/api/peerconnection/RTCDtmfSender.h",
"objc/api/peerconnection/RTCFieldTrials.h",
"objc/api/peerconnection/RTCFrameCryptor.h",
"objc/api/peerconnection/RTCFrameCryptorKeyProvider.h",
"objc/api/peerconnection/RTCIODevice.h",
"objc/api/peerconnection/RTCIceCandidate.h",
"objc/api/peerconnection/RTCIceCandidateErrorEvent.h",
Expand Down Expand Up @@ -1697,6 +1756,7 @@ if (is_ios || is_mac) {
"objc/api/video_codec/RTCVideoEncoderVP9.h",
"objc/api/video_frame_buffer/RTCNativeI420Buffer.h",
"objc/api/video_frame_buffer/RTCNativeMutableI420Buffer.h",
"objc/base/RTCAudioRenderer.h",
"objc/base/RTCCodecSpecificInfo.h",
"objc/base/RTCEncodedImage.h",
"objc/base/RTCI420Buffer.h",
Expand All @@ -1718,6 +1778,9 @@ if (is_ios || is_mac) {
"objc/base/RTCVideoRenderer.h",
"objc/base/RTCYUVPlanarBuffer.h",
"objc/components/capturer/RTCCameraVideoCapturer.h",
"objc/components/capturer/RTCDesktopCapturer.h",
"objc/components/capturer/RTCDesktopMediaList.h",
"objc/components/capturer/RTCDesktopSource.h",
"objc/components/capturer/RTCFileVideoCapturer.h",
"objc/components/renderer/metal/RTCMTLNSVideoView.h",
"objc/components/renderer/opengl/RTCVideoViewShading.h",
Expand All @@ -1741,7 +1804,9 @@ if (is_ios || is_mac) {

deps = [
":base_objc",
":darwin_privacy_info",
":default_codec_factory_objc",
":desktopcapture_objc",
":metal_objc",
":native_api",
":native_video",
Expand Down
Loading