mirror of
https://github.com/vgmstream/vgmstream.git
synced 2024-12-24 04:14:50 +01:00
38 lines
1.1 KiB
C
38 lines
1.1 KiB
C
|
#ifndef _UBI_CKD_CWAV_STREAMFILE_H_
|
||
|
#define _UBI_CKD_CWAV_STREAMFILE_H_
|
||
|
#include "deblock_streamfile.h"
|
||
|
|
||
|
static void block_callback(STREAMFILE *sf, deblock_io_data *data) {
|
||
|
uint32_t chunk_type = read_u32be(data->physical_offset + 0x00, sf);
|
||
|
uint32_t chunk_size = read_u32le(data->physical_offset + 0x04, sf);
|
||
|
|
||
|
if (chunk_type == get_id32be("RIFF")) {
|
||
|
data->data_size = 0x0;
|
||
|
data->skip_size = 0x0;
|
||
|
data->block_size = 0x0c;
|
||
|
}
|
||
|
else {
|
||
|
data->data_size = chunk_size;
|
||
|
data->skip_size = 0x08;
|
||
|
data->block_size = data->data_size + data->skip_size;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* Deblocks CWAV streams inside RIFF */
|
||
|
static STREAMFILE* setup_ubi_ckd_cwav_streamfile(STREAMFILE* sf) {
|
||
|
STREAMFILE *new_sf = NULL;
|
||
|
deblock_config_t cfg = {0};
|
||
|
|
||
|
cfg.stream_start = 0x00;
|
||
|
cfg.stream_size = get_streamfile_size(sf);
|
||
|
cfg.block_callback = block_callback;
|
||
|
|
||
|
/* setup sf */
|
||
|
new_sf = open_wrap_streamfile(sf);
|
||
|
new_sf = open_io_deblock_streamfile_f(new_sf, &cfg);
|
||
|
new_sf = open_fakename_streamfile_f(new_sf, NULL, "bcwav");
|
||
|
return new_sf;
|
||
|
}
|
||
|
|
||
|
#endif /* _UBI_CKD_CWAV_STREAMFILE_H_ */
|