Fixed linux build

This commit is contained in:
Vladislav Mikhalin 2024-11-02 09:55:41 +03:00
parent d7f78e6720
commit af2df7d889
3 changed files with 17 additions and 9 deletions

View file

@ -454,8 +454,8 @@ int PS4_SYSV_ABI sceAjmBatchStartBuffer(u32 context, u8* p_batch, u32 batch_size
case Identifier::AjmIdentInputRunBuf: {
auto& buffer = AjmBufferExtract<AjmChunkBuffer>(p_current);
u8* p_begin = reinterpret_cast<u8*>(buffer.p_address);
job.input.buffer.append_range(
std::vector<u8>(p_begin, p_begin + buffer.header.size));
job.input.buffer.insert(job.input.buffer.end(), p_begin,
p_begin + buffer.header.size);
break;
}
case Identifier::AjmIdentInputControlBuf: {

View file

@ -76,7 +76,7 @@ void AjmAt9Decoder::Decode(const AjmJobInput* input, AjmJobOutput* output) {
if (in_buf.empty() || out_buf.empty()) {
return false;
}
if (gapless.total_samples != 0 && gapless.total_samples < gapless_decoded_samples) {
if (gapless.total_samples && gapless.total_samples < gapless_decoded_samples) {
return false;
}
return true;
@ -120,13 +120,17 @@ void AjmAt9Decoder::Decode(const AjmJobInput* input, AjmJobOutput* output) {
written = write_output({pcm_buffer.data() + start, nsamples});
gapless.skipped_samples = gapless.skip_samples;
total_decoded_samples += nsamples;
gapless_decoded_samples += nsamples;
if (gapless.total_samples != 0) {
gapless_decoded_samples += nsamples;
}
}
} else {
written =
write_output({pcm_buffer.data(), std::min(pcm_buffer.size(), samples_remain)});
total_decoded_samples += codec_info.frameSamples;
gapless_decoded_samples += codec_info.frameSamples;
if (gapless.total_samples != 0) {
gapless_decoded_samples += codec_info.frameSamples;
}
}
num_frames += 1;
@ -152,7 +156,7 @@ void AjmAt9Decoder::Decode(const AjmJobInput* input, AjmJobOutput* output) {
}
}
if (gapless_decoded_samples >= gapless.total_samples) {
if (gapless.total_samples != 0 && gapless_decoded_samples >= gapless.total_samples) {
if (flags.gapless_loop) {
ResetCodec();
}

View file

@ -148,12 +148,16 @@ void AjmMp3Decoder::Decode(const AjmJobInput* input, AjmJobOutput* output) {
write_output({reinterpret_cast<s16*>(frame->data[0]), nsamples});
gapless.skipped_samples = gapless.skip_samples;
total_decoded_samples += nsamples;
gapless_decoded_samples += nsamples;
if (gapless.total_samples != 0) {
gapless_decoded_samples += nsamples;
}
}
} else {
write_output({reinterpret_cast<s16*>(frame->data[0]), size >> 1});
total_decoded_samples += frame_samples;
gapless_decoded_samples += frame_samples;
if (gapless.total_samples != 0) {
gapless_decoded_samples += frame_samples;
}
}
av_frame_free(&frame);
if (output->p_stream) {
@ -166,7 +170,7 @@ void AjmMp3Decoder::Decode(const AjmJobInput* input, AjmJobOutput* output) {
}
}
av_packet_free(&pkt);
if (gapless_decoded_samples >= gapless.total_samples) {
if (gapless.total_samples != 0 && gapless_decoded_samples >= gapless.total_samples) {
if (flags.gapless_loop) {
gapless.skipped_samples = 0;
gapless_decoded_samples = 0;