[XMA] convert GetNextPacketReadOffset from recursion to iterative loop

This commit is contained in:
Herman S.
2026-02-20 17:50:23 +09:00
parent 470e62af22
commit 51c5936566

View File

@@ -587,19 +587,12 @@ const uint8_t* XmaContextNew::GetNextPacket(
const uint32_t XmaContextNew::GetNextPacketReadOffset( const uint32_t XmaContextNew::GetNextPacketReadOffset(
uint8_t* buffer, uint32_t next_packet_index, uint8_t* buffer, uint32_t next_packet_index,
uint32_t current_input_packet_count) { uint32_t current_input_packet_count) {
if (next_packet_index >= current_input_packet_count) { // Scan forward for the next packet that contains a new frame.
return kBitsPerPacketHeader; while (next_packet_index < current_input_packet_count) {
}
uint8_t* next_packet = buffer + (next_packet_index * kBytesPerPacket); uint8_t* next_packet = buffer + (next_packet_index * kBytesPerPacket);
const uint32_t packet_frame_offset = xma::GetPacketFrameOffset(next_packet); const uint32_t packet_frame_offset = xma::GetPacketFrameOffset(next_packet);
if (packet_frame_offset > kMaxFrameSizeinBits) { if (packet_frame_offset <= kMaxFrameSizeinBits) {
const uint32_t offset = GetNextPacketReadOffset(
buffer, next_packet_index + 1, current_input_packet_count);
return offset;
}
const uint32_t new_input_buffer_offset = const uint32_t new_input_buffer_offset =
(next_packet_index * kBitsPerPacket) + packet_frame_offset; (next_packet_index * kBitsPerPacket) + packet_frame_offset;
@@ -607,6 +600,11 @@ const uint32_t XmaContextNew::GetNextPacketReadOffset(
id(), new_input_buffer_offset, packet_frame_offset, id(), new_input_buffer_offset, packet_frame_offset,
next_packet_index, current_input_packet_count); next_packet_index, current_input_packet_count);
return new_input_buffer_offset; return new_input_buffer_offset;
}
next_packet_index++;
}
return kBitsPerPacketHeader;
} }
const uint32_t XmaContextNew::GetAmountOfBitsToRead( const uint32_t XmaContextNew::GetAmountOfBitsToRead(