Repository navigation
Conversation
The PacketOptions and rtcp::Pli destructors and OnReceivedUplinkRecoverablePacketLossFraction return at once, VideoFrameBuffer::GetI420 returns null and Vf6lJz4-bEU returns 0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Progress report (b2e43d5 → 4886fe0)📈 System libraries: 30.38% (+0.01%, +5 implemented functions) ✅ 5 implemented
⚪ 5 behaviourally empty (constant return or throw)
Changed libraries (implemented exports)
|
This was referenced Nov 3, 2026
12 tasks done
…-trivial-returns # Conflicts: # docs/dev/debt/libwebrtc.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Resolve the docs/dev/debt/libwebrtc.md conflict. Both sides changed the export count in the inventory entry title and nothing else on that line: main reads 346 exports with 60 unnamed, this branch read 342 with 59. Counted from the merged Export.cpp instead of subtracting, 341 of its 349 APS5_VABI entries still throw through NotImplemented_nid_no_patch, 59 of those bound by NID only, so the entry now reads 341 and 59. The merge also drops this branch's throwing stub of webrtc::rtcp::Pli::Parse, which main removed when boykopovar#15092 implemented it: the merged tree declares it once in include/Api.hpp and defines it in src/RtcpPli.cpp. This branch's five returning entries are unaffected, among them the Pli destructor, which is a different export. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The debt inventory count conflicted: main 340 (60 NID-only) after six RecursiveCriticalSection exports moved out of Export.cpp, ours 341 (59) after five immediate returns. Counted from the merged tree with a brace-matching parser: 335 throwing exports, 59 of them NID-only. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Recount the throwing exports from the merged tree: 334, 59 of them bound by NID. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
12 tasks done
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
12 tasks done
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Five libwebrtc exports threw. In firmware 13.42 each one returns at once, and this change does the same:
webrtc::PacketOptions::~PacketOptions()(D1)3yjhuJS+93svoid (void* self)webrtc::rtcp::Pli::~Pli()(D1)OWYOJU0yBRYvoid (void* self)webrtc::AudioEncoder::OnReceivedUplinkRecoverablePacketLossFraction(float)JBEfUOB-Xa8void (void* self, float)webrtc::VideoFrameBuffer::GetI420() constILLU2NiyjU8const void* (const void* self)nullptrlibwebrtcUnknown37Vf6lJz4-bEUint (void), unverifiedThe parameters come from the mangled names. The return types come from WebRTC
8d78f5de6c, the revisiondocs/dev/debt/libwebrtc.mdalready cites:api/video/video_frame_buffer.h:91declaresvirtual const I420BufferInterface* GetI420() const, andvideo_frame_buffer.cc:39returnsnullptr.api/audio_codecs/audio_encoder.cc:94isvoid AudioEncoder::OnReceivedUplinkRecoverablePacketLossFraction(float). Its body is onlyRTC_DCHECK_NOTREACHED(), which a release build leaves out; the firmware body at0x3da0e0(below) is a loneret.The declarations in
core/libs/prx/libwebrtc/include/Api.hppchange with them.In
docs/dev/debt/libwebrtc.md, the inventory entry goes to 325 throwing exports (59 without a name), counted from the mergedExport.cpp.main56374036adstates 334 (60) but has 330 throwing exports: #14246 moved fourFileWrapperexports tosrc/FileWrapper.cppwithout lowering the count, so the 325 also corrects that. A new entry says thatVf6lJz4-bEUhas no known name or signature, and that the values are read from disassembly, not measured on a console.Nine more libwebrtc exports with the same kind of body are left out of this PR. Open PRs already implement them: #14224 (
RmsLevel), #15193 (AudioNetworkAdaptorImpl::Config), and #15265 to #15269 and #15272 (GetMdnsResponder,SetFecControllerOverride, and thePacketInfo,RateControlParameters,AudioEncoderRuntimeConfigandSmoothingFilterImpldestructors).Source
Firmware 13.42
system/common/lib/libwebrtc.sprx(sha256d59d0caf6967329b39201a2a0bd6df7b994516f21701b9801908db6735ae5314), read from disassembly, not run on a console. Export addresses come from the module's dynamic symbol table. Each body, to its return:None of the five bodies above reads an argument or stores anything. A null or invalid
thisis never dereferenced, here or in firmware.Tested
main56374036adinto the branch; the head is now4886fe077f. The only conflict was the inventory count indocs/dev/debt/libwebrtc.md, which feat(libwebrtc): implement the rtc::SocketAddress port, ipaddr, IsAnyIP, IsComplete and IsNil accessors #15261 had lowered to 334 when it implemented fivertc::SocketAddressaccessors. The merged number is counted from the mergedExport.cpp: 325 exports still throw throughNotImplemented_nid_no_patch, 59 of them bound by NID only. The same count gives 330 and 60 onmain56374036ad.4886fe077f, Windows 11 Pro 10.0.26300, WinLibs GCC, Release: 85 of 85 pass, none Not Run, with the 20guest_webrtc_*test executables rebuilt (now includingsocket_address, added onmainby feat(libwebrtc): implement the rtc::SocketAddress port, ipaddr, IsAnyIP, IsComplete and IsNil accessors #15261), pluspublic_headersand the 64public_headers_compile_*batches.mainare the same as ate0c8c01d20apart from the count line, so the negative control below was not repeated.tools/check_conventions.py --base upstream/mainon the committed head4886fe077f: all checks pass.e0c8c01d20(mainc9f43dfa1dmerged in): 84 of 84 pass, none Not Run, with the 19 test executables built at this head. The suite is the 19guest_webrtc_*tests registered at this head -file_wrapper(added onmainby feat(libwebrtc): implement FileWrapper output and ownership #14246) andaudio_codec_info,audio_decoder,audio_device_generic,audio_encoder,audio_frame,cpu_features,exp_filter,fast_int_to_buffer,ip_address,opus,recursive_critical_section,rms_level,rtcp_common_header,rtcp_pli,task_queue_base,time,trivial_returnsandvad- pluspublic_headersand the 64public_headers_compile_*batches.core/libs/prx/libwebrtc/tests/TrivialReturns.cpp:thisare unchanged.2364923fa6; the branch's diff againstmaindiffers between that head ande0c8c01d20only in the count atdocs/dev/debt/libwebrtc.md:5and one blank linemainleft after theFileWrapperentry): I putNotImplemented_nid_no_patchback at the top of the five bodies, which ismain's behaviour, and kept this branch's signatures and test. The new test then aborts with_ZN6webrtc13PacketOptionsD1Ev_nid_postfix not implemented(1 of 1 failed).tools/check_conventions.py --base upstream/mainon the committed heade0c8c01d20: all checks pass.tools/pr_overlap.py --branch feat/libwebrtc-free-trivial-returns --jobs 8at heade0c8c01d20, against 1,901 open pull requests: 33 share files with the branch. It lists 28 with conflicting lines, all indocs/dev/debt/libwebrtc.md: 27 on the inventory count entry (line 5) alone and feat(libwebrtc): implement VideoFrame width and height #15766 on lines 5 and 13. No row reports a shared export or a shared new file. The run failed closed (exit 2) and lists 3 more (docs(debt): separate entries with blank lines and drop derived export totals #14212, feat(libwebrtc): implement CurrentThreadId #15154, feat(libwebrtc): implement the webrtc::RtpExtension destructor #15264) in its "Some comparisons could not be completed" table, which it does not compare line by line. I grepped the added and removed lines of all 31 listed pull requests' diffs for the five exports' names and NIDs, and none of them names any of the five. Whichever lands second recounts the inventory entry.mainc9f43dfa1dconflicted only next to the new debt entry. The merged number is counted from the mergedExport.cpprather than subtracted: 330 of its 338APS5_VABIentries still throw throughNotImplemented_nid_no_patch, 59 of them bound by NID only. The same count gives 335 of 338 and 60 onmainc9f43dfa1d.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)🤖 Generated with Claude Code