No description
Find a file
Sergey Silkin db36884e76 Reland "Mark frames with inter_layer_predicted=true as delta frames"
This is a reland of commit 7ae48c452a with  updated RtpVp9RefFinder

RtpVp9RefFinder relied on the fact that frames with (inter_pic_predicted=true && inter_layer_predicted=true) were marked as keyframes. Since this is not the case anymore, the related code paths in RtpVp9RefFinder have been deleted.

Calculation of gof_info_[] index for non-keyframes has been updated to account for that fact it is now possible to received multiple T0 frames belonging to the same temporal unit (we don't need to do "unwrapped_tl0 - 1" in this case).

Original change's description:
> Mark frames with inter_layer_predicted=true as delta frames
>
> As it is currently implemented, the VP9 depacketizer decides packet's frame type based on p_bit ("Inter-picture predicted layer frame"). p_bit is set to 0 for upper spatial layer frames of keyframe since they do not have temporal refs. This results in marking packets of upper spatial layer frames, and, eventually these frames, of SVC keyframes as "keyframe" while they are in fact delta frames.
>
> Normally spatial layer frames are merged into a superframe and the superframe is passed to decoder. But passing individual layers to a single decoder instance is a valid scenario too and is used in downstream projects. In this case, an upper layer frame marked as keyframe may cause decoder reset [2] and break decoding.
>
> This CL changes frame type decision logic in the VP9 depacketizer such that only packets with both P and D (inter-layer predicted) bits unset are considered as keyframe packets.
>
> When spatial layer frames are merged into a superframe in CombineAndDeleteFrames [1], frame type of the superframe is inferred from the lowest spatial layer frame.
>
> [1] https://source.chromium.org/chromium/chromium/src/+/main:third_party/webrtc/modules/video_coding/frame_helpers.cc;l=53
>
> [2] https://source.corp.google.com/piper///depot/google3/third_party/webrtc/files/stable/webrtc/modules/video_coding/codecs/vp9/libvpx_vp9_decoder.cc;l=209
>
> Bug: webrtc:15827
> Change-Id: Idc3445636f0eae0192dac998876fedec48628560
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/343342
> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#41939}

Bug: webrtc:15827
Change-Id: Ic69b94989919cf6d353bceea85d0eba63bc500ee
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/344144
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#41985}
2024-04-02 18:59:58 +00:00
api Mark cricket port type constants as deprecated 2024-03-26 12:28:42 +00:00
audio PacketRouter directly notify RtpTransportControllerSender when sending 2024-03-28 09:27:43 +00:00
build_overrides Roll chromium_revision 2024-03-15 07:58:00 +00:00
call Update WebRTC code version (2024-04-02T04:04:27). 2024-04-02 05:52:13 +00:00
common_audio Provide test output path with OutputPathWithRandomDirectory 1/n 2024-02-15 07:35:00 +00:00
common_video Deprecate VideoFrame::timestamp() and set_timestamp 2024-03-13 11:08:37 +00:00
data Remove old data files. 2018-10-05 14:40:21 +00:00
docs add xctest to gn args for ios sim 2024-03-05 08:37:00 +00:00
examples Remove remaining .cc files from rtc_media_base 2024-03-12 14:09:38 +00:00
experiments Cleanup RttMult experiment as launched 2024-04-02 08:22:55 +00:00
g3doc Update TODO example in the style guide. 2023-11-21 23:11:09 +00:00
infra Re-enable msan bots 2024-03-15 10:47:02 +00:00
logging Expose AudioLevel as an absl::optional struct in api/rtp_headers.h 2024-03-22 10:07:47 +00:00
media Update FakeVideoEncoderFactory to rely on webrtc::Environment 2024-03-25 18:52:03 +00:00
modules Reland "Mark frames with inter_layer_predicted=true as delta frames" 2024-04-02 18:59:58 +00:00
net/dcsctp Reapply "dcsctp: Add per-stream-limit, refactor limits." 2024-03-15 13:27:37 +00:00
p2p Mark cricket port type constants as deprecated 2024-03-26 12:28:42 +00:00
pc pc: Increase timeout for EndToEndCallWithSctpDataChannelFullBuffer 2024-03-27 11:09:05 +00:00
resources Ignore .binarypb files. 2023-10-30 14:56:36 +00:00
rtc_base Cleanup RttMult experiment as launched 2024-04-02 08:22:55 +00:00
rtc_tools In IvfVideoFrameGenerator test helper allow to pass webrtc::Environment at construction 2024-03-22 16:39:54 +00:00
sdk Roll chromium_revision 566136c383..0d298af41c (1274799:1277684) 2024-03-30 16:33:59 +00:00
stats [Stats] Migrate from the RTCStatsMember type alias to absl::optional. 2024-01-25 21:56:08 +00:00
system_wrappers Use //third_party/cpu_features directly 2023-06-02 07:17:36 +00:00
test Reland "FrameCadenceAdapter keep track of Input framerate" 2024-03-27 12:58:03 +00:00
tools_webrtc Add directory for ChromiumOS specific tools 2024-02-26 03:46:59 +00:00
video Cleanup RttMult experiment as launched 2024-04-02 08:22:55 +00:00
.clang-format Add IncludeBlocks to clang-format. 2021-02-03 16:29:07 +00:00
.git-blame-ignore-revs Add formatting CLs to .git-blame-ignore-revs 2023-05-07 09:27:47 +00:00
.gitignore Add .cache to .gitignore. 2021-01-20 15:01:07 +00:00
.gn Disable checks for googletest for WebRTC 2024-02-27 12:05:12 +00:00
.mailmap Add .mailmap for git. 2022-02-20 14:22:13 +00:00
.style.yapf Configure YAPF to follow PEP-8 altogether 2023-09-22 10:32:11 +00:00
.vpython3 Update to vpython 3.11 and remove .vpython (v2.x) 2024-01-25 11:12:20 +00:00
AUTHORS Expose setCodecPreferences/getCapabilities for iOS 2024-01-23 13:54:26 +00:00
BUILD.gn Add environment_construction poison 2023-11-27 11:44:50 +00:00
CODE_OF_CONDUCT.md Reland "Migrate WebRTC documentation to new renderer" 2023-01-31 09:30:04 +00:00
codereview.settings Don't add webrtc-reviews@ to CC, it can be added globally on Gerrit 2018-10-25 08:19:53 +00:00
DEPS Roll chromium_revision 8eb858dcab..5350dd2460 (1277494:1281218) 2024-04-02 18:30:14 +00:00
DIR_METADATA Move metadata in OWNERS files to DIR_METADATA files. 2021-02-08 19:09:33 +00:00
ENG_REVIEW_OWNERS Remove phoglund from ENG_REVIEW_OWNERS 2021-10-08 08:29:42 +00:00
LICENSE Moving src/webrtc into src/. 2017-09-15 04:25:06 +00:00
license_template.txt
native-api.md Reland "Migrate WebRTC documentation to new renderer" 2023-01-31 09:30:04 +00:00
OWNERS Add infra owners file 2022-12-02 09:21:47 +00:00
OWNERS_INFRA Allow to keep old python style for existing files. 2023-10-17 13:52:56 +00:00
PATENTS Moving src/webrtc into src/. 2017-09-15 04:25:06 +00:00
PRESUBMIT.py Implement Newline Check in the Presubmit 2024-01-23 07:50:56 +00:00
presubmit_test.py tools_webrtc dir converted to py3 + top level PRESUBMIT script 2022-02-08 14:42:26 +00:00
presubmit_test_mocks.py tools_webrtc dir converted to py3 + top level PRESUBMIT script 2022-02-08 14:42:26 +00:00
pylintrc Configure Pylint to follow PEP-8 2023-09-25 15:56:09 +00:00
pylintrc_old_style Allow to keep old python style for existing files. 2023-10-17 13:52:56 +00:00
README.chromium [ssci] Added Shipped field to READMEs 2023-07-12 07:31:06 +00:00
README.md doc: Follow up link rename in I2dbe1ef0c74a0de8c5619b522fab39527e797d9c 2023-05-26 09:20:16 +00:00
WATCHLISTS Remove xooglers from WATCHLISTS and OWNERS 2022-11-30 15:33:25 +00:00
webrtc.gni Set rtc_use_h265 to enable_hevc_parser_and_hw_decoder in Chromium builds 2024-03-27 13:33:11 +00:00
webrtc_lib_link_test.cc Deprecate RtcEventLogFactory constructor taking unused parameter 2023-12-07 21:46:56 +00:00
whitespace.txt Revert "Test new tree." 2024-01-31 08:50:04 +00:00

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.

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.

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

Development

See here for instructions on how to get started developing with the native code.

Authoritative list of directories that contain the native API header files.

More info