From 4c9c2104f31aff89b5732cd6b03991f97c81c1dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?kleines=20Filmr=C3=B6llchen?= Date: Fri, 18 Aug 2023 21:17:28 +0200 Subject: [PATCH] aconv: Copy metadata to output This requires postponing FLAC header finalization, since FLAC cannot write metadata after a finalized header. --- Userland/Utilities/aconv.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Userland/Utilities/aconv.cpp b/Userland/Utilities/aconv.cpp index 1e6b59603f2..1da35cb964f 100644 --- a/Userland/Utilities/aconv.cpp +++ b/Userland/Utilities/aconv.cpp @@ -134,15 +134,20 @@ ErrorOr serenity_main(Main::Arguments arguments) static_cast(input_loader->sample_rate()), input_loader->num_channels(), Audio::pcm_bits_per_sample(parsed_output_sample_format))); - TRY(flac_writer->finalize_header_format()); writer.emplace(move(flac_writer)); } else { warnln("Codec {} is not supported for encoding", output_format); return 1; } - if (writer.has_value()) + if (writer.has_value()) { (*writer)->sample_count_hint(input_loader->total_samples()); + TRY((*writer)->set_metadata(input_loader->metadata())); + } + + // FIXME: Maybe use a generalized interface for this as well if the need arises. + if (output_format == "flac"sv) + TRY(static_cast(writer->ptr())->finalize_header_format()); if (output != "-"sv) out("Writing: \033[s");