File indexing completed on 2024-04-14 04:43:16
0001 /* AUDEX CDDA EXTRACTOR 0002 * SPDX-FileCopyrightText: Copyright (C) 2007 Marco Nelles 0003 * <https://userbase.kde.org/Audex> 0004 * 0005 * SPDX-License-Identifier: GPL-3.0-or-later 0006 */ 0007 0008 #include "discidcalculator.h" 0009 0010 quint32 DiscIDCalculator::CDDBId(const QList<quint32> &discSignature) 0011 { 0012 quint32 cksum = 0; 0013 for (int i = 0; i < discSignature.count() - 1; ++i) 0014 cksum += p_digitsum(discSignature[i] / 75); 0015 return (((cksum % 0xff) << 24) | (FRAMES2SEC(discSignature.last() - discSignature.first()) << 8) | (discSignature.count() - 1)); 0016 } 0017 0018 quint32 DiscIDCalculator::AccurateRipId1(const QList<quint32> &discSignature) 0019 { 0020 quint32 result = 0; 0021 for (int i = 0; i < discSignature.count(); ++i) { 0022 result += discSignature[i] - discSignature.first(); 0023 } 0024 return result; 0025 } 0026 0027 quint32 DiscIDCalculator::AccurateRipId2(const QList<quint32> &discSignature) 0028 { 0029 quint32 result = 1; 0030 for (int i = 1; i < discSignature.count(); ++i) 0031 result += ((discSignature[i] - discSignature.first()) * (i + 1)); 0032 return result; 0033 }