diff options
-rw-r--r-- | DOCS/man/input.rst | 14 | ||||
-rw-r--r-- | player/command.c | 12 |
2 files changed, 26 insertions, 0 deletions
diff --git a/DOCS/man/input.rst b/DOCS/man/input.rst index 10fd6e2b1c..2cc41bf5d5 100644 --- a/DOCS/man/input.rst +++ b/DOCS/man/input.rst @@ -1813,6 +1813,16 @@ Property list ``track-list/N/audio-channels`` (deprecated) Deprecated alias for ``track-list/N/demux-channel-count``. + ``track-list/N/replaygain-track-peak``, ``track-list/N/replaygain-track-gain`` + Per-track replaygain values. Only available for audio tracks with + corresponding information stored in the source file. + + ``track-list/N/replaygain-album-peak``, ``track-list/N/replaygain-album-gain`` + Per-album replaygain values. If the file has per-track but no per-album + information, the per-album values will be copied from the per-track + values currently. It's possible that future mpv versions will make + these properties unavailable instead in this case. + When querying the property with the client API using ``MPV_FORMAT_NODE``, or with Lua ``mp.get_property_native``, this will return a mpv_node with the following contents: @@ -1842,6 +1852,10 @@ Property list "demux-samplerate" MPV_FORMAT_INT64 "demux-fps" MPV_FORMAT_DOUBLE "audio-channels" MPV_FORMAT_INT64 + "replaygain-track-peak" MPV_FORMAT_DOUBLE + "replaygain-track-gain" MPV_FORMAT_DOUBLE + "replaygain-album-peak" MPV_FORMAT_DOUBLE + "replaygain-album-gain" MPV_FORMAT_DOUBLE ``chapter-list`` List of chapters, current entry marked. Currently, the raw property value diff --git a/player/command.c b/player/command.c index 584cc11cdc..ac97e1022d 100644 --- a/player/command.c +++ b/player/command.c @@ -2010,6 +2010,10 @@ static int get_track_entry(int item, int action, void *arg, void *ctx) if (track->d_audio) decoder_desc = track->d_audio->decoder_desc; + bool has_rg = track->stream->codec->replaygain_data; + struct replaygain_data rg = has_rg ? *track->stream->codec->replaygain_data + : (struct replaygain_data){0}; + struct m_sub_property props[] = { {"id", SUB_PROP_INT(track->user_tid)}, {"type", SUB_PROP_STR(stream_type_name(track->type)), @@ -2043,6 +2047,14 @@ static int get_track_entry(int item, int action, void *arg, void *ctx) {"demux-samplerate", SUB_PROP_INT(p.samplerate), .unavailable = !p.samplerate}, {"demux-fps", SUB_PROP_DOUBLE(p.fps), .unavailable = p.fps <= 0}, + {"replaygain-track-peak", SUB_PROP_FLOAT(rg.track_peak), + .unavailable = !has_rg}, + {"replaygain-track-gain", SUB_PROP_FLOAT(rg.track_gain), + .unavailable = !has_rg}, + {"replaygain-album-peak", SUB_PROP_FLOAT(rg.album_peak), + .unavailable = !has_rg}, + {"replaygain-album-gain", SUB_PROP_FLOAT(rg.album_gain), + .unavailable = !has_rg}, {0} }; |