summaryrefslogtreecommitdiffstats
path: root/src/track/trackmetadata.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/track/trackmetadata.h')
-rw-r--r--src/track/trackmetadata.h30
1 files changed, 19 insertions, 11 deletions
diff --git a/src/track/trackmetadata.h b/src/track/trackmetadata.h
index 9ca165c4be..07bdc30b22 100644
--- a/src/track/trackmetadata.h
+++ b/src/track/trackmetadata.h
@@ -2,21 +2,27 @@
#include <QDateTime>
+#include "audio/types.h"
#include "track/albuminfo.h"
#include "track/trackinfo.h"
-
namespace mixxx {
+namespace audio {
+
+class StreamInfo;
+
+} // namespace audio
+
class TrackMetadata final {
// Audio properties
- // - read-only
- // - stored file tags
- // - adjusted by audio decoder AFTER import from file tags
- PROPERTY_SET_BYVAL_GET_BYREF(AudioSource::Bitrate, bitrate, Bitrate)
- PROPERTY_SET_BYVAL_GET_BYREF(AudioSignal::ChannelCount, channels, Channels)
- PROPERTY_SET_BYVAL_GET_BYREF(Duration, duration, Duration)
- PROPERTY_SET_BYVAL_GET_BYREF(AudioSignal::SampleRate, sampleRate, SampleRate)
+ // - read-only
+ // - stored in file tags
+ // - adjusted when opening the audio stream (if available)
+ PROPERTY_SET_BYVAL_GET_BYREF(audio::ChannelCount, channels, ChannelCount)
+ PROPERTY_SET_BYVAL_GET_BYREF(audio::SampleRate, sampleRate, SampleRate)
+ PROPERTY_SET_BYVAL_GET_BYREF(audio::Bitrate, bitrate, Bitrate)
+ PROPERTY_SET_BYVAL_GET_BYREF(Duration, duration, Duration)
// Track properties
// - read-write
@@ -24,7 +30,7 @@ class TrackMetadata final {
PROPERTY_SET_BYVAL_GET_BYREF(AlbumInfo, albumInfo, AlbumInfo)
PROPERTY_SET_BYVAL_GET_BYREF(TrackInfo, trackInfo, TrackInfo)
-public:
+ public:
TrackMetadata() = default;
TrackMetadata(TrackMetadata&&) = default;
TrackMetadata(const TrackMetadata&) = default;
@@ -33,6 +39,9 @@ public:
TrackMetadata& operator=(TrackMetadata&&) = default;
TrackMetadata& operator=(const TrackMetadata&) = default;
+ bool updateAudioPropertiesFromStream(
+ const audio::StreamInfo& streamInfo);
+
// Adjusts floating-point values to match their string representation
// in file tags to account for rounding errors.
void normalizeBeforeExport();
@@ -72,8 +81,7 @@ public:
bool operator==(const TrackMetadata& lhs, const TrackMetadata& rhs);
-inline
-bool operator!=(const TrackMetadata& lhs, const TrackMetadata& rhs) {
+inline bool operator!=(const TrackMetadata& lhs, const TrackMetadata& rhs) {
return !(lhs == rhs);
}