psxavenc: refactor str2/str2cd output to match xa/xacd output cleanup
This commit is contained in:
parent
f623e56035
commit
bf5cd4eeb8
|
@ -23,23 +23,22 @@ freely, subject to the following restrictions:
|
|||
|
||||
#include "common.h"
|
||||
|
||||
void init_sector_buffer_video(uint8_t *buffer, settings_t *settings) {
|
||||
int offset;
|
||||
void init_sector_buffer_video(psx_cdrom_sector_mode2_t *buffer, settings_t *settings) {
|
||||
if (settings->format == FORMAT_STR2CD) {
|
||||
memset(buffer, 0, 2352);
|
||||
memset(buffer+0x001, 0xFF, 10);
|
||||
buffer[0x00F] = 0x02;
|
||||
offset = 0x10;
|
||||
memset(buffer, 0, PSX_CDROM_SECTOR_SIZE);
|
||||
memset(buffer->sync + 1, 0xFF, 10);
|
||||
buffer->header.mode = 0x02;
|
||||
} else {
|
||||
memset(buffer, 0, 2336);
|
||||
offset = 0;
|
||||
memset(buffer->subheader, 0, PSX_CDROM_SECTOR_SIZE);
|
||||
}
|
||||
|
||||
buffer[offset+0] = settings->file_number;
|
||||
buffer[offset+1] = settings->channel_number & 0x1F;
|
||||
buffer[offset+2] = 0x08 | 0x40;
|
||||
buffer[offset+3] = 0x00;
|
||||
memcpy(buffer + offset + 4, buffer + offset, 4);
|
||||
buffer->subheader[0].file = settings->file_number;
|
||||
buffer->subheader[0].channel = settings->channel_number & PSX_CDROM_SECTOR_XA_CHANNEL_MASK;
|
||||
buffer->subheader[0].submode =
|
||||
PSX_CDROM_SECTOR_XA_SUBMODE_DATA
|
||||
| PSX_CDROM_SECTOR_XA_SUBMODE_RT;
|
||||
buffer->subheader[0].coding = 0;
|
||||
memcpy(buffer->subheader + 1, buffer->subheader, sizeof(psx_cdrom_sector_xa_subheader_t));
|
||||
}
|
||||
|
||||
void calculate_edc_data(uint8_t *buffer)
|
||||
|
|
|
@ -124,7 +124,7 @@ typedef struct {
|
|||
} settings_t;
|
||||
|
||||
// cdrom.c
|
||||
void init_sector_buffer_video(uint8_t *buffer, settings_t *settings);
|
||||
void init_sector_buffer_video(psx_cdrom_sector_mode2_t *buffer, settings_t *settings);
|
||||
void calculate_edc_data(uint8_t *buffer);
|
||||
|
||||
// decoding.c
|
||||
|
|
|
@ -306,7 +306,7 @@ void encode_file_str(settings_t *settings, FILE *output) {
|
|||
|
||||
if ((j%interleave) < video_sectors_per_block) {
|
||||
// Video sector
|
||||
init_sector_buffer_video(buffer, settings);
|
||||
init_sector_buffer_video((psx_cdrom_sector_mode2_t*) buffer, settings);
|
||||
encode_sector_str(settings->video_frames, buffer, settings);
|
||||
} else {
|
||||
// Audio sector
|
||||
|
@ -342,7 +342,7 @@ void encode_file_str(settings_t *settings, FILE *output) {
|
|||
}
|
||||
}
|
||||
|
||||
fwrite(buffer, sector_size, 1, output);
|
||||
fwrite(buffer + 2352 - sector_size, sector_size, 1, output);
|
||||
|
||||
time_t t = get_elapsed_time(settings);
|
||||
if (t) {
|
||||
|
|
|
@ -614,13 +614,8 @@ void encode_sector_str(uint8_t *video_frames, uint8_t *output, settings_t *setti
|
|||
header[0x00E] = (uint8_t)(settings->state_vid.bytes_used>>16);
|
||||
header[0x00F] = (uint8_t)(settings->state_vid.bytes_used>>24);
|
||||
|
||||
if (settings->format == FORMAT_STR2CD) {
|
||||
memcpy(output + 0x018, header, sizeof(header));
|
||||
memcpy(output + 0x018 + 0x020, settings->state_vid.frame_output + settings->state_vid.frame_data_offset, 2016);
|
||||
} else {
|
||||
memcpy(output + 0x008, header, sizeof(header));
|
||||
memcpy(output + 0x008 + 0x020, settings->state_vid.frame_output + settings->state_vid.frame_data_offset, 2016);
|
||||
}
|
||||
memcpy(output + 0x018, header, sizeof(header));
|
||||
memcpy(output + 0x018 + 0x020, settings->state_vid.frame_output + settings->state_vid.frame_data_offset, 2016);
|
||||
|
||||
settings->state_vid.frame_data_offset += 2016;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue