beets/test
Zsin Skri c3af5b3763 replaygain: add ffmpeg backend
Add replaygain backend using ffmpeg's ebur128 filter.

The album gain is calculated as the mean of all BS.1770 gating block powers.
Besides differences in gating block offset, this should be equivalent to a
BS.1770 analysis of a proper concatenation of all tracks.

Just calculating the mean of all track gains (as implemented by the bs1770gain
backend) yields incorrect results as that would:
- completely ignore track lengths
  - just using length in seconds won't work either (e.g. BS.1770 ignores
    passages below a threshold)
- take the mean of track loudness, not power

When using the ffmpeg replaygain backend to create R128_*_GAIN tags, the
targetlevel will be set to -23 LUFS. GitHub PullRequest #3065 will make this
configurable.
It will also skip peak calculation, as there is no R128_*_PEAK tag.

It is checked if the libavfilter library supports replaygain calculation. Before
version 6.67.100 that did require the `--enable-libebur128` compile-time-option,
after that the ebur128 library is included in libavfilter itself. Thus we
require either a recent enough libavfilter version or the `--enable-libebur128`
option.
2019-07-19 21:54:47 +02:00
..
rsrc Add mb_releasetrackid tag to full.* media files. 2018-05-01 08:37:34 +02:00
__init__.py add missing division future imports 2016-04-16 18:33:54 +02:00
_common.py confit: replace with confuse in tests 2019-06-01 10:13:13 +10:00
helper.py tests: avoid non-test classes named Test* 2019-06-02 16:35:37 +10:00
lyrics_download_samples.py s/utf8/utf-8/ in all encoding/decoding contexts 2016-09-06 23:10:24 -04:00
test_acousticbrainz.py Undo from _common import unittest indirection 2016-11-26 18:46:44 -05:00
test_art.py Update a lot of URLs to use HTTPS 2019-06-05 03:11:49 +02:00
test_autotag.py Fix miscellaneous typos 2018-10-09 01:11:06 +01:00
test_bucket.py Undo from _common import unittest indirection 2016-11-26 18:46:44 -05:00
test_config_command.py Replace more instances of unsafe calls to yaml.load 2019-04-20 01:14:15 +02:00
test_convert.py mediafile: import from standalone module 2019-05-29 09:35:14 +10:00
test_datequery.py Set up date tests for #2652 2018-02-20 22:57:58 -05:00
test_dbcore.py tests: avoid non-test classes named Test* 2019-06-02 16:35:37 +10:00
test_discogs.py fixing per review comments 2019-07-01 21:04:35 +02:00
test_edit.py Merge pull request #2668 from wordofglass/edit_logic 2017-08-25 15:52:40 +02:00
test_embedart.py mediafile: import from standalone module 2019-05-29 09:35:14 +10:00
test_embyupdate.py Undo from _common import unittest indirection 2016-11-26 18:46:44 -05:00
test_fetchart.py test_fetchart: Fix for hidden files on Windows 2018-12-21 11:27:09 +01:00
test_filefilter.py mediafile: import from standalone module 2019-05-29 09:35:14 +10:00
test_files.py Refactored move functions for clarity according to #2682 2017-09-11 17:03:44 +02:00
test_ftintitle.py Undo from _common import unittest indirection 2016-11-26 18:46:44 -05:00
test_hidden.py Undo from _common import unittest indirection 2016-11-26 18:46:44 -05:00
test_hook.py Add test for interpolating byte strings in hook plugin 2019-02-25 14:42:20 +00:00
test_ihate.py Undo from _common import unittest indirection 2016-11-26 18:46:44 -05:00
test_importadded.py Add option to hardlink when importing 2017-02-19 15:56:13 -06:00
test_importer.py tests: avoid non-test classes named Test* 2019-06-02 16:35:37 +10:00
test_importfeeds.py Undo from _common import unittest indirection 2016-11-26 18:46:44 -05:00
test_info.py mediafile: import from standalone module 2019-05-29 09:35:14 +10:00
test_ipfs.py Fix ipfs test to sort items in order 2017-06-20 16:19:31 -04:00
test_keyfinder.py util.command_output: return stderr, too 2019-07-14 18:32:59 +02:00
test_lastgenre.py improve tests prefer_specific without canonical 2018-07-01 09:19:36 +02:00
test_library.py mediafile: import from standalone module 2019-05-29 09:35:14 +10:00
test_logging.py Replace blind excepts with generic Exception excepts in tests 2017-04-29 00:12:14 +02:00
test_lyrics.py confit: replace with confuse in tests 2019-06-01 10:13:13 +10:00
test_mb.py Update a few more http URLs to https that I missed 2019-06-05 23:07:11 +02:00
test_mbsubmit.py Undo from _common import unittest indirection 2016-11-26 18:46:44 -05:00
test_mbsync.py mbsync no longer queries MusicBrainz when the either the mb_albumid or mb_trackid field is invalid 2018-09-09 15:20:26 +10:00
test_metasync.py Undo from _common import unittest indirection 2016-11-26 18:46:44 -05:00
test_mpdstats.py mpdstats: update tests for currentsong 2019-04-06 15:31:03 +11:00
test_parentwork.py logging and minor comments 2019-06-05 11:10:11 +02:00
test_permissions.py Undo from _common import unittest indirection 2016-11-26 18:46:44 -05:00
test_pipeline.py tests: avoid non-test classes named Test* 2019-06-02 16:35:37 +10:00
test_play.py rename --force to --yes in play plugin 2017-04-19 10:51:44 -07:00
test_player.py bpd tests: skip control_port in queue 2019-07-17 19:05:51 +02:00
test_playlist.py test: Make music dir of playlist tests Windows-compatible 2019-02-17 21:27:37 +01:00
test_plexupdate.py Undo from _common import unittest indirection 2016-11-26 18:46:44 -05:00
test_plugin_mediafield.py mediafile: import from standalone module 2019-05-29 09:35:14 +10:00
test_plugins.py mediafile: import from standalone module 2019-05-29 09:35:14 +10:00
test_query.py Fix some brittle query tests 2017-06-20 15:56:33 -04:00
test_random.py Make test_random work with setup.py test 2019-05-30 12:59:16 +10:00
test_replaygain.py replaygain: add ffmpeg backend 2019-07-19 21:54:47 +02:00
test_smartplaylist.py Undo from _common import unittest indirection 2016-11-26 18:46:44 -05:00
test_sort.py Undo from _common import unittest indirection 2016-11-26 18:46:44 -05:00
test_spotify.py Appease Flake8 2019-01-22 10:53:18 -08:00
test_template.py Fix #2562: avoid crash with newlines in templates 2017-05-16 14:00:10 -04:00
test_the.py Style fixes for latest pycodestyle changes 2018-10-24 17:05:38 -04:00
test_thumbnails.py Test updates for #2466 fix 2017-03-03 12:10:26 -06:00
test_types_plugin.py confit: replace with confuse in tests 2019-06-01 10:13:13 +10:00
test_ui.py Try to make a test more reliable 2019-06-02 20:16:51 -04:00
test_ui_commands.py Undo from _common import unittest indirection 2016-11-26 18:46:44 -05:00
test_ui_importer.py tests: avoid non-test classes named Test* 2019-06-02 16:35:37 +10:00
test_ui_init.py Allow exiting object selection early 2018-11-28 17:17:12 +00:00
test_util.py Undo from _common import unittest indirection 2016-11-26 18:46:44 -05:00
test_vfs.py Undo from _common import unittest indirection 2016-11-26 18:46:44 -05:00
test_web.py Avoid weird mutation in web tests 2018-04-27 17:34:18 -04:00
test_zero.py mediafile: import from standalone module 2019-05-29 09:35:14 +10:00
testall.py Setup path correctly in testall.py 2019-05-31 11:28:55 +10:00