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 }