summaryrefslogtreecommitdiffstats
path: root/src/track/taglib/trackmetadata_mp4.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/track/taglib/trackmetadata_mp4.cpp')
-rw-r--r--src/track/taglib/trackmetadata_mp4.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/track/taglib/trackmetadata_mp4.cpp b/src/track/taglib/trackmetadata_mp4.cpp
index d04db46b4f..7c2df93770 100644
--- a/src/track/taglib/trackmetadata_mp4.cpp
+++ b/src/track/taglib/trackmetadata_mp4.cpp
@@ -30,6 +30,10 @@ const TagLib::String kAtomKeyReplayGainTrackPeak = "----:com.apple.iTunes:replay
const TagLib::String kAtomKeyReplayGainAlbumGain = "----:com.apple.iTunes:replaygain_album_gain";
const TagLib::String kAtomKeyReplayGainAlbumPeak = "----:com.apple.iTunes:replaygain_album_peak";
+// Serato atom keys
+const TagLib::String kAtomKeySeratoMarkers = "----:com.serato.dj:markers";
+const TagLib::String kAtomKeySeratoMarkers2 = "----:com.serato.dj:markersv2";
+
// Workaround for missing const member function in TagLib
inline const TagLib::MP4::ItemListMap& getItemListMap(
const TagLib::MP4::Tag& tag) {
@@ -305,6 +309,28 @@ void importTrackMetadataFromTag(
pTrackMetadata->refTrackInfo().setMovement(movement);
}
#endif // __EXTRA_METADATA__
+
+ // Serato tags
+ TagLib::String seratoMarkersData;
+ if (readAtom(
+ tag,
+ kAtomKeySeratoMarkers,
+ &seratoMarkersData)) {
+ parseSeratoMarkers(
+ pTrackMetadata,
+ seratoMarkersData,
+ FileType::MP4);
+ }
+ TagLib::String seratoMarkers2Data;
+ if (readAtom(
+ tag,
+ kAtomKeySeratoMarkers2,
+ &seratoMarkers2Data)) {
+ parseSeratoMarkers2(
+ pTrackMetadata,
+ seratoMarkers2Data,
+ FileType::MP4);
+ }
}
bool exportTrackMetadataIntoTag(
@@ -417,6 +443,20 @@ bool exportTrackMetadataIntoTag(
writeAtom(pTag, "\251mvn", toTString(trackMetadata.getTrackInfo().getMovement()));
#endif // __EXTRA_METADATA__
+ // Export of Serato markers is disabled, because Mixxx
+ // does not modify them.
+#if defined(__EXPORT_SERATO_MARKERS__)
+ // Serato tags
+ writeAtom(
+ pTag,
+ kAtomKeySeratoMarkers,
+ dumpSeratoMarkers(trackMetadata, FileType::MP4));
+ writeAtom(
+ pTag,
+ kAtomKeySeratoMarkers2,
+ dumpSeratoMarkers2(trackMetadata, FileType::MP4));
+#endif // __EXPORT_SERATO_MARKERS__
+
return true;
}