From 58afb5090f3a815365b72bfecbf4d97bd819daf6 Mon Sep 17 00:00:00 2001 From: IndecisiveTurtle Date: Mon, 28 Oct 2024 01:04:08 +0200 Subject: [PATCH] ajm_at9: Return superframes decoded in a single job --- src/core/libraries/ajm/ajm.cpp | 7 ++++--- src/core/libraries/ajm/ajm_at9.cpp | 4 +++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/core/libraries/ajm/ajm.cpp b/src/core/libraries/ajm/ajm.cpp index da9c397f2..2420832cf 100644 --- a/src/core/libraries/ajm/ajm.cpp +++ b/src/core/libraries/ajm/ajm.cpp @@ -449,9 +449,10 @@ int PS4_SYSV_ABI sceAjmBatchStartBuffer(u32 context, const u8* batch, u32 batch_ const auto& in_buffer = input_run_buffers[i]; const auto& out_buffer = output_run_buffers[i]; - const auto [in_remain, out_remain, num_frames] = p_instance->Decode( - reinterpret_cast(in_buffer.p_address), in_buffer.header.size, - reinterpret_cast(out_buffer.p_address), out_buffer.header.size); + const u8* in_address = reinterpret_cast(in_buffer.p_address); + u8* out_address = reinterpret_cast(out_buffer.p_address); + const auto [in_remain, out_remain, num_frames] = p_instance->Decode(in_address, in_buffer.header.size, + out_address, out_buffer.header.size); if (p_stream != nullptr) { p_stream->input_consumed += in_buffer.header.size - in_remain; diff --git a/src/core/libraries/ajm/ajm_at9.cpp b/src/core/libraries/ajm/ajm_at9.cpp index 0ac2f7efa..ddffdc36b 100644 --- a/src/core/libraries/ajm/ajm_at9.cpp +++ b/src/core/libraries/ajm/ajm_at9.cpp @@ -65,6 +65,7 @@ std::tuple AjmAt9Decoder::Decode(const u8* in_buf, u32 in_size, u Atrac9GetCodecInfo(handle, &codec_info); int bytes_used = 0; + int num_superframes = 0; const auto ShouldDecode = [&] { if (in_size <= 0 || out_size <= 0) { @@ -97,11 +98,12 @@ std::tuple AjmAt9Decoder::Decode(const u8* in_buf, u32 in_size, u in_buf += bytes_remain; in_size -= bytes_remain; bytes_remain = codec_info.superframeSize; + num_superframes++; } } LOG_TRACE(Lib_Ajm, "Decoded {} samples, frame count: {}", decoded_samples, frame_index); - return std::tuple(in_size, out_size, num_frames); + return std::tuple(in_size, out_size, num_superframes); } } // namespace Libraries::Ajm