Files
AnyPS5/docs/dev/debt/libwebrtc.md
T

6.2 KiB

libwebrtc technical debt

Unknown function info

  • 385 exports (60 without a known name, bound by NID) (libwebrtc) - every function export of libwebrtc.sprx from the firmware 13.60 export table that the next section does not implement, names from aerolib.csv only where tools/nid_names.py compute_nid reproduces the NID. Signatures, parameter layouts and behaviour are unknown; every export throws through NotImplemented_nid_no_patch
  • 31 data exports (libwebrtc) - the module also exports 31 data objects (+qcl2IzxTzg, -ix-knPYqWA, 00mefEErs+Y, 5FM0YOa3NWc, 67nsSkXmJ7E, 7I2xDnqfDV4, 8Dzy4JayJSU, CVCDyAzGrhI, HpbtuVdvO-w, PGIpx6NnFLE, Q+xnDp4KI-s, QXDv9OpZNvM, aOOjLmup+u4, g5USRJNh3bU, hvpHGXjlpbk, iU6+qODNSjU, jpkYoOv34AM, lHLJlq3NEqE, lQJvoyxHov4, nUaORqH85DQ, o6LS+08kOUs, oh8srl3AcNE, oslHzys1vV0, sp5NqvqDdHw, t66Gw3OIpSo, tr8vseK8-ro, uSis0q+bv6k, uTz5pEKL+hM, uxkudCJIYJA, whHm70jlRXw, yW0sV3sCdPA); they are not defined, so imports of them stay unresolved until their layout is known

Public source implementations

  • Source revision (libwebrtc) - the module's exact WebRTC revision is not identified. Its rtc:: names and InterleavedView resampler overloads place it between M127 (branch-heads/6533) and M134 (branch-heads/6998), so the exports below follow code that is the same at both. Nothing is checked on the console. Closes when: the revision is identified and the exports are compared with the console.
  • absl::numbers_internal::FastIntToBuffer(int, char*) (libwebrtc) - follows the abseil both branches pin, 65ef38d368 and d212a71416: the decimal text and a NUL, returning a pointer to the NUL. For magnitudes from 10 to 99999999 its 8-byte store also zeroes the bytes after the digits up to 8 from the first digit. A null buffer, which abseil writes through, throws. Closes when: compared with the console.
  • rtc::TimeMillis and rtc::TimeMicros (libwebrtc) - follow TimeNanos and the POSIX SystemTimeNanos in time_utils.cc and system_time.cc, the same at both branches: the guest CLOCK_MONOTONIC in nanoseconds, divided down. Whether the module is built with WEBRTC_EXCLUDE_SYSTEM_TIME and a console clock of its own is unknown. No export sets a clock for testing, so the g_clock path is left out. A failing clock_gettime throws. Closes when: compared with the console.
  • rtc::ExpFilter::Reset and Apply (libwebrtc) - adapted from exp_filter.cc, with its WebRTC copyright notice and BSD licence at the top of the file, on the 12-byte alpha_, filtered_ and max_ layout of exp_filter.h. -1 marks both an unset output and no maximum, so an output that lands on exactly -1 restarts the filter on the next sample, as upstream does. The last bit of a result can differ if the console build fuses the multiply-adds. A null filter throws. Closes when: compared with the console.
  • webrtc::rtcp::CommonHeader::Parse (libwebrtc) - adapted from common_header.cc, with its WebRTC copyright notice and BSD licence at the top of the file, on the 16-byte layout of common_header.h: packet type, count or format and padding size at 0 to 2, payload size at 4 and payload pointer at 8. Its checks run in the same order, so a short buffer or a wrong version leaves the header untouched and the later failures leave the fields already parsed. The RTC_LOG(LS_WARNING) message each failure logs upstream is not emitted. A null header, or a null buffer of 4 bytes or more, which upstream reads, throws. Closes when: the warnings are logged through libwebrtc's logging and the parse is compared with the console.
  • WebRtcOpus encoder functions (libwebrtc) - the 16 WebRtcOpus_* encoder exports are adapted from opus_interface.cc, with its WebRTC copyright notice and BSD licence at the top of the file. They encode through the bundled libopus 1.6.1, not WebRTC's pinned copy, so packet bytes can differ. Signatures match at both revisions; M127 only adds a DTX change behind the WebRTC-Audio-OpusAvoidNoisePumpingDuringDtx field trial, which stays off because InitFieldTrialsFromString throws. Frames over 60 ms, up to 120 ms, throw: they depend on WEBRTC_OPUS_SUPPORT_120MS_PTIME. A null encoder or buffer in Encode, which upstream reads, throws. Closes when: the build flag is known and packets are compared with the console.
  • WebRtcVad_Create, WebRtcVad_Free, WebRtcVad_Init, WebRtcVad_set_mode and WebRtcVad_Process use the opaque-handle C API and validation rules from upstream WebRTC, with the signal-processing core from libfvad. PS5 signatures and classification parity are not measured; differences between the console core and this WebRTC-derived revision remain unverified. Handles are host allocations and expose no guest-visible object layout.