mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-09-30 13:19:44 +02:00
feat: expose audio codec in download result and skip lossy-to-lossless conversion
Go backend: - Add AudioCodec field to DownloadResult and DownloadResponse - Extension download results can now include audio_codec/audioCodec - ffmpegGetInfo and probeAudioQuality now return codec field - Add trackItemBytes option to file.download() for custom progress handling Flutter: - Check audio_codec before container conversion - Skip FLAC conversion if source codec is lossy (AAC, MP3, Opus, etc.) - Prevents fake upscale from lossy to lossless containers
This commit is contained in:
1 parent
8b7cecc1c5
commit
fb4cd75cb2
6 files changed
+45
-6
No files matched your search
@@ -6246,6 +6246,16 @@ class DownloadQueueNotifier extends Notifier<DownloadQueueState> {
|
||||
if (context.quality == 'HIGH' || context.outputExt != '.flac') {
|
||||
return filePath;
|
||||
}
|
||||
final resultAudioFormat = _normalizeAudioFormatValue(
|
||||
result['audio_codec']?.toString() ??
|
||||
result['actual_audio_codec']?.toString(),
|
||||
);
|
||||
if (_isLossyAudioFormat(resultAudioFormat)) {
|
||||
_log.d(
|
||||
'Native-worker output is $resultAudioFormat; preserving native container.',
|
||||
);
|
||||
return filePath;
|
||||
}
|
||||
final requiresContainerConversion =
|
||||
result['requires_container_conversion'] == true ||
|
||||
result['requiresContainerConversion'] == true;
|
||||
@@ -7411,10 +7421,16 @@ class DownloadQueueNotifier extends Notifier<DownloadQueueState> {
|
||||
result,
|
||||
filePath: filePath,
|
||||
);
|
||||
final resultAudioFormat = _normalizeAudioFormatValue(
|
||||
result['audio_codec']?.toString() ??
|
||||
result['actual_audio_codec']?.toString(),
|
||||
);
|
||||
final resultIsLossyAudio = _isLossyAudioFormat(resultAudioFormat);
|
||||
final requiresContainerConversion =
|
||||
result['requires_container_conversion'] == true ||
|
||||
result['requiresContainerConversion'] == true ||
|
||||
_shouldRequestContainerConversion(actualService, safOutputExt);
|
||||
(!resultIsLossyAudio &&
|
||||
_shouldRequestContainerConversion(actualService, safOutputExt));
|
||||
final preferredOutputExt = _extensionPreferredOutputExt(actualService);
|
||||
final shouldPreserveNativeM4a =
|
||||
!requiresContainerConversion &&
|
||||
|
||||
Reference in new issue
Block a user