import urllib.parse
from collections.abc import AsyncGenerator
from dataclasses import dataclass, field
+from math import inf
from typing import TYPE_CHECKING
from aiofiles.os import wrap
elif streamdetails.volume_normalization_mode == VolumeNormalizationMode.MEASUREMENT_ONLY:
# volume normalization with known loudness measurement
# apply volume/gain correction
- gain_correct = streamdetails.target_loudness - streamdetails.loudness
+ if streamdetails.prefer_album_loudness and streamdetails.loudness_album not in (
+ inf,
+ -inf,
+ ):
+ gain_correct = streamdetails.target_loudness - streamdetails.loudness_album
+ else:
+ gain_correct = streamdetails.target_loudness - streamdetails.loudness
gain_correct = round(gain_correct, 2)
filter_params.append(f"volume={gain_correct}dB")
streamdetails.volume_normalization_gain_correct = gain_correct