more stuff

This commit is contained in:
auser1337 2024-10-20 00:48:27 -07:00
parent 80617cdb2a
commit 0dc4d535c3
2 changed files with 21 additions and 19 deletions

View File

@ -288,20 +288,24 @@ int PS4_SYSV_ABI sceAjmBatchStartBuffer(u32 context, const u8* batch, u32 batch_
const auto at9_instance = const auto at9_instance =
dynamic_cast<AjmAt9Decoder*>(dev->instances[instance].get()); dynamic_cast<AjmAt9Decoder*>(dev->instances[instance].get());
const auto in_buffer = reinterpret_cast<const AjmJobBuffer*>(job_ptr); const auto in_buffer = reinterpret_cast<const AjmJobBuffer*>(job_ptr);
std::memcpy( const auto params = reinterpret_cast<const SceAjmDecAt9InitializeParameters*>(
at9_instance->config_data, in_buffer->buffer);
reinterpret_cast<const SceAjmDecAt9InitializeParameters*>(in_buffer->buffer) std::memcpy(at9_instance->config_data, params->config_data,
->config_data, SCE_AT9_CONFIG_DATA_SIZE);
}
break;
case AjmJobControlFlags::Initialize | AjmJobControlFlags::Reset:
LOG_INFO(Lib_Ajm, "Resetting instance {}", instance);
dev->instances[instance]->Reset();
LOG_INFO(Lib_Ajm, "Initializing instance {}", instance);
if (dev->instances[instance]->codec_type == AjmCodecType::At9Dec) {
const auto at9_instance =
dynamic_cast<AjmAt9Decoder*>(dev->instances[instance].get());
const auto in_buffer = reinterpret_cast<const AjmJobBuffer*>(job_ptr);
const auto params = reinterpret_cast<const SceAjmDecAt9InitializeParameters*>(
in_buffer->buffer);
std::memcpy(at9_instance->config_data, params->config_data,
SCE_AT9_CONFIG_DATA_SIZE); SCE_AT9_CONFIG_DATA_SIZE);
LOG_INFO(
Lib_Ajm, "Initialize params: {}, config_data: {}, reserved: {}",
fmt::ptr(reinterpret_cast<const SceAjmDecAt9InitializeParameters*>(
in_buffer->buffer)),
fmt::ptr(reinterpret_cast<const SceAjmDecAt9InitializeParameters*>(
in_buffer->buffer)
->config_data),
reinterpret_cast<const SceAjmDecAt9InitializeParameters*>(in_buffer->buffer)
->reserved);
} }
break; break;
case AjmJobControlFlags::Resample: case AjmJobControlFlags::Resample:
@ -393,11 +397,7 @@ int PS4_SYSV_ABI sceAjmBatchWait(const u32 context, const u32 batch_id, const u3
LOG_INFO(Lib_Ajm, "called context = {}, batch_id = {}, timeout = {}", context, batch_id, LOG_INFO(Lib_Ajm, "called context = {}, batch_id = {}, timeout = {}", context, batch_id,
timeout); timeout);
if (batch_id > 0xFF) { if (batch_id > 0xFF || batch_id >= dev->batches.size()) {
return ORBIS_AJM_ERROR_INVALID_BATCH;
}
if (batch_id >= dev->batches.size()) {
return ORBIS_AJM_ERROR_INVALID_BATCH; return ORBIS_AJM_ERROR_INVALID_BATCH;
} }
@ -486,6 +486,7 @@ int PS4_SYSV_ABI sceAjmInstanceCreate(u32 context, AjmCodecType codec_type, AjmI
if (dev->curr_cursor == dev->release_cursor) { if (dev->curr_cursor == dev->release_cursor) {
return ORBIS_AJM_ERROR_OUT_OF_RESOURCES; return ORBIS_AJM_ERROR_OUT_OF_RESOURCES;
} }
ASSERT_MSG(flags.format == 0, "Only signed 16-bit PCM output is supported currently!");
const u32 index = dev->free_instances[dev->curr_cursor++]; const u32 index = dev->free_instances[dev->curr_cursor++];
dev->curr_cursor %= MaxInstances; dev->curr_cursor %= MaxInstances;
std::unique_ptr<AjmInstance> instance; std::unique_ptr<AjmInstance> instance;

View File

@ -61,6 +61,7 @@ std::tuple<u32, u32, u32> AjmAt9Decoder::Decode(const u8* in_buf, u32 in_size, u
in_size -= bytes_used; in_size -= bytes_used;
std::memcpy(out_buf, pcm_buffer, size); std::memcpy(out_buf, pcm_buffer, size);
file.write(reinterpret_cast<const char*>(pcm_buffer), size); file.write(reinterpret_cast<const char*>(pcm_buffer), size);
file.flush(); // for easier debugging
out_buf += size; out_buf += size;
out_size -= size; out_size -= size;
decoded_samples += decoder_handle->Config.FrameSamples; decoded_samples += decoder_handle->Config.FrameSamples;