Handle track duration with milliseconds precision. ref #244
This commit is contained in:
@@ -286,7 +286,7 @@ TagLibParser::parse(const std::filesystem::path& p, bool debug)
|
|||||||
{
|
{
|
||||||
const TagLib::AudioProperties *properties {f.audioProperties() };
|
const TagLib::AudioProperties *properties {f.audioProperties() };
|
||||||
|
|
||||||
track.duration = std::chrono::milliseconds {properties->length() * 1000};
|
track.duration = std::chrono::milliseconds {properties->lengthInMilliseconds()};
|
||||||
|
|
||||||
MetaData::AudioStream audioStream {static_cast<unsigned>(properties->bitrate() * 1000)};
|
MetaData::AudioStream audioStream {static_cast<unsigned>(properties->bitrate() * 1000)};
|
||||||
track.audioStreams = {std::move(audioStream)};
|
track.audioStreams = {std::move(audioStream)};
|
||||||
|
|||||||
@@ -591,6 +591,15 @@ CREATE TABLE IF NOT EXISTS "track_artist_link_backup" (
|
|||||||
session.getDboSession().execute("ALTER TABLE tracklist ADD last_modified_date_time TEXT");
|
session.getDboSession().execute("ALTER TABLE tracklist ADD last_modified_date_time TEXT");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static
|
||||||
|
void
|
||||||
|
migrateFromV36(Session& session)
|
||||||
|
{
|
||||||
|
// Increased precision for track durations (now in milliseconds instead of secodns)
|
||||||
|
// Just increment the scan version of the settings to make the next scheduled scan rescan everything
|
||||||
|
ScanSettings::get(session).modify()->incScanVersion();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
doDbMigration(Session& session)
|
doDbMigration(Session& session)
|
||||||
{
|
{
|
||||||
@@ -633,6 +642,7 @@ CREATE TABLE IF NOT EXISTS "track_artist_link_backup" (
|
|||||||
{33, migrateFromV33},
|
{33, migrateFromV33},
|
||||||
{34, migrateFromV34},
|
{34, migrateFromV34},
|
||||||
{35, migrateFromV35},
|
{35, migrateFromV35},
|
||||||
|
{36, migrateFromV36},
|
||||||
};
|
};
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ namespace Database
|
|||||||
class Session;
|
class Session;
|
||||||
|
|
||||||
using Version = std::size_t;
|
using Version = std::size_t;
|
||||||
static constexpr Version LMS_DATABASE_VERSION {36};
|
static constexpr Version LMS_DATABASE_VERSION {37};
|
||||||
class VersionInfo
|
class VersionInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ void parse(MetaData::IParser& parser, const std::filesystem::path& file)
|
|||||||
}
|
}
|
||||||
const auto end {std::chrono::steady_clock::now()};
|
const auto end {std::chrono::steady_clock::now()};
|
||||||
|
|
||||||
std::cout << "Parsing time: " << std::chrono::duration_cast<std::chrono::microseconds>(end - start).count() / 1000. << "ms" << std::endl;
|
std::cout << "Parsing time: " << std::fixed << std::setprecision(2) << std::chrono::duration_cast<std::chrono::microseconds>(end - start).count() / 1000. << "ms" << std::endl;
|
||||||
|
|
||||||
std::cout << "Track metadata:" << std::endl;
|
std::cout << "Track metadata:" << std::endl;
|
||||||
|
|
||||||
@@ -117,7 +117,7 @@ void parse(MetaData::IParser& parser, const std::filesystem::path& file)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::cout << "Duration: " << track->duration.count() / 1000 << "s" << std::endl;
|
std::cout << "Duration: " << std::fixed << std::setprecision(2) << track->duration.count() / 1000. << "s" << std::endl;
|
||||||
|
|
||||||
if (track->trackNumber)
|
if (track->trackNumber)
|
||||||
std::cout << "Track: " << *track->trackNumber << std::endl;
|
std::cout << "Track: " << *track->trackNumber << std::endl;
|
||||||
|
|||||||
Reference in New Issue
Block a user