[APU][Janky] Fixed issues with incorrect frames on streamed data

This requires a lot more research and test data!
This commit is contained in:
Gliniak 2022-11-03 20:56:36 +01:00
parent dae508500a
commit ba66373d8c

View file

@ -446,8 +446,12 @@ void XmaContext::Decode(XMA_CONTEXT_DATA* data) {
reuse_input_buffer = TrySetupNextLoop(data, true); reuse_input_buffer = TrySetupNextLoop(data, true);
} }
if (!reuse_input_buffer) { if (!reuse_input_buffer) {
if (current_input_packet_count == 1) {
SwapInputBuffer(data);
} else {
is_stream_done_ = true; is_stream_done_ = true;
} }
}
return; return;
} }
} }
@ -584,8 +588,12 @@ void XmaContext::Decode(XMA_CONTEXT_DATA* data) {
reuse_input_buffer = TrySetupNextLoop(data, true); reuse_input_buffer = TrySetupNextLoop(data, true);
} }
if (!reuse_input_buffer) { if (!reuse_input_buffer) {
if (current_input_packet_count == 1) {
SwapInputBuffer(data);
} else {
is_stream_done_ = true; is_stream_done_ = true;
} }
}
return; return;
} }
} }
@ -678,7 +686,11 @@ void XmaContext::Decode(XMA_CONTEXT_DATA* data) {
reuse_input_buffer = TrySetupNextLoop(data, true); reuse_input_buffer = TrySetupNextLoop(data, true);
} }
if (!reuse_input_buffer) { if (!reuse_input_buffer) {
if (current_input_packet_count == 1) {
SwapInputBuffer(data);
} else {
is_stream_done_ = true; is_stream_done_ = true;
}
if (output_rb.write_offset() == output_rb.read_offset()) { if (output_rb.write_offset() == output_rb.read_offset()) {
data->output_buffer_valid = 0; data->output_buffer_valid = 0;
} }
@ -699,8 +711,12 @@ void XmaContext::Decode(XMA_CONTEXT_DATA* data) {
reuse_input_buffer = TrySetupNextLoop(data, true); reuse_input_buffer = TrySetupNextLoop(data, true);
} }
if (!reuse_input_buffer) { if (!reuse_input_buffer) {
if (current_input_packet_count == 1) {
SwapInputBuffer(data);
} else {
is_stream_done_ = true; is_stream_done_ = true;
} }
}
break; break;
} }
offset = offset =