feat(audio): add dither and resampler options for lossless conversion

Let users choose FFmpeg dithering when reducing bit depth and SoXr or
SWR resampling when changing sample rate across single-track and batch
lossless conversion flows.
This commit is contained in:
zarzet committed 2026-07-02 01:24:20 +07:00
1 parent dcfd95f276
commit 5424648158
7 files changed
+289 -44

No files matched your search

+5 -1
View File
@@ -5569,7 +5569,7 @@ class _QueueTabState extends ConsumerState<QueueTab> {
confirmLabel: sheetConfirmLabel,
sourceBitDepth: lowestKnownPositiveInt(sourceBitDepths),
sourceSampleRate: lowestKnownPositiveInt(sourceSampleRates),
onConvert: (format, bitrate, losslessQuality) {
onConvert: (format, bitrate, losslessQuality, losslessProcessing) {
didStartConversion = true;
Navigator.pop(sheetContext);
_performBatchConversion(
@@ -5577,6 +5577,7 @@ class _QueueTabState extends ConsumerState<QueueTab> {
targetFormat: format,
bitrate: bitrate,
losslessQuality: losslessQuality,
losslessProcessing: losslessProcessing,
);
},
),
@@ -5611,6 +5612,8 @@ class _QueueTabState extends ConsumerState<QueueTab> {
required String bitrate,
LosslessConversionQuality losslessQuality =
const LosslessConversionQuality(),
LosslessConversionProcessing losslessProcessing =
const LosslessConversionProcessing(),
}) async {
final itemsById = {for (final item in allItems) item.id: item};
final selectedItems = <UnifiedLibraryItem>[];
@@ -5770,6 +5773,7 @@ class _QueueTabState extends ConsumerState<QueueTab> {
sourceBitDepth:
item.historyItem?.bitDepth ?? item.localItem?.bitDepth,
losslessQuality: losslessQuality,
losslessProcessing: losslessProcessing,
);
if (coverPath != null) {