diff --git a/scripts/extract_ktsl2stbin_opus.py b/scripts/extract_ktsl2stbin_opus.py index 324a567..11fc965 100755 --- a/scripts/extract_ktsl2stbin_opus.py +++ b/scripts/extract_ktsl2stbin_opus.py @@ -14,9 +14,11 @@ def crc32ogg(seq): return crc -def paginate(sequence: int, content: bytes): +def paginate(sequence: int, is_last: bool, content: bytes): # Version, flags, position, serial number, sequence number, checksum, segments, segment table flags = 2 if sequence == 0 else 0 + if is_last: + flags |= 4 page = bytearray( b"OggS" + struct.pack( @@ -27,8 +29,6 @@ def paginate(sequence: int, content: bytes): + content ) struct.pack_into("I", ktss[offset : offset + 4]) - out.write(paginate(sequence, ktss[offset + 8 : offset + 8 + packet_len])) + is_last = offset + 8 + packet_len >= len(ktss) + out.write( + paginate(sequence, is_last, ktss[offset + 8 : offset + 8 + packet_len]) + ) offset += packet_len + 8 sequence += 1