mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-28 13:56:59 +01:00
Decode ATRAC9 streams after complete RIFF headers
Co-authored-by: Techx3 <56268269+Techx3@users.noreply.github.com> Co-authored-by: Ali Almohaya <17254073+Almo7aya@users.noreply.github.com>
This commit is contained in:
@@ -464,6 +464,14 @@ private:
|
|||||||
const auto* chunk = input + offset;
|
const auto* chunk = input + offset;
|
||||||
const auto chunk_size = static_cast<size_t>(AjmReadLe32(chunk + 4));
|
const auto chunk_size = static_cast<size_t>(AjmReadLe32(chunk + 4));
|
||||||
const auto payload = offset + 8;
|
const auto payload = offset + 8;
|
||||||
|
// The data chunk describes the whole stream; this job may contain only its prefix.
|
||||||
|
if (AjmFourCcEquals(chunk, 'd', 'a', 't', 'a')) {
|
||||||
|
*data_offset = payload;
|
||||||
|
result->input_consumed = payload;
|
||||||
|
result->format = GetFormat();
|
||||||
|
result->total_decoded_samples = m_total_decoded_samples;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if (payload > input_size || chunk_size > input_size - payload) {
|
if (payload > input_size || chunk_size > input_size - payload) {
|
||||||
result->result = AJM_RESULT_PARTIAL_INPUT;
|
result->result = AJM_RESULT_PARTIAL_INPUT;
|
||||||
return false;
|
return false;
|
||||||
@@ -496,12 +504,6 @@ private:
|
|||||||
LOGF("AJM ATRAC9 gapless: total=%" PRIu32 ", skip=%" PRIu16 "\n",
|
LOGF("AJM ATRAC9 gapless: total=%" PRIu32 ", skip=%" PRIu16 "\n",
|
||||||
gapless_decode.total_samples, gapless_decode.skip_samples);
|
gapless_decode.total_samples, gapless_decode.skip_samples);
|
||||||
}
|
}
|
||||||
} else if (AjmFourCcEquals(chunk, 'd', 'a', 't', 'a')) {
|
|
||||||
*data_offset = payload;
|
|
||||||
result->input_consumed = payload;
|
|
||||||
result->format = GetFormat();
|
|
||||||
result->total_decoded_samples = m_total_decoded_samples;
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto padded_size = chunk_size + (chunk_size & 1u);
|
const auto padded_size = chunk_size + (chunk_size & 1u);
|
||||||
|
|||||||
Reference in New Issue
Block a user