Skip to content

Commit 84c81f6

Browse files
committed
Changed utf8 decoding to avoid crashes with invalid characters.
1 parent 22384e3 commit 84c81f6

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

dshowcapture.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def get_devices(self):
104104

105105
def get_device(self, device_number):
106106
self.lib.get_device(self.cap, device_number, self.name_buffer, 255)
107-
name_str = str(self.name_buffer.value.decode('utf8'))
107+
name_str = str(self.name_buffer.value.decode('utf8', 'surrogateescape'))
108108
return name_str
109109

110110
def get_info(self):
@@ -113,7 +113,7 @@ def get_info(self):
113113
json_length = self.lib.get_json_length(self.cap);
114114
json_buffer = create_string_buffer(json_length)
115115
self.lib.get_json(self.cap, json_buffer, json_length);
116-
json_text = str(json_buffer.value.decode('utf8'))
116+
json_text = str(json_buffer.value.decode('utf8', 'surrogateescape'))
117117
self.info = json.loads(json_text)
118118
for cam in self.info:
119119
cam["type"] = "DirectShow"
@@ -124,7 +124,7 @@ def get_info(self):
124124
json_length = self.bm_lib.get_json_length();
125125
json_buffer = create_string_buffer(json_length)
126126
self.bm_lib.get_json(json_buffer, json_length);
127-
json_text = str(json_buffer.value.decode('utf8'))
127+
json_text = str(json_buffer.value.decode('utf8', 'surrogateescape'))
128128
bm_info = json.loads(json_text)
129129
dshow_len = len(self.info)
130130
for cam in bm_info:

input_reader.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def __init__(self, capture, width, height, fps):
3636
self.fps = fps
3737
self.device = capture
3838
escapi.count_capture_devices()
39-
self.name = str(escapi.device_name(self.device).decode('utf8'))
39+
self.name = str(escapi.device_name(self.device).decode('utf8', 'surrogateescape'))
4040
self.buffer = escapi.init_camera(self.device, self.width, self.height, self.fps)
4141
escapi.do_capture(self.device)
4242
def is_open(self):
@@ -212,7 +212,7 @@ def __init__(self, capture, raw_rgb, width, height, fps, use_dshowcapture=False,
212212
devices = escapi.count_capture_devices()
213213
found = None
214214
for i in range(devices):
215-
escapi_name = str(escapi.device_name(i).decode('utf8'))
215+
escapi_name = str(escapi.device_name(i).decode('utf8', 'surrogateescape'))
216216
if name == escapi_name:
217217
found = i
218218
if found is None:

0 commit comments

Comments
 (0)