mirror of
https://github.com/WonderfulToolchain/psxavenc.git
synced 2025-12-17 03:20:26 +00:00
Flip loop point endianness, add notes to README
This commit is contained in:
@@ -81,11 +81,14 @@ Notes:
|
||||
at the beginning of the file. The header is always 48 bytes long for `vag`
|
||||
files, while in the case of `vagi` files it is padded to the size specified
|
||||
using the `-a` option (2048 bytes by default). The `vagi` format extends the
|
||||
standard .vag header by adding the following fields:
|
||||
header with the following fields:
|
||||
- the file's interleave size at offset `0x08-0x0B` (little endian);
|
||||
- the loop start offset in bytes-per-channel, if any, at offset `0x14-0x17`
|
||||
(little endian);
|
||||
- the file's channel count at offset `0x1E`.
|
||||
(big endian). *Note that this field is specific to psxavenc and not part of*
|
||||
*the standard interleaved .vag header*;
|
||||
- the file's channel count at offset `0x1E`. *This field is not part of the*
|
||||
*interleaved .vag header either, but can be found in other variants of the*
|
||||
*format.*
|
||||
|
||||
- The `spu` and `vag` formats support encoding a loop point as part of the ADPCM
|
||||
data, while `vagi` supports storing one in the header for use by the stream
|
||||
|
||||
@@ -131,7 +131,7 @@ static void write_vag_header(const args_t *args, int size_per_channel, uint8_t *
|
||||
header[0x12] = (uint8_t)(args->audio_frequency >> 8);
|
||||
header[0x13] = (uint8_t)args->audio_frequency;
|
||||
|
||||
// Loop point in bytes (little endian, non-standard)
|
||||
// Loop point in bytes (big endian, non-standard)
|
||||
if (args->format == FORMAT_VAGI && args->audio_loop_point >= 0) {
|
||||
int loop_start_block = (args->audio_loop_point * args->audio_frequency) / (PSX_AUDIO_SPU_SAMPLES_PER_BLOCK * 1000);
|
||||
|
||||
@@ -139,15 +139,14 @@ static void write_vag_header(const args_t *args, int size_per_channel, uint8_t *
|
||||
loop_start_block++;
|
||||
|
||||
int loop_point = loop_start_block * PSX_AUDIO_SPU_BLOCK_SIZE;
|
||||
header[0x14] = (uint8_t)loop_point;
|
||||
header[0x15] = (uint8_t)(loop_point >> 8);
|
||||
header[0x16] = (uint8_t)(loop_point >> 16);
|
||||
header[0x17] = (uint8_t)(loop_point >> 24);
|
||||
header[0x14] = (uint8_t)(loop_point >> 24);
|
||||
header[0x15] = (uint8_t)(loop_point >> 16);
|
||||
header[0x16] = (uint8_t)(loop_point >> 8);
|
||||
header[0x17] = (uint8_t)loop_point;
|
||||
}
|
||||
|
||||
// Number of channels (little endian, non-standard)
|
||||
// Number of channels (non-standard)
|
||||
header[0x1E] = (uint8_t)args->audio_channels;
|
||||
header[0x1F] = 0x00;
|
||||
|
||||
// Filename
|
||||
int name_offset = strlen(args->output_file);
|
||||
|
||||
Reference in New Issue
Block a user