J'ai retrouvé ça dans mon dossier search de cdi4dc... mais je ne sais plus à quoi ça correspond exactement (mouarf j'ai pas mis de commentaires... ) :
int main(int argc, char* argv[]) {
unsigned int datalength;
if (argc < 2) {
printf("syntax : gap [data sector length]\n");
return 1;
}
sscanf(argv[1], "%d", &datalength);
// LBA c'est aussi = (((M*60)+S)*75+F)-150
printf("Outer Lead Out : %d\n", ((11702 + datalength)) - 150);
return 0;
}Sinon j'ai aussi un autre prog de "recherche" que j'avais fait mais là encore, pas de comms donc je ne sais plus à quoi ça correspond (je sais juste que je m'en servais pour calculer une valeur quelqu'onque à foutre dans l'header du CDI) :
/* Conversion function: from logical block adresses to minute,second,frame
*/
int lba_2_msf (long lba, int *m, int* s, int* f) {
#ifdef __follow_redbook__
if (lba >= -150 && lba < 405000) { /* lba <= 404849 */
#else
if (lba >= -150) {
#endif
lba += 150;
} else if (lba >= -45150 && lba <= -151) {
lba += 450150;
} else
return 1;
*m = lba / 60 / 75;
lba -= (*m)*60*75;
*s = lba / 75;
lba -= (*s)*75;
*f = lba;
return 0;
}
int msf_2_lba(int m, int s, int f) {
int lba;
lba = (((m * 60) + s) * 75 + f) - 150;
return lba;
}
int main(int argc, char* argv[]) {
unsigned int m, s, f, lba, sizeofdatatrack;
if (argc < 2) {
printf("syntax : lba <msinfo>\n");
return 1;
}
sscanf(argv[1], "%d", &lba);
lba_2_msf(lba, &m, &s, &f);
lba = msf_2_lba(m, s, f);
printf("MSINFO (LBA) : %d\n", lba);
printf("MSF : %02d:%02d:%02d\n", m, s, f);
//301 = nb secteurs track audio
//11702 = notre msinfo/lba pour commencer track02
// le 150 chai pas c'est comme ça
printf("Outer Lead Out : %d\n", ((301 + 11702 + (lba - 1))) - 150);
//outel lead out valeur donnée par pfctoc.dll de padus, ce calcul donne la m value
return 0;
}