Skip to content

Commit 7877447

Browse files
committed
feat(reader): use optimization only when beneficial
1 parent d1e545e commit 7877447

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

src/python/pose_format/pose.py

+11-2
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,17 @@ def read(buffer: Union[bytes, BytesIO], pose_body: Type[PoseBody] = NumPyPoseBod
4747
Pose
4848
Pose object.
4949
"""
50-
reader = BufferReader(buffer) if isinstance(buffer, bytes) else BytesIOReader(buffer)
51-
reader.expect_to_read(PoseHeaderCache.end_offset or 10 * 1024) # Expect to read the header at least (or 10kb)
50+
51+
# Use BytesIO reader optimization only when start/end is specified, otherwise, it is faster to read from buffer
52+
if isinstance(buffer, bytes):
53+
reader = BufferReader(buffer)
54+
else:
55+
if kwargs.get("start_frame", None) or kwargs.get("end_frame", None) or kwargs.get("start_time", None) or kwargs.get("end_time", None):
56+
reader = BytesIOReader(buffer)
57+
else:
58+
reader = BufferReader(buffer.read())
59+
60+
reader.expect_to_read((PoseHeaderCache.end_offset or 10 * 1024) + 100) # Expect to read the header at least (or 10kb)
5261
header = PoseHeader.read(reader)
5362
body = pose_body.read(header, reader, **kwargs)
5463

0 commit comments

Comments
 (0)