Adapted -chek_media to peculiarities of DVD and BD

This commit is contained in:
2014-04-19 11:52:07 +00:00
parent 7df29faa93
commit 8d4867c9a4
5 changed files with 93 additions and 62 deletions

View File

@ -2610,6 +2610,7 @@ int Xorriso_check_interval(struct XorrisO *xorriso, struct SpotlisT *spotlist,
{
int i, j, ret, total_count= 0, sectors= -1, sector_size= -1, skip_reading;
int prev_quality= -1, quality= -1, retry= 0, profile_no, is_cd= 0;
int eccb_size= 16;
int start_sec, end_sec, first_value, fret, suspect_tao_end= 0;
char profile_name[80];
int start_lba= 0;
@ -2657,10 +2658,15 @@ int Xorriso_check_interval(struct XorrisO *xorriso, struct SpotlisT *spotlist,
goto ex;
ret= burn_disc_get_profile(drive, &profile_no, profile_name);
if(ret > 0) {
if(profile_no >= 0x08 && profile_no <= 0x0a)
if(profile_no >= 0x08 && profile_no <= 0x0a) {
is_cd= 1;
eccb_size= 1;
} else if(profile_no >= 0x40 && profile_no <= 0x43) {
eccb_size= 32;
} else if(burn_drive_get_drive_role(drive) != 1) {
eccb_size= 1;
}
}
if(job->sector_map != NULL) {
Sectorbitmap_get_layout(job->sector_map, &sectors, &sector_size, 0);
@ -2815,7 +2821,6 @@ abort_check:;
goto ex;
data_pt= state.chunk[state.chunk_w_idx];
}
ret= burn_read_data(drive, ((off_t) (i + from_lba)) * (off_t) 2048,
data_pt, to_read * (off_t) 2048, &data_count,
(4 * !retry) | (16 * !!suspect_tao_end));
@ -2847,10 +2852,12 @@ abort_check:;
quality= Xorriso_read_quality_tao_enD;
else
quality= Xorriso_read_quality_unreadablE;
if(retry)
to_read= data_count / 2048 + 1;
} else
if(retry) /* skip one eccb_size */
to_read= data_count / 2048 + eccb_size;
} else { /* (can hardly happen) */
quality= Xorriso_read_quality_partiaL;
}
fret= Xorriso_eval_problem_status(xorriso, ret, 1|2);
if(fret<0)
goto ex;