MCPcopy Create free account
hub / github.com/ModelTC/LightX2V / ByteBuffer

Class ByteBuffer

lightx2v/utils/va_reader_omni.py:45–82  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

43
44
45class ByteBuffer:
46 def __init__(self):
47 self.buffer = deque()
48 self.current_size = 0
49 # is the audio belonging to current turn finished
50 self.audio_finished = False
51
52 def add(self, byte_data: bytes):
53 self.buffer.append(byte_data)
54 self.current_size += len(byte_data)
55
56 def get(self, size=1024):
57 data = bytearray()
58
59 while size > 0 and len(self.buffer) > 0:
60 chunk = self.buffer.popleft()
61 if len(chunk) <= size:
62 # 如果当前数据小于size,则将当前数据全部添加到data中
63 data.extend(chunk)
64 self.current_size -= len(chunk)
65 size -= len(chunk)
66 else:
67 # 如果当前数据大于size,则将当前数据的一部分添加到data中,剩余部分留在缓冲区
68 data.extend(chunk[:size])
69 self.buffer.appendleft(chunk[size:]) # 剩余部分留在缓冲区
70 self.current_size -= size
71 size = 0
72
73 return bytes(data)
74
75 def mark_finished(self):
76 self.audio_finished = True
77
78 def has_more_voice(self):
79 return not self.audio_finished
80
81 def __len__(self):
82 return self.current_size
83
84
85class ChatAdapter:

Callers 2

__init__Method · 0.85
recv_loopMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected