CD-ROM image backend: Fix handling of CD-XA Mode 2 Form 1 images with a sector size of 2336.
This commit is contained in:
@@ -509,11 +509,12 @@ cdi_can_read_pvd(track_file_t *file, uint64_t sector_size, int mode2, int form)
|
|||||||
uint64_t seek = 16ULL * sector_size; /* First VD is located at sector 16. */
|
uint64_t seek = 16ULL * sector_size; /* First VD is located at sector 16. */
|
||||||
|
|
||||||
if (sector_size == RAW_SECTOR_SIZE) {
|
if (sector_size == RAW_SECTOR_SIZE) {
|
||||||
if (!mode2 || (form == 0))
|
if (mode2 && (form > 0))
|
||||||
seek += 16;
|
|
||||||
else
|
|
||||||
seek += 24;
|
seek += 24;
|
||||||
}
|
else
|
||||||
|
seek += 16;
|
||||||
|
} else if (form > 0)
|
||||||
|
seek += 8;
|
||||||
|
|
||||||
file->read(file, pvd, seek, COOKED_SECTOR_SIZE);
|
file->read(file, pvd, seek, COOKED_SECTOR_SIZE);
|
||||||
|
|
||||||
@@ -582,6 +583,10 @@ cdi_load_iso(cd_img_t *cdi, const char *filename)
|
|||||||
trk.sector_size = 2328;
|
trk.sector_size = 2328;
|
||||||
trk.mode2 = 1;
|
trk.mode2 = 1;
|
||||||
trk.form = 2;
|
trk.form = 2;
|
||||||
|
} else if (cdi_can_read_pvd(trk.file, 2336, 1, 1)) {
|
||||||
|
trk.sector_size = 2336;
|
||||||
|
trk.mode2 = 1;
|
||||||
|
trk.form = 1;
|
||||||
} else if (cdi_can_read_pvd(trk.file, RAW_SECTOR_SIZE, 1, 0)) {
|
} else if (cdi_can_read_pvd(trk.file, RAW_SECTOR_SIZE, 1, 0)) {
|
||||||
trk.sector_size = RAW_SECTOR_SIZE;
|
trk.sector_size = RAW_SECTOR_SIZE;
|
||||||
trk.mode2 = 1;
|
trk.mode2 = 1;
|
||||||
@@ -908,6 +913,7 @@ cdi_load_cue(cd_img_t *cdi, const char *cuefile)
|
|||||||
trk.attr = DATA_TRACK;
|
trk.attr = DATA_TRACK;
|
||||||
trk.mode2 = 1;
|
trk.mode2 = 1;
|
||||||
} else if (!strcmp(type, "MODE2/2336")) {
|
} else if (!strcmp(type, "MODE2/2336")) {
|
||||||
|
trk.form = 1;
|
||||||
trk.sector_size = 2336;
|
trk.sector_size = 2336;
|
||||||
trk.attr = DATA_TRACK;
|
trk.attr = DATA_TRACK;
|
||||||
trk.mode2 = 1;
|
trk.mode2 = 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user