This commit is contained in:
chudov
2008-11-30 00:25:54 +00:00
parent 5801c9b605
commit 524097b059

View File

@@ -805,6 +805,11 @@ namespace CUETools.Processor
if (General.FindCUELine(_attributes, "REM", "GENRE") == null && GetCommonTag("GENRE") != null) if (General.FindCUELine(_attributes, "REM", "GENRE") == null && GetCommonTag("GENRE") != null)
General.SetCUELine(_attributes, "REM", "GENRE", GetCommonTag("GENRE"), true); General.SetCUELine(_attributes, "REM", "GENRE", GetCommonTag("GENRE"), true);
} }
CUELine cddbDiscIdLine = General.FindCUELine(_attributes, "REM", "DISCID");
_cddbDiscIdTag = cddbDiscIdLine != null && cddbDiscIdLine.Params.Count == 3 ? cddbDiscIdLine.Params[2] : null;
if (_cddbDiscIdTag == null) _cddbDiscIdTag = GetCommonTag("DISCID");
if (_accurateRipId == null) if (_accurateRipId == null)
_accurateRipId = GetCommonTag("ACCURATERIPID"); _accurateRipId = GetCommonTag("ACCURATERIPID");
@@ -833,23 +838,27 @@ namespace CUETools.Processor
_accurateRipId = AccurateRipVerify.CalculateAccurateRipId(tocFromLog); _accurateRipId = AccurateRipVerify.CalculateAccurateRipId(tocFromLog);
} }
CUELine cddbDiscIdLine = General.FindCUELine(_attributes, "REM", "DISCID"); if (_accurateRipId == null && _dataTrackLength != null)
_cddbDiscIdTag = cddbDiscIdLine != null && cddbDiscIdLine.Params.Count == 3 ? cddbDiscIdLine.Params[2] : null;
if (_cddbDiscIdTag == null) _cddbDiscIdTag = GetCommonTag("DISCID");
if (_dataTrackLength != null)
{ {
CDImageLayout toc2 = new CDImageLayout(_toc); CDImageLayout toc2 = new CDImageLayout(_toc);
toc2.AddTrack(new CDTrack((uint)_toc.TrackCount, _toc.Length + 152U * 75U, _dataTrackLength.Value, false)); toc2.AddTrack(new CDTrack((uint)_toc.TrackCount, _toc.Length + 152U * 75U, _dataTrackLength.Value, false));
_accurateRipIdActual = _accurateRipId = AccurateRipVerify.CalculateAccurateRipId(toc2); _accurateRipId = AccurateRipVerify.CalculateAccurateRipId(toc2);
} }
else
if (_dataTrackLength == null && _cddbDiscIdTag != null)
{ {
_accurateRipIdActual = AccurateRipVerify.CalculateAccurateRipId(_toc); uint cddbDiscIdNum;
if (_accurateRipId == null) if (uint.TryParse(_cddbDiscIdTag, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out cddbDiscIdNum) && (cddbDiscIdNum & 0xff) == TrackCount + 1)
_accurateRipId = _accurateRipIdActual; {
uint lengthFromTag = ((cddbDiscIdNum >> 8) & 0xffff);
_minDataTrackLength = ((lengthFromTag + _toc[1].Start / 75) - 152) * 75 - _toc.Length;
}
} }
_accurateRipIdActual = AccurateRipVerify.CalculateAccurateRipId(_toc);
if (_accurateRipId == null)
_accurateRipId = _accurateRipIdActual;
_arVerify = new AccurateRipVerify(_toc); _arVerify = new AccurateRipVerify(_toc);
//if (!_dataTrackLength.HasValue && _cddbDiscIdTag != null) //if (!_dataTrackLength.HasValue && _cddbDiscIdTag != null)
@@ -1484,7 +1493,7 @@ namespace CUETools.Processor
toc2.AddTrack(new CDTrack((uint)_toc.TrackCount, _toc.Length + 152 * 75, minDTL, false)); toc2.AddTrack(new CDTrack((uint)_toc.TrackCount, _toc.Length + 152 * 75, minDTL, false));
for (uint dtl = minDTL; dtl < minDTL + 75; dtl++) for (uint dtl = minDTL; dtl < minDTL + 75; dtl++)
{ {
toc2[_toc.TrackCount].Length = dtl; toc2[toc2.TrackCount].Length = dtl;
_accurateRipId = AccurateRipVerify.CalculateAccurateRipId(toc2); _accurateRipId = AccurateRipVerify.CalculateAccurateRipId(toc2);
_arVerify.ContactAccurateRip(_accurateRipId); _arVerify.ContactAccurateRip(_accurateRipId);
if (_arVerify.AccResult != HttpStatusCode.NotFound) if (_arVerify.AccResult != HttpStatusCode.NotFound)