From 52ee132d92d4a04d31bbbdeb7c6c0077bd2a2828 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 5 Sep 2013 19:11:50 +0200 Subject: TagHandler: use a TagBuilder internally Reduce heap allocator overhead. --- src/decoder/OpusDecoderPlugin.cxx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src/decoder/OpusDecoderPlugin.cxx') diff --git a/src/decoder/OpusDecoderPlugin.cxx b/src/decoder/OpusDecoderPlugin.cxx index 9d852102b..c757d66ef 100644 --- a/src/decoder/OpusDecoderPlugin.cxx +++ b/src/decoder/OpusDecoderPlugin.cxx @@ -28,6 +28,7 @@ #include "OggCodec.hxx" #include "CheckAudioFormat.hxx" #include "tag/TagHandler.hxx" +#include "tag/TagBuilder.hxx" #include "InputStream.hxx" #include "util/Error.hxx" @@ -222,14 +223,16 @@ MPDOpusDecoder::HandleBOS(const ogg_packet &packet) inline enum decoder_command MPDOpusDecoder::HandleTags(const ogg_packet &packet) { - Tag tag; + TagBuilder tag_builder; enum decoder_command cmd; if (ScanOpusTags(packet.packet, packet.bytes, - &add_tag_handler, &tag) && - !tag.IsEmpty()) + &add_tag_handler, &tag_builder) && + !tag_builder.IsEmpty()) { + Tag tag; + tag_builder.Commit(tag); cmd = decoder_tag(decoder, input_stream, std::move(tag)); - else + } else cmd = decoder_get_command(decoder); return cmd; -- cgit v1.2.3