Capnp memoryview (#36163)

* lock

* bump opendbc

* fix one

* and

* Add a memoryview fallback in webrtcd

* fix

* revert

* rerevert

* bump to master

---------

Co-authored-by: Kacper Rączy <gfw.kra@gmail.com>
pull/36085/merge
Shane Smiskol 2 days ago committed by GitHub
parent 5164555c4f
commit 6ed8f07cb6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      opendbc_repo
  2. 4
      pyproject.toml
  3. 2
      system/loggerd/tests/test_loggerd.py
  4. 2
      system/webrtc/device/video.py
  5. 11
      system/webrtc/webrtcd.py
  6. 811
      uv.lock

@ -1 +1 @@
Subproject commit c9e7868cb830978c2254ef9f012b843bb4f0ddd7 Subproject commit 0c8676f74cf386ac914faa80a6b14303693ccde9

@ -23,7 +23,7 @@ dependencies = [
# core # core
"cffi", "cffi",
"scons", "scons",
"pycapnp==2.1.0", "pycapnp",
"Cython", "Cython",
"setuptools", "setuptools",
"numpy >=2.0", "numpy >=2.0",
@ -119,7 +119,7 @@ dev = [
"tabulate", "tabulate",
"types-requests", "types-requests",
"types-tabulate", "types-tabulate",
"raylib", "raylib==5.5.0.2", # 5.5.0.3 has regression with gui_set_style
] ]
tools = [ tools = [

@ -178,7 +178,7 @@ class TestLoggerd:
assert logged_params['AccessToken'] == b'', f"DONT_LOG param value was logged: {repr(logged_params['AccessToken'])}" assert logged_params['AccessToken'] == b'', f"DONT_LOG param value was logged: {repr(logged_params['AccessToken'])}"
for param_key, initData_key, v in fake_params: for param_key, initData_key, v in fake_params:
assert getattr(initData, initData_key) == v assert getattr(initData, initData_key) == v
assert logged_params[param_key].decode() == v assert logged_params[param_key].tobytes().decode() == v
@pytest.mark.xdist_group("camera_encoder_tests") # setting xdist group ensures tests are run in same worker, prevents encoderd from crashing @pytest.mark.xdist_group("camera_encoder_tests") # setting xdist group ensures tests are run in same worker, prevents encoderd from crashing
def test_rotation(self): def test_rotation(self):

@ -30,7 +30,7 @@ class LiveStreamVideoStreamTrack(TiciVideoStreamTrack):
evta = getattr(msg, msg.which()) evta = getattr(msg, msg.which())
packet = av.Packet(evta.header + evta.data) packet = av.Packet(evta.header.tobytes() + evta.data.tobytes())
packet.time_base = self._time_base packet.time_base = self._time_base
packet.pts = self._pts packet.pts = self._pts

@ -22,6 +22,13 @@ from openpilot.system.webrtc.schema import generate_field
from cereal import messaging, log from cereal import messaging, log
# pycapnp 2.2.0+ is using memoryview instead of bytes for data fields
def memoryview_fallback(obj):
if isinstance(obj, memoryview):
return obj.tobytes().decode()
return obj
class CerealOutgoingMessageProxy: class CerealOutgoingMessageProxy:
def __init__(self, sm: messaging.SubMaster): def __init__(self, sm: messaging.SubMaster):
self.sm = sm self.sm = sm
@ -37,6 +44,8 @@ class CerealOutgoingMessageProxy:
msg_dict = [self.to_json(msg) for msg in msg_content] msg_dict = [self.to_json(msg) for msg in msg_content]
elif isinstance(msg_content, bytes): elif isinstance(msg_content, bytes):
msg_dict = msg_content.decode() msg_dict = msg_content.decode()
elif isinstance(msg_content, memoryview):
msg_dict = msg_content.tobytes().decode()
else: else:
msg_dict = msg_content msg_dict = msg_content
@ -51,7 +60,7 @@ class CerealOutgoingMessageProxy:
msg_dict = self.to_json(self.sm[service]) msg_dict = self.to_json(self.sm[service])
mono_time, valid = self.sm.logMonoTime[service], self.sm.valid[service] mono_time, valid = self.sm.logMonoTime[service], self.sm.valid[service]
outgoing_msg = {"type": service, "logMonoTime": mono_time, "valid": valid, "data": msg_dict} outgoing_msg = {"type": service, "logMonoTime": mono_time, "valid": valid, "data": msg_dict}
encoded_msg = json.dumps(outgoing_msg).encode() encoded_msg = json.dumps(outgoing_msg, default=memoryview_fallback).encode()
for channel in self.channels: for channel in self.channels:
channel.send(encoded_msg) channel.send(encoded_msg)

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save