⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cdrdao.c

📁 linux下的MPEG1
💻 C
📖 第 1 页 / 共 3 页
字号:
		+ CDIO_CD_HEADER_SIZE;	      cd->tocent[i].datasize     = CDIO_CD_FRAMESIZE; 	      cd->tocent[i].endsize      = CDIO_CD_EDC_SIZE 		+ CDIO_CD_M1F1_ZERO_SIZE + CDIO_CD_ECC_SIZE;	      switch(cd->disc_mode) {	      case CDIO_DISC_MODE_NO_INFO:		cd->disc_mode = CDIO_DISC_MODE_CD_DATA;		break;	      case CDIO_DISC_MODE_CD_DATA:	      case CDIO_DISC_MODE_CD_MIXED:	      case CDIO_DISC_MODE_ERROR:		/* Disc type stays the same. */		break;	      case CDIO_DISC_MODE_CD_DA:	      case CDIO_DISC_MODE_CD_XA:		cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;		break;	      default:		cd->disc_mode = CDIO_DISC_MODE_ERROR;	      }	    }	  } else if (0 == strcmp ("MODE1_RAW", psz_field)) {	    if (NULL != cd) {	      cd->tocent[i].track_format = TRACK_FORMAT_DATA;	      cd->tocent[i].blocksize = CDIO_CD_FRAMESIZE_RAW;	      cd->tocent[i].datastart = CDIO_CD_SYNC_SIZE 		+ CDIO_CD_HEADER_SIZE;	      cd->tocent[i].datasize  = CDIO_CD_FRAMESIZE; 	      cd->tocent[i].endsize   = CDIO_CD_EDC_SIZE 		+ CDIO_CD_M1F1_ZERO_SIZE + CDIO_CD_ECC_SIZE;	      switch(cd->disc_mode) {	      case CDIO_DISC_MODE_NO_INFO:		cd->disc_mode = CDIO_DISC_MODE_CD_DATA;		break;	      case CDIO_DISC_MODE_CD_DATA:	      case CDIO_DISC_MODE_CD_MIXED:	      case CDIO_DISC_MODE_ERROR:		/* Disc type stays the same. */		break;	      case CDIO_DISC_MODE_CD_DA:	      case CDIO_DISC_MODE_CD_XA:		cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;		break;	      default:		cd->disc_mode = CDIO_DISC_MODE_ERROR;	      }	    }	  } else if (0 == strcmp ("MODE2", psz_field)) {	    if (NULL != cd) {	      cd->tocent[i].track_format = TRACK_FORMAT_XA;	      cd->tocent[i].datastart = CDIO_CD_SYNC_SIZE 		+ CDIO_CD_HEADER_SIZE;	      cd->tocent[i].datasize = M2RAW_SECTOR_SIZE;	      cd->tocent[i].endsize   = 0;	      switch(cd->disc_mode) {	      case CDIO_DISC_MODE_NO_INFO:		cd->disc_mode = CDIO_DISC_MODE_CD_XA;		break;	      case CDIO_DISC_MODE_CD_XA:	      case CDIO_DISC_MODE_CD_MIXED:	      case CDIO_DISC_MODE_ERROR:		/* Disc type stays the same. */		break;	      case CDIO_DISC_MODE_CD_DA:	      case CDIO_DISC_MODE_CD_DATA:		cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;		break;	      default:		cd->disc_mode = CDIO_DISC_MODE_ERROR;	      }	    }	  } else if (0 == strcmp ("MODE2_FORM1", psz_field)) {	    if (NULL != cd) {	      cd->tocent[i].track_format = TRACK_FORMAT_XA;	      cd->tocent[i].datastart = CDIO_CD_SYNC_SIZE 		+ CDIO_CD_HEADER_SIZE;	      cd->tocent[i].datasize  = CDIO_CD_FRAMESIZE_RAW;  	      cd->tocent[i].endsize   = 0;	      switch(cd->disc_mode) {	      case CDIO_DISC_MODE_NO_INFO:		cd->disc_mode = CDIO_DISC_MODE_CD_XA;		break;	      case CDIO_DISC_MODE_CD_XA:	      case CDIO_DISC_MODE_CD_MIXED:	      case CDIO_DISC_MODE_ERROR:		/* Disc type stays the same. */		break;	      case CDIO_DISC_MODE_CD_DA:	      case CDIO_DISC_MODE_CD_DATA:		cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;		break;	      default:		cd->disc_mode = CDIO_DISC_MODE_ERROR;	      }	    }	  } else if (0 == strcmp ("MODE2_FORM2", psz_field)) {	    if (NULL != cd) {	      cd->tocent[i].track_format = TRACK_FORMAT_XA;	      cd->tocent[i].datastart    = CDIO_CD_SYNC_SIZE 		+ CDIO_CD_HEADER_SIZE + CDIO_CD_SUBHEADER_SIZE;	      cd->tocent[i].datasize     = CDIO_CD_FRAMESIZE;	      cd->tocent[i].endsize      = CDIO_CD_SYNC_SIZE 		+ CDIO_CD_ECC_SIZE;	      switch(cd->disc_mode) {	      case CDIO_DISC_MODE_NO_INFO:		cd->disc_mode = CDIO_DISC_MODE_CD_XA;		break;	      case CDIO_DISC_MODE_CD_XA:	      case CDIO_DISC_MODE_CD_MIXED:	      case CDIO_DISC_MODE_ERROR:		/* Disc type stays the same. */		break;	      case CDIO_DISC_MODE_CD_DA:	      case CDIO_DISC_MODE_CD_DATA:		cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;		break;	      default:		cd->disc_mode = CDIO_DISC_MODE_ERROR;	      }	    }	  } else if (0 == strcmp ("MODE2_FORM_MIX", psz_field)) {	    if (NULL != cd) {	      cd->tocent[i].track_format = TRACK_FORMAT_XA;	      cd->tocent[i].datasize     = M2RAW_SECTOR_SIZE;	      cd->tocent[i].blocksize    = CDIO_CD_FRAMESIZE_RAW;	      cd->tocent[i].datastart    = CDIO_CD_SYNC_SIZE + 		CDIO_CD_HEADER_SIZE + CDIO_CD_SUBHEADER_SIZE;	      cd->tocent[i].track_green  = true;	      cd->tocent[i].endsize      = 0;	      switch(cd->disc_mode) {	      case CDIO_DISC_MODE_NO_INFO:		cd->disc_mode = CDIO_DISC_MODE_CD_XA;		break;	      case CDIO_DISC_MODE_CD_XA:	      case CDIO_DISC_MODE_CD_MIXED:	      case CDIO_DISC_MODE_ERROR:		/* Disc type stays the same. */		break;	      case CDIO_DISC_MODE_CD_DA:	      case CDIO_DISC_MODE_CD_DATA:		cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;		break;	      default:		cd->disc_mode = CDIO_DISC_MODE_ERROR;	      }	    }	  } else if (0 == strcmp ("MODE2_RAW", psz_field)) {	    if (NULL != cd) {	      cd->tocent[i].track_format = TRACK_FORMAT_XA;	      cd->tocent[i].blocksize    = CDIO_CD_FRAMESIZE_RAW;	      cd->tocent[i].datastart    = CDIO_CD_SYNC_SIZE + 		CDIO_CD_HEADER_SIZE + CDIO_CD_SUBHEADER_SIZE;	      cd->tocent[i].datasize     = CDIO_CD_FRAMESIZE;	      cd->tocent[i].track_green  = true;	      cd->tocent[i].endsize      = 0;	      switch(cd->disc_mode) {	      case CDIO_DISC_MODE_NO_INFO:		cd->disc_mode = CDIO_DISC_MODE_CD_XA;		break;	      case CDIO_DISC_MODE_CD_XA:	      case CDIO_DISC_MODE_CD_MIXED:	      case CDIO_DISC_MODE_ERROR:		/* Disc type stays the same. */		break;	      case CDIO_DISC_MODE_CD_DA:	      case CDIO_DISC_MODE_CD_DATA:		cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;		break;	      default:		cd->disc_mode = CDIO_DISC_MODE_ERROR;	      }	    }	  } else {	    cdio_log(log_level, "%s line %d after TRACK:",		     psz_cue_name, i_line);	    cdio_log(log_level, "'%s' not a valid mode.", psz_field);	    goto err_exit;	  }	}	if (NULL != (psz_field = strtok (NULL, " \t\n\r"))) {	  /* todo: set sub-channel-mode */	  if (0 == strcmp ("RW", psz_field))	    ;	  else if (0 == strcmp ("RW_RAW", psz_field))	    ;	}	if (NULL != (psz_field = strtok (NULL, " \t\n\r"))) {	  goto format_error;	}		/* track flags */	/* [NO] COPY | [NO] PRE_EMPHASIS */      } else if (0 == strcmp ("NO", psz_keyword)) {	if (NULL != (psz_field = strtok (NULL, " \t\n\r"))) {	  if (0 == strcmp ("COPY", psz_field)) {	    if (NULL != cd) 	      cd->tocent[i].flags &= ~CDIO_TRACK_FLAG_COPY_PERMITTED;	    	  } else if (0 == strcmp ("PRE_EMPHASIS", psz_field))	    if (NULL != cd) {	      cd->tocent[i].flags &= ~CDIO_TRACK_FLAG_PRE_EMPHASIS;	      goto err_exit;	    }	} else {	  goto format_error;	}	if (NULL != (psz_field = strtok (NULL, " \t\n\r"))) {	  goto format_error;	}      } else if (0 == strcmp ("COPY", psz_keyword)) {	if (NULL != cd)	  cd->tocent[i].flags |= CDIO_TRACK_FLAG_COPY_PERMITTED;      } else if (0 == strcmp ("PRE_EMPHASIS", psz_keyword)) {	if (NULL != cd)	  cd->tocent[i].flags |= CDIO_TRACK_FLAG_PRE_EMPHASIS;	/* TWO_CHANNEL_AUDIO */      } else if (0 == strcmp ("TWO_CHANNEL_AUDIO", psz_keyword)) {	if (NULL != cd)	  cd->tocent[i].flags &= ~CDIO_TRACK_FLAG_FOUR_CHANNEL_AUDIO;	/* FOUR_CHANNEL_AUDIO */      } else if (0 == strcmp ("FOUR_CHANNEL_AUDIO", psz_keyword)) {	if (NULL != cd)	  cd->tocent[i].flags |= CDIO_TRACK_FLAG_FOUR_CHANNEL_AUDIO;		/* ISRC "CCOOOYYSSSSS" */      } else if (0 == strcmp ("ISRC", psz_keyword)) {	if (NULL != (psz_field = strtok (NULL, "\"\t\n\r"))) {	  if (NULL != cd) 	    cd->tocent[i].isrc = strdup(psz_field);	} else {	  goto format_error;	}		/* SILENCE <length> */      } else if (0 == strcmp ("SILENCE", psz_keyword)) {	UNIMPLIMENTED_MSG;		/* ZERO <length> */      } else if (0 == strcmp ("ZERO", psz_keyword)) {	UNIMPLIMENTED_MSG;		/* [FILE|AUDIOFILE] "<filename>" <start> [<length>] */      } else if (0 == strcmp ("FILE", psz_keyword) 		 || 0 == strcmp ("AUDIOFILE", psz_keyword)) {	if (0 <= i) {	  if (NULL != (psz_field = strtok (NULL, "\"\t\n\r"))) {	    if (NULL != cd) {	      cd->tocent[i].filename = strdup (psz_field);	      /* Todo: do something about reusing existing files. */	      if (!(cd->tocent[i].data_source = cdio_stdio_new (psz_field))) {		cdio_log (log_level, 			  "%s line %d: can't open file `%s' for reading", 			   psz_cue_name, i_line, psz_field);		goto err_exit;	      }	    }	  }	  	  if (NULL != (psz_field = strtok (NULL, " \t\n\r"))) {	    lba_t lba = cdio_lsn_to_lba(cdio_mmssff_to_lba (psz_field));	    if (CDIO_INVALID_LBA == lba) {	      cdio_log(log_level, "%s line %d: invalid MSF string %s", 		       psz_cue_name, i_line, psz_field);	      goto err_exit;	    }	    	    if (NULL != cd) {	      cd->tocent[i].start_lba = lba;	      cdio_lba_to_msf(lba, &(cd->tocent[i].start_msf));	    }	  }	  if (NULL != (psz_field = strtok (NULL, " \t\n\r")))	    if (NULL != cd)	      cd->tocent[i].length = cdio_mmssff_to_lba (psz_field);	  if (NULL != (psz_field = strtok (NULL, " \t\n\r"))) {	    goto format_error;	  }	} else {	  goto not_in_global_section;	}		/* DATAFILE "<filename>" <start> [<length>] */      } else if (0 == strcmp ("DATAFILE", psz_keyword)) {	goto unimplimented_error;		/* FIFO "<fifo path>" [<length>] */      } else if (0 == strcmp ("FIFO", psz_keyword)) {	goto unimplimented_error;		/* START MM:SS:FF */      } else if (0 == strcmp ("START", psz_keyword)) {	if (0 <= i) {	  if (NULL != (psz_field = strtok (NULL, " \t\n\r"))) {	    /* todo: line is too long! */	    if (NULL != cd) {	      cd->tocent[i].start_lba += cdio_mmssff_to_lba (psz_field);	      cdio_lba_to_msf(cd->tocent[i].start_lba, 			      &(cd->tocent[i].start_msf));	    }	  }	  	  if (NULL != (psz_field = strtok (NULL, " \t\n\r"))) {	    goto format_error;	  }	} else {	  goto not_in_global_section;	}		/* PREGAP MM:SS:FF */      } else if (0 == strcmp ("PREGAP", psz_keyword)) {	if (0 <= i) {	  if (NULL != (psz_field = strtok (NULL, " \t\n\r"))) {	    if (NULL != cd) 	      cd->tocent[i].pregap = cdio_mmssff_to_lba (psz_field);	  } else {	    goto format_error;	  }	  if (NULL != (psz_field = strtok (NULL, " \t\n\r"))) {	    goto format_error;	  } 	} else {	  goto not_in_global_section;	}	  	  /* INDEX MM:SS:FF */      } else if (0 == strcmp ("INDEX", psz_keyword)) {	if (0 <= i) {	  if (NULL != (psz_field = strtok (NULL, " \t\n\r"))) {	    if (NULL != cd) {#if 0	      if (1 == cd->tocent[i].nindex) {		cd->tocent[i].indexes[1] = cd->tocent[i].indexes[0];		cd->tocent[i].nindex++;	      }	      cd->tocent[i].indexes[cd->tocent[i].nindex++] = 		cdio_mmssff_to_lba (psz_field) + cd->tocent[i].indexes[0];#else 	      ;	      #endif	    }	  } else {	    goto format_error;	  }	  if (NULL != (psz_field = strtok (NULL, " \t\n\r"))) {	    goto format_error;	  }	}  else {	  goto not_in_global_section;	}	  	  /* CD_TEXT { ... } */	  /* todo: opening { must be on same line as CD_TEXT */      } else if (0 == strcmp ("CD_TEXT", psz_keyword)) {	  if (NULL == (psz_field = strtok (NULL, " \t\n\r"))) {	    goto format_error;	  }	  if ( 0 == strcmp( "{", psz_field ) ) {	    i_cdtext_nest++;	  } else {	    cdio_log (log_level, 		      "%s line %d: expecting '{'", psz_cue_name, i_line);	    goto err_exit;	  }	             } else if (0 == strcmp ("LANGUAGE_MAP", psz_keyword)) {	/* LANGUAGE d { ... } */      } else if (0 == strcmp ("LANGUAGE", psz_keyword)) {	  if (NULL == (psz_field = strtok (NULL, " \t\n\r"))) {	    goto format_error;	  }	  /* Language number */	  if (NULL == (psz_field = strtok (NULL, " \t\n\r"))) {	    goto format_error;	  }	  if ( 0 == strcmp( "{", psz_field ) ) {	    i_cdtext_nest++;	  }      } else if (0 == strcmp ("{", psz_keyword)) {	i_cdtext_nest++;      } else if (0 == strcmp ("}", psz_keyword)) {	if (i_cdtext_nest > 0) i_cdtext_nest--;      } else if ( CDTEXT_INVALID != 		  (cdtext_key = cdtext_is_keyword (psz_keyword)) ) {	if (-1 == i) {	  if (NULL != cd) {	    cdtext_set (cdtext_key, 			strtok (NULL, "\"\t\n\r"), 			&(cd->gen.cdtext));	  }	} else {	  if (NULL != cd) {	    cdtext_set (cdtext_key, 			strtok (NULL, "\"\t\n\r"), 			&(cd->gen.cdtext_track[i]));	  }	}	/* unrecognized line */      } else {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -