feat: audio analysis rescan and AAC conversion support

Audio Analysis:
- Add rescan capability by bumping cache version
- Display channel layout (stereo, 5.1, etc.) and bitrate
- Use astats filter for more accurate peak/RMS measurements
- Support more formats: mp4, ac3, eac3, mka, wv, ape, tta, aif
- Only report bit depth for codecs that store it (FLAC, ALAC, WAV)
- Validate cache for SAF content:// URIs

Conversion:
- Add AAC as conversion target format
- Recognize ALAC as lossless source
- Prevent accidental deletion when source and target URI match
- Store format and bitrate in database after conversion

Utilities:
- Add audio_conversion_utils.dart for centralized conversion logic
- Add isSameContentUri() helper for safe URI comparison
This commit is contained in:
zarzet committed 2026-05-14 15:46:55 +07:00
1 parent 2a2d817314
commit ff86869c33
8 files changed
+506 -177

No files matched your search

+16
View File
@@ -229,6 +229,22 @@ bool isContentUri(String? path) {
return path != null && path.startsWith('content://');
}
bool isSameContentUri(String? first, String? second) {
if (first == null || second == null) return false;
if (first == second) return true;
if (!isContentUri(first) || !isContentUri(second)) return false;
String decode(String value) {
try {
return Uri.decodeFull(value);
} catch (_) {
return value;
}
}
return decode(first) == decode(second);
}
/// Pattern matching CUE virtual path suffixes like #track01, #track12, etc.
final _cueTrackSuffix = RegExp(r'#track\d+$');