Created
October 4, 2016 23:23
-
-
Save neheb/2134ca496219913949673873772bffe0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[mangix@mangix rhythmbox]$ cat rhythmbox-add-replaygain.patch | |
diff --git a/rhythmdb/rhythmdb-private.h b/rhythmdb/rhythmdb-private.h | |
index 579f785..933eb2e 100644 | |
--- a/rhythmdb/rhythmdb-private.h | |
+++ b/rhythmdb/rhythmdb-private.h | |
@@ -94,7 +94,11 @@ struct _RhythmDBEntry { | |
gulong disctotal; | |
gulong duration; | |
gulong bitrate; | |
- double bpm; | |
+ gdouble track_gain; | |
+ gdouble track_peak; | |
+ gouble album_gain; | |
+ gdouble album_peak; | |
+ gdouble bpm; | |
GDate date; | |
/* filesystem */ | |
diff --git a/rhythmdb/rhythmdb-tree.c b/rhythmdb/rhythmdb-tree.c | |
index d265aae..7bdad8c 100644 | |
--- a/rhythmdb/rhythmdb-tree.c | |
+++ b/rhythmdb/rhythmdb-tree.c | |
@@ -670,13 +670,6 @@ rhythmdb_tree_parser_end_element (struct RhythmDBTreeLoadContext *ctx, | |
set = TRUE; | |
} | |
break; | |
- /* drop replaygain properties */ | |
- case RHYTHMDB_PROP_TRACK_GAIN: | |
- case RHYTHMDB_PROP_TRACK_PEAK: | |
- case RHYTHMDB_PROP_ALBUM_GAIN: | |
- case RHYTHMDB_PROP_ALBUM_PEAK: | |
- skip = TRUE; | |
- break; | |
default: | |
break; | |
} | |
@@ -1063,6 +1056,18 @@ save_entry (RhythmDBTree *db, | |
case RHYTHMDB_PROP_BITRATE: | |
save_entry_int(ctx, elt_name, entry->bitrate); | |
break; | |
+ case RHYTHMDB_PROP_TRACK_GAIN: | |
+ save_entry_double(ctx, elt_name, entry->track_gain); | |
+ break; | |
+ case RHYTHMDB_PROP_TRACK_PEAK: | |
+ save_entry_double(ctx, elt_name, entry->track_peak); | |
+ break; | |
+ case RHYTHMDB_PROP_ALBUM_GAIN: | |
+ save_entry_double(ctx, elt_name, entry->album_gain); | |
+ break; | |
+ case RHYTHMDB_PROP_ALBUM_PEAK: | |
+ save_entry_double(ctx, elt_name, entry->album_peak); | |
+ break; | |
case RHYTHMDB_PROP_LOCATION: | |
save_entry_string(ctx, elt_name, rb_refstring_get (entry->location)); | |
break; | |
@@ -1178,11 +1183,6 @@ save_entry (RhythmDBTree *db, | |
case RHYTHMDB_PROP_SEARCH_MATCH: | |
case RHYTHMDB_PROP_YEAR: | |
case RHYTHMDB_NUM_PROPERTIES: | |
- /* obsolete replaygain properties */ | |
- case RHYTHMDB_PROP_TRACK_GAIN: | |
- case RHYTHMDB_PROP_TRACK_PEAK: | |
- case RHYTHMDB_PROP_ALBUM_GAIN: | |
- case RHYTHMDB_PROP_ALBUM_PEAK: | |
break; | |
} | |
} | |
diff --git a/rhythmdb/rhythmdb.c b/rhythmdb/rhythmdb.c | |
index 4319317..b8f69fe 100644 | |
--- a/rhythmdb/rhythmdb.c | |
+++ b/rhythmdb/rhythmdb.c | |
@@ -660,6 +660,18 @@ metadata_field_from_prop (RhythmDBPropType prop, | |
case RHYTHMDB_PROP_DATE: | |
*field = RB_METADATA_FIELD_DATE; | |
return TRUE; | |
+ case RHYTHMDB_PROP_TRACK_GAIN: | |
+ *field = RB_METADATA_FIELD_TRACK_GAIN; | |
+ return TRUE; | |
+ case RHYTHMDB_PROP_TRACK_PEAK: | |
+ *field = RB_METADATA_FIELD_TRACK_PEAK; | |
+ return TRUE; | |
+ case RHYTHMDB_PROP_ALBUM_GAIN: | |
+ *field = RB_METADATA_FIELD_ALBUM_GAIN; | |
+ return TRUE; | |
+ case RHYTHMDB_PROP_ALBUM_PEAK: | |
+ *field = RB_METADATA_FIELD_ALBUM_PEAK; | |
+ return TRUE; | |
case RHYTHMDB_PROP_BPM: | |
*field = RB_METADATA_FIELD_BPM; | |
return TRUE; | |
@@ -2085,6 +2097,31 @@ set_props_from_metadata (RhythmDB *db, | |
RB_METADATA_FIELD_ALBUM, | |
RHYTHMDB_PROP_ALBUM, | |
_("Unknown")); | |
+ | |
+ /* replaygain track gain */ | |
+ if (rb_metadata_get (metadata, RB_METADATA_FIELD_TRACK_GAIN, &val)) { | |
+ rhythmdb_entry_set_internal (db, entry, TRUE, RHYTHMDB_PROP_TRACK_GAIN, &val); | |
+ g_value_unset (&val); | |
+ } | |
+ | |
+ /* replaygain track peak */ | |
+ if (rb_metadata_get (metadata, RB_METADATA_FIELD_TRACK_PEAK, &val)) { | |
+ rhythmdb_entry_set_internal (db, entry, TRUE, RHYTHMDB_PROP_TRACK_PEAK, &val); | |
+ g_value_unset (&val); | |
+ } | |
+ | |
+ /* replaygain album gain */ | |
+ if (rb_metadata_get (metadata, RB_METADATA_FIELD_ALBUM_GAIN, &val)) { | |
+ rhythmdb_entry_set_internal (db, entry, TRUE, RHYTHMDB_PROP_ALBUM_GAIN, &val); | |
+ g_value_unset (&val); | |
+ } | |
+ | |
+ /* replaygain album peak */ | |
+ if (rb_metadata_get (metadata, RB_METADATA_FIELD_ALBUM_PEAK, &val)) { | |
+ rhythmdb_entry_set_internal (db, entry, TRUE, RHYTHMDB_PROP_ALBUM_PEAK, &val); | |
+ g_value_unset (&val); | |
+ } | |
+ | |
/* artist sortname */ | |
set_metadata_string_with_default (db, metadata, entry, | |
RB_METADATA_FIELD_ARTIST_SORTNAME, | |
@@ -3609,16 +3646,16 @@ rhythmdb_entry_set_internal (RhythmDB *db, | |
break; | |
} | |
case RHYTHMDB_PROP_TRACK_GAIN: | |
- g_warning ("RHYTHMDB_PROP_TRACK_GAIN no longer supported"); | |
+ entry->track_gain = g_value_get_double (value); | |
break; | |
case RHYTHMDB_PROP_TRACK_PEAK: | |
- g_warning ("RHYTHMDB_PROP_TRACK_PEAK no longer supported"); | |
+ entry->track_peak = g_value_get_double (value); | |
break; | |
case RHYTHMDB_PROP_ALBUM_GAIN: | |
- g_warning ("RHYTHMDB_PROP_ALBUM_GAIN no longer supported"); | |
+ entry->album_gain = g_value_get_double (value); | |
break; | |
case RHYTHMDB_PROP_ALBUM_PEAK: | |
- g_warning ("RHYTHMDB_PROP_ALBUM_PEAK no longer supported"); | |
+ entry->album_peak = g_value_get_double (value); | |
break; | |
case RHYTHMDB_PROP_LOCATION: | |
rb_refstring_unref (entry->location); | |
@@ -4591,9 +4628,9 @@ rhythmdb_entry_gather_metadata (RhythmDB *db, | |
case RHYTHMDB_PROP_TRACK_PEAK: | |
case RHYTHMDB_PROP_ALBUM_GAIN: | |
case RHYTHMDB_PROP_ALBUM_PEAK: | |
- continue; | |
- default: | |
break; | |
+ default: | |
+ continue; | |
} | |
g_value_init (&value, value_type); | |
@@ -5288,17 +5325,13 @@ rhythmdb_entry_get_double (RhythmDBEntry *entry, | |
switch (propid) { | |
case RHYTHMDB_PROP_TRACK_GAIN: | |
- g_warning ("RHYTHMDB_PROP_TRACK_GAIN no longer supported"); | |
- return 0.0; | |
+ return entry->track_gain; | |
case RHYTHMDB_PROP_TRACK_PEAK: | |
- g_warning ("RHYTHMDB_PROP_TRACK_PEAK no longer supported"); | |
- return 1.0; | |
+ return entry->track_peak; | |
case RHYTHMDB_PROP_ALBUM_GAIN: | |
- g_warning ("RHYTHMDB_PROP_ALBUM_GAIN no longer supported"); | |
- return 0.0; | |
+ return entry->album_gain; | |
case RHYTHMDB_PROP_ALBUM_PEAK: | |
- g_warning ("RHYTHMDB_PROP_ALBUM_PEAK no longer supported"); | |
- return 1.0; | |
+ return entry->album_peak; | |
case RHYTHMDB_PROP_RATING: | |
return entry->rating; | |
case RHYTHMDB_PROP_BPM: | |
diff --git a/rhythmdb/rhythmdb.h b/rhythmdb/rhythmdb.h | |
index 85d7748..da00331 100644 | |
--- a/rhythmdb/rhythmdb.h | |
+++ b/rhythmdb/rhythmdb.h | |
@@ -114,10 +114,10 @@ typedef enum | |
RHYTHMDB_PROP_LAST_PLAYED, | |
RHYTHMDB_PROP_BITRATE, | |
RHYTHMDB_PROP_DATE, | |
- RHYTHMDB_PROP_TRACK_GAIN, /* obsolete */ | |
- RHYTHMDB_PROP_TRACK_PEAK, /* obsolete */ | |
- RHYTHMDB_PROP_ALBUM_GAIN, /* obsolete */ | |
- RHYTHMDB_PROP_ALBUM_PEAK, /* obsolete */ | |
+ RHYTHMDB_PROP_TRACK_GAIN, | |
+ RHYTHMDB_PROP_TRACK_PEAK, | |
+ RHYTHMDB_PROP_ALBUM_GAIN, | |
+ RHYTHMDB_PROP_ALBUM_PEAK, | |
RHYTHMDB_PROP_MEDIA_TYPE, | |
RHYTHMDB_PROP_TITLE_SORT_KEY, | |
RHYTHMDB_PROP_GENRE_SORT_KEY, | |
[mangix@mangix rhythmbox]$ cat rhythmbox-ipod-soundcheck.patch | |
diff --git a/plugins/ipod/rb-ipod-source.c b/plugins/ipod/rb-ipod-source.c | |
index 8a02890..316bd4e 100644 | |
--- a/plugins/ipod/rb-ipod-source.c | |
+++ b/plugins/ipod/rb-ipod-source.c | |
@@ -785,6 +785,7 @@ create_ipod_song_from_entry (RhythmDBEntry *entry, guint64 filesize, const char | |
track->rating *= ITDB_RATING_STEP; | |
track->app_rating = track->rating; | |
track->playcount = rhythmdb_entry_get_ulong (entry, RHYTHMDB_PROP_PLAY_COUNT); | |
+ track->soundcheck = 1000 * pow (10.0, -0.1 * rhythmdb_entry_get_double (entry, RHYTHMDB_PROP_TRACK_GAIN)); | |
if (rhythmdb_entry_get_entry_type (entry) == RHYTHMDB_ENTRY_TYPE_PODCAST_POST) { | |
track->mediatype = ITDB_MEDIATYPE_PODCAST; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment