Changeset 87048 in vbox for trunk/src/VBox
- Timestamp:
- Dec 7, 2020 2:44:34 PM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 141794
- Location:
- trunk/src/VBox
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Storage/DevATA.cpp
r86481 r87048 2003 2003 int rc; 2004 2004 uint64_t cbBlockRegion = 0; 2005 VDREGIONDATAFORM enmDataForm; 2005 2006 2006 2007 Assert(s->uTxDir == PDMMEDIATXDIR_FROM_DEVICE); … … 2016 2017 2017 2018 rc = pDevR3->pDrvMedia->pfnQueryRegionPropertiesForLba(pDevR3->pDrvMedia, iATAPILBA, NULL, NULL, 2018 &cbBlockRegion, NULL);2019 &cbBlockRegion, &enmDataForm); 2019 2020 if (RT_SUCCESS(rc)) 2020 2021 { … … 2069 2070 { 2070 2071 uint8_t abTmp[2352]; 2072 uint8_t cbSkip; 2073 2071 2074 rc = pDevR3->pDrvMedia->pfnRead(pDevR3->pDrvMedia, (uint64_t)i * 2352, &abTmp[0], 2352); 2072 2075 if (RT_FAILURE(rc)) 2073 2076 break; 2074 2077 2075 memcpy(pbBuf, &abTmp[16], 2048); 2078 /* Mode 2 has an additional subheader before user data; we need to 2079 * skip 16 bytes for Mode 1 (sync + header) and 20 bytes for Mode 2 + 2080 * (sync + header + subheader). 2081 */ 2082 switch (enmDataForm) { 2083 case VDREGIONDATAFORM_MODE2_2352: 2084 case VDREGIONDATAFORM_XA_2352: 2085 cbSkip = 24; 2086 break; 2087 case VDREGIONDATAFORM_MODE1_2352: 2088 cbSkip = 16; 2089 break; 2090 default: 2091 AssertMsgFailed(("Unexpected region form (%#u), using default skip value\n", enmDataForm)); 2092 cbSkip = 16; 2093 } 2094 memcpy(pbBuf, &abTmp[cbSkip], 2048); 2076 2095 pbBuf += 2048; 2077 2096 } -
trunk/src/VBox/Storage/CUE.cpp
r82968 r87048 96 96 CUEKEYWORD_MODE1_2048, 97 97 CUEKEYWORD_MODE1_2352, 98 CUEKEYWORD_MODE2_2352, 98 99 CUEKEYWORD_AUDIO, 99 100 CUEKEYWORD_REM … … 253 254 {RT_STR_TUPLE("MODE1/2048"), CUEKEYWORD_MODE1_2048}, 254 255 {RT_STR_TUPLE("MODE1/2352"), CUEKEYWORD_MODE1_2352}, 256 {RT_STR_TUPLE("MODE2/2352"), CUEKEYWORD_MODE2_2352}, 255 257 {RT_STR_TUPLE("AUDIO"), CUEKEYWORD_AUDIO}, 256 258 {RT_STR_TUPLE("REM"), CUEKEYWORD_REM} … … 960 962 if ( cueTokenizerSkipIfIsKeywordEqual(pTokenizer, CUEKEYWORD_AUDIO) 961 963 || cueTokenizerSkipIfIsKeywordEqual(pTokenizer, CUEKEYWORD_MODE1_2048) 962 || cueTokenizerSkipIfIsKeywordEqual(pTokenizer, CUEKEYWORD_MODE1_2352)) 964 || cueTokenizerSkipIfIsKeywordEqual(pTokenizer, CUEKEYWORD_MODE1_2352) 965 || cueTokenizerSkipIfIsKeywordEqual(pTokenizer, CUEKEYWORD_MODE2_2352)) 963 966 { 964 967 /* … … 981 984 pRegion->cbBlock = 2352; 982 985 pRegion->enmDataForm = VDREGIONDATAFORM_MODE1_2352; 986 } 987 else if (enmDataMode == CUEKEYWORD_MODE2_2352) 988 { 989 pRegion->cbBlock = 2352; 990 pRegion->enmDataForm = VDREGIONDATAFORM_MODE2_2352; 983 991 } 984 992 else if (enmDataMode == CUEKEYWORD_AUDIO)
Note:
See TracChangeset
for help on using the changeset viewer.