diff --git a/audiodecoder.fluidsynth/addon.xml.in b/audiodecoder.fluidsynth/addon.xml.in index e3c09d6..e8484f1 100644 --- a/audiodecoder.fluidsynth/addon.xml.in +++ b/audiodecoder.fluidsynth/addon.xml.in @@ -1,7 +1,7 @@ @ADDON_DEPENDS@ @@ -9,8 +9,16 @@ point="kodi.audiodecoder" name="fluid" tags="true" - extension=".mid|.kar" - library_@PLATFORM@="@LIBRARY_FILENAME@"/> + library_@PLATFORM@="@LIBRARY_FILENAME@"> + + + 30100 + + + 30101 + + + @PLATFORM@ GPL-2.0-or-later @@ -27,6 +35,7 @@ Een Geluidsfont synthesizer Syntezator SoundFont SoundFont синтезатор + 一个音色库合成器 FluidSynth er en software-synthesizer i realtid baseret på SoundFont 2-specifikationerne og har nået en bred distribution. FluidSynth har ikke selv en grafisk brugerflade, men på grund af sin kraftige API benytter flere applikationer sig af den, og den har endda fundet vej til integrerede systemer og bruges i nogle mobile apps. FluidSynth ist ein Echtzeit-Software-Synthesizer, der auf den SoundFont 2-Spezifikationen basiert und eine weit verbreitete Verbreitung erreicht hat. FluidSynth selbst verfügt nicht über eine grafische Benutzeroberfläche, wird jedoch aufgrund seiner leistungsstarken API von mehreren Anwendungen verwendet und hat sogar den Weg in eingebettete Systeme gefunden und wird in einigen mobilen Apps verwendet. FluidSynth is a real-time software synthesizer based on the SoundFont 2 specifications and has reached widespread distribution. FluidSynth itself does not have a graphical user interface, but due to its powerful API several applications utilize it and it has even found its way onto embedded systems and is used in some mobile apps. @@ -34,5 +43,6 @@ FluidSynth는 SoundFont 2 규격에 따른 실시간 신시사이저 소프트웨어로서 널리 보급되어 있습니다. FluidSynth 자체에는 GUI가 없지만, 강력한 API 덕분에 여러개의 어플리케이션에서 사용 중이며 심지어 임베디드 시스템이나 모바일 앱에서도 사용 중입니다. FluidSynth to programowy syntezator czasu rzeczywistego oparty na specyfikacjach SoundFont 2, który jest szeroko rozpowszechniony. Sam FluidSynth nie ma graficznego interfejsu użytkownika, ale ze względu na jego potężne API korzysta z niego kilka aplikacji, a nawet znalazł się w systemach wbudowanych i jest używany w niektórych aplikacjach mobilnych. FluidSynth - это программный синтезатор реального времени, основанный на спецификации SoundFont 2 и получивший широкое распространение. Сам FluidSynth не имеет графического интерфейса, но благодаря мощному API его используют различные приложения, он также нашёл свое применение во встроенных системах и используется в некоторых мобильных приложениях. + FluidSynth 是一款已广泛发行的基于 SoundFont 2 规范的实时软件合成器。FluidSynth 本身没有图形用户界面,但因其强大的 API 而被一些应用程序所使用,甚至找到了在在嵌入式系统上使用的方法,并在一些移动应用程序中使用。 diff --git a/audiodecoder.fluidsynth/resources/language/resource.language.en_gb/strings.po b/audiodecoder.fluidsynth/resources/language/resource.language.en_gb/strings.po index 8658b0e..ecc969c 100644 --- a/audiodecoder.fluidsynth/resources/language/resource.language.en_gb/strings.po +++ b/audiodecoder.fluidsynth/resources/language/resource.language.en_gb/strings.po @@ -55,3 +55,15 @@ msgstr "" msgctxt "#30011" msgid "Soundfont not configured, check add-on settings." msgstr "" + +#. Supported file extension description about ".mid" +#: audiodecoder.fluidsynth/addon.xml.in +msgctxt "#30100" +msgid "Is a MIDI (Musical Instrument Digital Interface) file used by music authoring, mixing programs and hardware devices." +msgstr "" + +#. Supported file extension description about ".kar" +#: audiodecoder.fluidsynth/addon.xml.in +msgctxt "#30101" +msgid "Karaoke MIDI File - Contains MIDI data as well as song lyrics stored in text." +msgstr "" diff --git a/audiodecoder.fluidsynth/resources/language/resource.language.zh_cn/strings.po b/audiodecoder.fluidsynth/resources/language/resource.language.zh_cn/strings.po index 4973f3c..566e684 100644 --- a/audiodecoder.fluidsynth/resources/language/resource.language.zh_cn/strings.po +++ b/audiodecoder.fluidsynth/resources/language/resource.language.zh_cn/strings.po @@ -5,25 +5,25 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: https://github.com/xbmc/audiodecoder.fluidsynth/issues/" -"\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" +"PO-Revision-Date: 2021-09-17 02:30+0000\n" +"Last-Translator: taxigps \n" +"Language-Team: Chinese (China) \n" "Language: zh_cn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.8\n" msgctxt "Addon Summary" msgid "A SoundFont Synthesizer" -msgstr "" +msgstr "一个音色库合成器" msgctxt "Addon Description" msgid "FluidSynth is a real-time software synthesizer based on the SoundFont 2 specifications and has reached widespread distribution. FluidSynth itself does not have a graphical user interface, but due to its powerful API several applications utilize it and it has even found its way onto embedded systems and is used in some mobile apps." -msgstr "" +msgstr "FluidSynth 是一款已广泛发行的基于 SoundFont 2 规范的实时软件合成器。FluidSynth 本身没有图形用户界面,但因其强大的 API 而被一些应用程序所使用,甚至找到了在在嵌入式系统上使用的方法,并在一些移动应用程序中使用。" #[Consistency] Make terms, settings names, brands and other minutiae, consistent throughout file. #[Capitalization] Avoid capitalizing every second word. See http://grammarist.com/capitalization/ @@ -34,24 +34,24 @@ msgstr "" #For example, "Press \"OK\" for \"All seasons\"" instead of "Press OK for All seasons" after first word. msgctxt "#30000" msgid "Soundfont" -msgstr "" +msgstr "音色库" msgctxt "#30001" msgid "To use FluidSynth you need a working sound font." -msgstr "" +msgstr "使用 FluidSynth 需要有在用的音色库。" msgctxt "#30002" msgid "Scan MIDI for title" -msgstr "" +msgstr "扫描 MIDI 以查找标题" msgctxt "#30003" msgid "Search in MIDI file for information to get an exact title." -msgstr "" +msgstr "在 MIDI 文件中搜索信息以获得确切的标题。" msgctxt "#30010" msgid "SoundFont audio decode" -msgstr "" +msgstr "音色库音频解码" msgctxt "#30011" msgid "Soundfont not configured, check add-on settings." -msgstr "" +msgstr "音色库未配置,检查插件设置。" diff --git a/src/FluidDecoder.cpp b/src/FluidDecoder.cpp index a6083e2..911d490 100644 --- a/src/FluidDecoder.cpp +++ b/src/FluidDecoder.cpp @@ -72,14 +72,14 @@ bool CFluidCodec::Init(const std::string& filename, return true; } -int CFluidCodec::ReadPCM(uint8_t* buffer, int size, int& actualsize) +int CFluidCodec::ReadPCM(uint8_t* buffer, size_t size, size_t& actualsize) { if (fluid_player_get_status(ctx.player) == FLUID_PLAYER_DONE) - return 1; + return AUDIODECODER_READ_EOF; fluid_synth_write_float(ctx.synth, size / 8, buffer, 0, 2, buffer, 1, 2); actualsize = size; - return 0; + return AUDIODECODER_READ_SUCCESS; } bool CFluidCodec::ReadTag(const std::string& filename, kodi::addon::AudioDecoderInfoTag& tag) @@ -177,7 +177,7 @@ bool CFluidCodec::ReadTag(const std::string& filename, kodi::addon::AudioDecoder //------------------------------------------------------------------------------ -class ATTRIBUTE_HIDDEN CMyAddon : public kodi::addon::CAddonBase +class ATTR_DLL_LOCAL CMyAddon : public kodi::addon::CAddonBase { public: CMyAddon() = default; diff --git a/src/FluidDecoder.h b/src/FluidDecoder.h index d66d2eb..5d8d149 100644 --- a/src/FluidDecoder.h +++ b/src/FluidDecoder.h @@ -32,7 +32,7 @@ struct FluidContext fluid_player_t* player = nullptr; }; -class ATTRIBUTE_HIDDEN CFluidCodec : public kodi::addon::CInstanceAudioDecoder +class ATTR_DLL_LOCAL CFluidCodec : public kodi::addon::CInstanceAudioDecoder { public: CFluidCodec(KODI_HANDLE instance, const std::string& version); @@ -47,7 +47,7 @@ class ATTRIBUTE_HIDDEN CFluidCodec : public kodi::addon::CInstanceAudioDecoder int& bitrate, AudioEngineDataFormat& format, std::vector& channellist) override; - int ReadPCM(uint8_t* buffer, int size, int& actualsize) override; + int ReadPCM(uint8_t* buffer, size_t size, size_t& actualsize) override; int64_t Seek(int64_t time) override { return -1; } bool ReadTag(const std::string& filename, kodi::addon::AudioDecoderInfoTag& tag) override;