mirror of
https://git.h3cjp.net/H3cJP/citra.git
synced 2024-11-27 22:42:47 +00:00
Merge pull request #4763 from liushuyu/dsp_aac
audio_core: dsp_hle: use better f32 to s16 algorithm
This commit is contained in:
commit
c445fe4515
|
@ -218,6 +218,7 @@ std::optional<BinaryResponse> FFMPEGDecoder::Impl::Decode(const BinaryRequest& r
|
|||
for (std::size_t channel(0); channel < decoded_frame->channels; channel++) {
|
||||
std::memcpy(&val_float, decoded_frame->data[channel] + current_pos,
|
||||
sizeof(val_float));
|
||||
val_float = std::clamp(val_float, -1.0f, 1.0f);
|
||||
s16 val = static_cast<s16>(0x7FFF * val_float);
|
||||
out_streams[channel].push_back(val & 0xFF);
|
||||
out_streams[channel].push_back(val >> 8);
|
||||
|
|
|
@ -129,7 +129,7 @@ MFOutputState WMFDecoder::Impl::DecodingLoop(ADTSData adts_header,
|
|||
f32 val_f32;
|
||||
for (std::size_t i = 0; i < output_buffer->size();) {
|
||||
for (std::size_t channel = 0; channel < adts_header.channels; channel++) {
|
||||
val_f32 = output_buffer->at(i);
|
||||
val_f32 = std::clamp(output_buffer->at(i), -1.0f, 1.0f);
|
||||
s16 val = static_cast<s16>(0x7FFF * val_f32);
|
||||
out_streams[channel].push_back(val & 0xFF);
|
||||
out_streams[channel].push_back(val >> 8);
|
||||
|
|
Loading…
Reference in a new issue