aboutsummaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-02-10 17:12:37 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-02-10 17:12:37 +0000
commitecd8a389412e4d4a2e03150c220e1e7ead5ab2a4 (patch)
tree8b7d30463436db99dd3e789f91e9f7819d86fd1d /src/plugins
parent1551cfa8e50ed10bf1c6fb8465ac3b6387316737 (diff)
downloadqmmp-ecd8a389412e4d4a2e03150c220e1e7ead5ab2a4.tar.gz
qmmp-ecd8a389412e4d4a2e03150c220e1e7ead5ab2a4.tar.bz2
qmmp-ecd8a389412e4d4a2e03150c220e1e7ead5ab2a4.zip
added ffmpeg_legacy plugin
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3216 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/Input/ffmpeg_legacy/decoder_ffmpeg.cpp401
-rw-r--r--src/plugins/Input/ffmpeg_legacy/decoder_ffmpeg.h84
-rw-r--r--src/plugins/Input/ffmpeg_legacy/decoderffmpegfactory.cpp230
-rw-r--r--src/plugins/Input/ffmpeg_legacy/decoderffmpegfactory.h51
-rw-r--r--src/plugins/Input/ffmpeg_legacy/ffmpeg_legacy.pro59
-rw-r--r--src/plugins/Input/ffmpeg_legacy/ffmpegmetadatamodel.cpp70
-rw-r--r--src/plugins/Input/ffmpeg_legacy/ffmpegmetadatamodel.h46
-rw-r--r--src/plugins/Input/ffmpeg_legacy/settingsdialog.cpp111
-rw-r--r--src/plugins/Input/ffmpeg_legacy/settingsdialog.h46
-rw-r--r--src/plugins/Input/ffmpeg_legacy/settingsdialog.ui182
-rw-r--r--src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_cs.ts153
-rw-r--r--src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_de.ts154
-rw-r--r--src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_es.ts153
-rw-r--r--src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_fr.ts153
-rw-r--r--src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_he.ts153
-rw-r--r--src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_hu.ts153
-rw-r--r--src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_it.ts153
-rw-r--r--src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_ja.ts153
-rw-r--r--src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_kk.ts153
-rw-r--r--src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_lt.ts153
-rw-r--r--src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_nl.ts153
-rw-r--r--src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_pl.ts161
-rw-r--r--src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_pl_PL.ts153
-rw-r--r--src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_pt_BR.ts153
-rw-r--r--src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_ru.ts153
-rw-r--r--src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_sk.ts153
-rw-r--r--src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_tr.ts153
-rw-r--r--src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_uk_UA.ts153
-rw-r--r--src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_zh_CN.ts153
-rw-r--r--src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_zh_TW.ts153
-rw-r--r--src/plugins/Input/ffmpeg_legacy/translations/translations.qrc24
31 files changed, 4373 insertions, 0 deletions
diff --git a/src/plugins/Input/ffmpeg_legacy/decoder_ffmpeg.cpp b/src/plugins/Input/ffmpeg_legacy/decoder_ffmpeg.cpp
new file mode 100644
index 000000000..c9845bbef
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/decoder_ffmpeg.cpp
@@ -0,0 +1,401 @@
+/***************************************************************************
+ * Copyright (C) 2006-2013 by Ilya Kotov *
+ * forkotov02@hotmail.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+#include <QObject>
+#include <QFile>
+#include "decoder_ffmpeg.h"
+
+// callbacks
+
+static int ffmpeg_read(void *data, uint8_t *buf, int size)
+{
+ DecoderFFmpeg *d = (DecoderFFmpeg*)data;
+ return (int)d->input()->read((char*)buf, size);
+}
+
+static int64_t ffmpeg_seek(void *data, int64_t offset, int whence)
+{
+ DecoderFFmpeg *d = (DecoderFFmpeg*)data;
+ int64_t absolute_pos = 0;
+ /*if(d->input()->isSequential())
+ return -1;*/
+ switch( whence )
+ {
+ case AVSEEK_SIZE:
+ return d->input()->size();
+ case SEEK_SET:
+ absolute_pos = offset;
+ break;
+ case SEEK_CUR:
+ absolute_pos = d->input()->pos() + offset;
+ break;
+ case SEEK_END:
+ absolute_pos = d->input()->size() - offset;
+ default:
+ return -1;
+ }
+ if(absolute_pos < 0 || absolute_pos > d->input()->size())
+ return -1;
+ return d->input()->seek(absolute_pos);
+}
+
+// Decoder class
+//legacy ffmpeg support
+DecoderFFmpeg::DecoderFFmpeg(const QString &path, QIODevice *i)
+ : Decoder(i)
+{
+ m_bitrate = 0;
+ m_skip = false;
+ m_totalTime = 0;
+ ic = 0;
+ m_path = path;
+ m_temp_pkt.size = 0;
+ m_pkt.size = 0;
+ m_pkt.data = 0;
+ m_output_buf = 0;
+ m_output_at = 0;
+ m_skipBytes = 0;
+ m_stream = 0;
+ av_init_packet(&m_pkt);
+ av_init_packet(&m_temp_pkt);
+}
+
+
+DecoderFFmpeg::~DecoderFFmpeg()
+{
+ m_bitrate = 0;
+ m_temp_pkt.size = 0;
+ if (ic)
+ av_close_input_stream(ic);
+ if(m_pkt.data)
+ av_free_packet(&m_pkt);
+ if(m_output_buf)
+ av_free(m_output_buf);
+ if(m_stream)
+ av_free(m_stream);
+}
+
+bool DecoderFFmpeg::initialize()
+{
+ m_bitrate = 0;
+ m_skip = false;
+ m_totalTime = 0;
+ m_seekTime = -1;
+ av_register_all();
+
+ AVProbeData pd;
+ uint8_t buf[PROBE_BUFFER_SIZE + AVPROBE_PADDING_SIZE];
+ pd.filename = m_path.toLocal8Bit().constData();
+ pd.buf_size = input()->peek((char*)buf, sizeof(buf) - AVPROBE_PADDING_SIZE);
+ pd.buf = buf;
+ if(pd.buf_size < PROBE_BUFFER_SIZE)
+ {
+ qWarning("DecoderFFmpeg: too small buffer size: %d bytes", pd.buf_size);
+ return false;
+ }
+ AVInputFormat *fmt = av_probe_input_format(&pd, 1);
+ if(!fmt)
+ {
+ qWarning("DecoderFFmpeg: usupported format");
+ return false;
+ }
+ qDebug("DecoderFFmpeg: detected format: %s", fmt->long_name);
+ qDebug("=%s=", fmt->name);
+
+#if (LIBAVFORMAT_VERSION_INT >= ((52<<16)+(105<<8)+0))
+ m_stream = avio_alloc_context(m_input_buf, INPUT_BUFFER_SIZE, 0, this, ffmpeg_read, NULL, ffmpeg_seek);
+ if(!m_stream)
+ {
+ qWarning("DecoderFFmpeg: unable to initialize I/O callbacks");
+ return false;
+ }
+ m_stream->seekable = !input()->isSequential();
+#else
+ m_stream = (ByteIOContext *)av_malloc(sizeof(ByteIOContext));
+ init_put_byte(m_stream, m_input_buf, INPUT_BUFFER_SIZE, 0, this, ffmpeg_read, NULL, ffmpeg_seek);
+ m_stream->is_streamed = input()->isSequential();
+#endif
+ m_stream->max_packet_size = INPUT_BUFFER_SIZE;
+
+ AVFormatParameters ap;
+ memset(&ap, 0, sizeof(ap));
+
+ if(av_open_input_stream(&ic, m_stream, m_path.toLocal8Bit(), fmt, &ap) != 0)
+ {
+ qDebug("DecoderFFmpeg: av_open_input_stream() failed");
+ return false;
+ }
+ av_find_stream_info(ic);
+ if(ic->pb)
+ ic->pb->eof_reached = 0;
+
+ if (input()->isSequential())
+ {
+ QMap<Qmmp::MetaData, QString> metaData;
+ AVMetadataTag *album = av_metadata_get(ic->metadata,"album",0,0);
+ if(!album)
+ album = av_metadata_get(ic->metadata,"WM/AlbumTitle",0,0);
+ AVMetadataTag *artist = av_metadata_get(ic->metadata,"artist",0,0);
+ if(!artist)
+ artist = av_metadata_get(ic->metadata,"author",0,0);
+ AVMetadataTag *comment = av_metadata_get(ic->metadata,"comment",0,0);
+ AVMetadataTag *genre = av_metadata_get(ic->metadata,"genre",0,0);
+ AVMetadataTag *title = av_metadata_get(ic->metadata,"title",0,0);
+ AVMetadataTag *year = av_metadata_get(ic->metadata,"WM/Year",0,0);
+ if(!year)
+ year = av_metadata_get(ic->metadata,"year",0,0);
+ if(!year)
+ year = av_metadata_get(ic->metadata,"date",0,0);
+ AVMetadataTag *track = av_metadata_get(ic->metadata,"track",0,0);
+ if(!track)
+ track = av_metadata_get(ic->metadata,"WM/Track",0,0);
+ if(!track)
+ track = av_metadata_get(ic->metadata,"WM/TrackNumber",0,0);
+
+ if(album)
+ metaData.insert(Qmmp::ALBUM, QString::fromUtf8(album->value).trimmed());
+ if(artist)
+ metaData.insert(Qmmp::ARTIST, QString::fromUtf8(artist->value).trimmed());
+ if(comment)
+ metaData.insert(Qmmp::COMMENT, QString::fromUtf8(comment->value).trimmed());
+ if(genre)
+ metaData.insert(Qmmp::GENRE, QString::fromUtf8(genre->value).trimmed());
+ if(title)
+ metaData.insert(Qmmp::TITLE, QString::fromUtf8(title->value).trimmed());
+ if(year)
+ metaData.insert(Qmmp::YEAR, year->value);
+ if(track)
+ metaData.insert(Qmmp::TRACK, track->value);
+ metaData.insert(Qmmp::URL, m_path);
+ addMetaData(metaData);
+ }
+
+ ic->flags |= AVFMT_FLAG_GENPTS;
+ av_read_play(ic);
+ for (wma_idx = 0; wma_idx < (int)ic->nb_streams; wma_idx++)
+ {
+ c = ic->streams[wma_idx]->codec;
+#if LIBAVCODEC_VERSION_MAJOR < 53
+ if (c->codec_type == CODEC_TYPE_AUDIO)
+#else
+ if (c->codec_type == AVMEDIA_TYPE_AUDIO)
+#endif
+ break;
+ }
+
+ if (c->channels > 0)
+ c->request_channels = qMin(2, c->channels);
+ else
+ c->request_channels = 2;
+
+#if (LIBAVCODEC_VERSION_INT >= ((52<<16)+(101<<8)+0))
+ av_dump_format(ic,0,0,0);
+#else
+ dump_format(ic,0,0,0);
+#endif
+ AVCodec *codec = avcodec_find_decoder(c->codec_id);
+
+ if (!codec)
+ {
+ qWarning("DecoderFFmpeg: unsupported codec for output stream");
+ return false;
+ }
+
+ if (avcodec_open(c, codec) < 0)
+ {
+ qWarning("DecoderFFmpeg: error while opening codec for output stream");
+ return false;
+ }
+
+ m_totalTime = input()->isSequential() ? 0 : ic->duration * 1000 / AV_TIME_BASE;
+ m_output_buf = (uint8_t *)av_malloc(AVCODEC_MAX_AUDIO_FRAME_SIZE*2);
+
+#if (LIBAVCODEC_VERSION_INT >= ((52<<16)+(20<<8)+0))
+ if(c->codec_id == CODEC_ID_SHORTEN) //ffmpeg bug workaround
+ m_totalTime = 0;
+#endif
+
+#if (LIBAVUTIL_VERSION_INT >= ((50<<16)+(38<<8)+0))
+ if(c->sample_fmt == AV_SAMPLE_FMT_S32)
+ configure(c->sample_rate, c->request_channels, Qmmp::PCM_S32LE);
+ else
+ configure(c->sample_rate, c->request_channels, Qmmp::PCM_S16LE);
+#else
+ if(c->sample_fmt == SAMPLE_FMT_S32)
+ configure(c->sample_rate, c->request_channels, Qmmp::PCM_S32LE);
+ else
+ configure(c->sample_rate, c->request_channels, Qmmp::PCM_S16LE);
+#endif
+ if(ic->bit_rate)
+ m_bitrate = ic->bit_rate/1000;
+ if(c->bit_rate)
+ m_bitrate = c->bit_rate/1000;
+ qDebug("DecoderFFmpeg: initialize succes");
+ return true;
+}
+
+
+qint64 DecoderFFmpeg::totalTime()
+{
+ return m_totalTime;
+}
+
+int DecoderFFmpeg::bitrate()
+{
+ return m_bitrate;
+}
+
+qint64 DecoderFFmpeg::read(char *audio, qint64 maxSize)
+{
+ m_skipBytes = 0;
+ if (m_skip)
+ {
+ while(m_temp_pkt.size)
+ ffmpeg_decode(m_output_buf);
+ m_output_at = 0;
+ m_skip = false;
+ }
+ if(!m_output_at)
+ fillBuffer();
+ if(!m_output_at)
+ return 0;
+ qint64 len = qMin(m_output_at, maxSize);
+ memcpy(audio, m_output_buf, len);
+ m_output_at -= len;
+ memmove(m_output_buf, m_output_buf + len, m_output_at);
+ return len;
+}
+
+qint64 DecoderFFmpeg::ffmpeg_decode(uint8_t *audio)
+{
+ int out_size = AVCODEC_MAX_AUDIO_FRAME_SIZE * 2;
+ if((m_pkt.stream_index == wma_idx))
+ {
+#if (LIBAVCODEC_VERSION_INT >= ((52<<16)+(23<<8)+0))
+ int l = avcodec_decode_audio3(c, (int16_t *)(audio), &out_size, &m_temp_pkt);
+#else
+ int l = avcodec_decode_audio2(c, (int16_t *)(audio), &out_size, m_temp_pkt.data, m_temp_pkt.size);
+#endif
+ if(c->bit_rate)
+ m_bitrate = c->bit_rate/1000;
+ if(l < 0)
+ return l;
+ m_temp_pkt.data += l;
+ m_temp_pkt.size -= l;
+ }
+ if (!m_temp_pkt.size && m_pkt.data)
+ av_free_packet(&m_pkt);
+
+ return out_size;
+}
+
+void DecoderFFmpeg::seek(qint64 pos)
+{
+ int64_t timestamp = int64_t(pos)*AV_TIME_BASE/1000;
+ if (ic->start_time != (qint64)AV_NOPTS_VALUE)
+ timestamp += ic->start_time;
+ m_seekTime = timestamp;
+ av_seek_frame(ic, -1, timestamp, AVSEEK_FLAG_BACKWARD);
+ if(m_pkt.size)
+ m_skip = true;
+}
+
+void DecoderFFmpeg::fillBuffer()
+{
+ while(!m_output_at)
+ {
+ if(!m_temp_pkt.size)
+ {
+ if (av_read_frame(ic, &m_pkt) < 0)
+ {
+ m_temp_pkt.size = 0;
+ break;
+ }
+ m_temp_pkt.size = m_pkt.size;
+ m_temp_pkt.data = m_pkt.data;
+
+ if(m_pkt.stream_index != wma_idx)
+ {
+ if(m_pkt.data)
+ av_free_packet(&m_pkt);
+ m_temp_pkt.size = 0;
+ continue;
+ }
+ if(m_seekTime && c->codec_id == CODEC_ID_APE)
+ {
+ int64_t rescaledPts = av_rescale(m_pkt.pts,
+ AV_TIME_BASE * (int64_t)
+ ic->streams[m_pkt.stream_index]->time_base.num,
+ ic->streams[m_pkt.stream_index]->time_base.den);
+ m_skipBytes = (m_seekTime - rescaledPts) * c->sample_rate * 4 / AV_TIME_BASE;
+ }
+ else
+ m_skipBytes = 0;
+ m_seekTime = 0;
+ }
+
+ if(m_skipBytes > 0 && c->codec_id == CODEC_ID_APE)
+ {
+ while (m_skipBytes > 0)
+ {
+ m_output_at = ffmpeg_decode(m_output_buf);
+ if(m_output_at < 0)
+ break;
+ m_skipBytes -= m_output_at;
+ }
+
+ if(m_skipBytes < 0)
+ {
+ qint64 size = m_output_at;
+ m_output_at = - m_skipBytes;
+ m_output_at = m_output_at/4*4;
+ memmove(m_output_buf, (m_output_buf + size - m_output_at), m_output_at);
+ m_skipBytes = 0;
+ }
+ }
+ else
+ m_output_at = ffmpeg_decode(m_output_buf);
+
+ if(m_output_at < 0)
+ {
+ m_output_at = 0;
+ m_temp_pkt.size = 0;
+
+ if(c->codec_id == CODEC_ID_SHORTEN)
+ {
+ if(m_pkt.data)
+ av_free_packet(&m_pkt);
+ m_pkt.data = 0;
+ break;
+ }
+ continue;
+ }
+ else if(m_output_at == 0)
+ {
+ if(c->codec_id == CODEC_ID_SHORTEN)
+ continue;
+
+ if(m_pkt.data)
+ av_free_packet(&m_pkt);
+ m_pkt.data = 0;
+ break;
+ }
+ }
+}
diff --git a/src/plugins/Input/ffmpeg_legacy/decoder_ffmpeg.h b/src/plugins/Input/ffmpeg_legacy/decoder_ffmpeg.h
new file mode 100644
index 000000000..f8de1aea3
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/decoder_ffmpeg.h
@@ -0,0 +1,84 @@
+/***************************************************************************
+ * Copyright (C) 2006-2013 by Ilya Kotov *
+ * forkotov02@hotmail.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+#ifndef __decoder_ffmeg_h
+#define __decoder_ffmeg_h
+
+extern "C"{
+#include <libavformat/avformat.h>
+#include <libavcodec/avcodec.h>
+#include <libavutil/mathematics.h>
+#if (LIBAVUTIL_VERSION_INT >= ((51<<16)+(32<<8)+0))
+#include <libavutil/dict.h>
+#endif
+}
+
+
+#include <qmmp/decoder.h>
+
+#define PROBE_BUFFER_SIZE 8192
+#define INPUT_BUFFER_SIZE 16384
+
+class DecoderFFmpeg : public Decoder
+{
+public:
+ DecoderFFmpeg(const QString &, QIODevice *i);
+ virtual ~DecoderFFmpeg();
+
+ // Standard Decoder API
+ bool initialize();
+ qint64 totalTime();
+ int bitrate();
+ qint64 read(char *audio, qint64 maxSize);
+ void seek(qint64 time);
+
+private:
+ //helper functions
+ void fillBuffer();
+
+ AVFormatContext *ic;
+ AVCodecContext *c;
+
+ uint wma_st_buff, wma_idx2;
+ int m_bitrate, wma_idx;
+
+ QString m_path;
+ qint64 m_totalTime;
+ AVPacket m_pkt;
+ AVPacket m_temp_pkt;
+ qint64 m_output_at;
+ uchar m_input_buf[INPUT_BUFFER_SIZE + FF_INPUT_BUFFER_PADDING_SIZE];
+ int64_t m_seekTime;
+ qint64 m_skipBytes;
+
+ qint64 ffmpeg_decode(uint8_t *audio);
+ bool m_skip;
+
+#if (LIBAVCODEC_VERSION_INT >= ((52<<16)+(102<<8)+0))
+ AVIOContext *m_stream;
+#else
+ ByteIOContext *m_stream;
+#endif
+
+ uint8_t *m_output_buf;
+};
+
+
+#endif // __decoder_ffmpeg_h
diff --git a/src/plugins/Input/ffmpeg_legacy/decoderffmpegfactory.cpp b/src/plugins/Input/ffmpeg_legacy/decoderffmpegfactory.cpp
new file mode 100644
index 000000000..db98b3521
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/decoderffmpegfactory.cpp
@@ -0,0 +1,230 @@
+/***************************************************************************
+ * Copyright (C) 2008-2013 by Ilya Kotov *
+ * forkotov02@hotmail.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+#include <QtGui>
+#include <QSettings>
+
+extern "C"{
+#include <libavformat/avformat.h>
+#include <libavcodec/avcodec.h>
+#if (LIBAVUTIL_VERSION_INT >= ((51<<16)+(32<<8)+0))
+#include <libavutil/dict.h>
+#endif
+}
+
+#include "ffmpegmetadatamodel.h"
+#include "settingsdialog.h"
+#include "decoder_ffmpeg.h"
+#include "decoderffmpegfactory.h"
+
+
+// DecoderFFmpegFactory
+
+bool DecoderFFmpegFactory::supports(const QString &source) const
+{
+ foreach(QString filter, properties().filters)
+ {
+ QRegExp regexp(filter, Qt::CaseInsensitive, QRegExp::Wildcard);
+ if (regexp.exactMatch(source))
+ return true;
+ }
+ return false;
+}
+
+bool DecoderFFmpegFactory::canDecode(QIODevice *i) const
+{
+ av_register_all();
+ QStringList filters = properties().filters;
+
+ AVProbeData pd;
+ uint8_t buf[PROBE_BUFFER_SIZE + AVPROBE_PADDING_SIZE];
+ pd.filename = 0;
+ pd.buf_size = i->peek((char*)buf, sizeof(buf) - AVPROBE_PADDING_SIZE);
+ pd.buf = buf;
+ if(pd.buf_size < PROBE_BUFFER_SIZE)
+ return false;
+ AVInputFormat *fmt = av_probe_input_format(&pd, 1);
+ if(!fmt)
+ {
+ qWarning("DecoderFFmpegFactory: usupported format");
+ return false;
+ }
+ if(filters.contains("*.wma") && !memcmp(fmt->name, "asf", 3))
+ return true;
+ else if(filters.contains("*.mp3") && !memcmp(fmt->name, "mp3", 3))
+ return true;
+ else if(filters.contains("*.aac") && !memcmp(fmt->name, "aac", 3))
+ return true;
+ else if(filters.contains("*.ac3") && !memcmp(fmt->name, "eac3", 4))
+ return true;
+ else if(filters.contains("*.dts") && !memcmp(fmt->name, "dts", 3))
+ return true;
+ else if(filters.contains("*.mka") && !memcmp(fmt->name, "mka", 3))
+ return true;
+ else if(filters.contains("*.vqf") && !memcmp(fmt->name, "vqf", 3))
+ return true;
+ return false;
+}
+
+const DecoderProperties DecoderFFmpegFactory::properties() const
+{
+ av_register_all();
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ QStringList filters;
+ filters << "*.wma" << "*.ape";
+ filters = settings.value("FFMPEG_legacy/filters", filters).toStringList();
+
+ if(!avcodec_find_decoder(CODEC_ID_AAC))
+ {
+ filters.removeAll("*.aac");
+ filters.removeAll("*.m4a");
+ }
+ DecoderProperties properties;
+ properties.name = tr("FFmpeg Plugin");
+ properties.filters = filters;
+ properties.description = tr("FFmpeg Formats");
+ if(filters.contains("*.wma"))
+ properties.contentTypes << "audio/x-ms-wma";
+ if(filters.contains("*.mp3"))
+ properties.contentTypes << "audio/mpeg";
+ if(filters.contains("*.aac"))
+ properties.contentTypes << "audio/aac" << "audio/aacp";
+ if(filters.contains("*.shn"))
+ properties.contentTypes << "audio/x-ffmpeg-shorten";
+ if(filters.contains("*.m4a"))
+ {
+ properties.contentTypes << "audio/3gpp" << "audio/3gpp2" << "audio/mp4";
+ properties.contentTypes << "audio/MP4A-LATM" << "audio/mpeg4-generic";
+ properties.contentTypes << "audio/m4a";
+ }
+ if(filters.contains("*.ac3"))
+ properties.contentTypes << "audio/ac3" << "audio/eac3";
+ if(filters.contains("*.dts"))
+ properties.contentTypes << "audio/dts";
+ if(filters.contains("*.mka"))
+ properties.contentTypes << "audio/true-hd" << "audio/x-matroska";
+ properties.shortName = "ffmpeg_legacy";
+ properties.hasAbout = true;
+ properties.hasSettings = true;
+ properties.noInput = false;
+ properties.priority = 10;
+ return properties;
+}
+
+Decoder *DecoderFFmpegFactory::create(const QString &path, QIODevice *input)
+{
+ return new DecoderFFmpeg(path, input);
+}
+
+QList<FileInfo *> DecoderFFmpegFactory::createPlayList(const QString &fileName, bool useMetaData)
+{
+
+ QList <FileInfo*> list;
+ avcodec_init();
+ avcodec_register_all();
+ av_register_all();
+ AVFormatContext *in = 0;
+
+ if (av_open_input_file(&in, fileName.toLocal8Bit(), 0, 0, 0) < 0)
+ {
+ qDebug("DecoderFFmpegFactory: unable to open file");
+ return list;
+ }
+ FileInfo *info = new FileInfo(fileName);
+ av_find_stream_info(in);
+
+ if (useMetaData)
+ {
+ AVMetadataTag *album = av_metadata_get(in->metadata,"album",0,0);
+ if(!album)
+ album = av_metadata_get(in->metadata,"WM/AlbumTitle",0,0);
+ AVMetadataTag *artist = av_metadata_get(in->metadata,"artist",0,0);
+ if(!artist)
+ artist = av_metadata_get(in->metadata,"author",0,0);
+ AVMetadataTag *comment = av_metadata_get(in->metadata,"comment",0,0);
+ AVMetadataTag *genre = av_metadata_get(in->metadata,"genre",0,0);
+ AVMetadataTag *title = av_metadata_get(in->metadata,"title",0,0);
+ AVMetadataTag *year = av_metadata_get(in->metadata,"WM/Year",0,0);
+ if(!year)
+ year = av_metadata_get(in->metadata,"year",0,0);
+ if(!year)
+ year = av_metadata_get(in->metadata,"date",0,0);
+ AVMetadataTag *track = av_metadata_get(in->metadata,"track",0,0);
+ if(!track)
+ track = av_metadata_get(in->metadata,"WM/Track",0,0);
+ if(!track)
+ track = av_metadata_get(in->metadata,"WM/TrackNumber",0,0);
+
+ if(album)
+ info->setMetaData(Qmmp::ALBUM, QString::fromUtf8(album->value).trimmed());
+ if(artist)
+ info->setMetaData(Qmmp::ARTIST, QString::fromUtf8(artist->value).trimmed());
+ if(comment)
+ info->setMetaData(Qmmp::COMMENT, QString::fromUtf8(comment->value).trimmed());
+ if(genre)
+ info->setMetaData(Qmmp::GENRE, QString::fromUtf8(genre->value).trimmed());
+ if(title)
+ info->setMetaData(Qmmp::TITLE, QString::fromUtf8(title->value).trimmed());
+ if(year)
+ info->setMetaData(Qmmp::YEAR, year->value);
+ if(track)
+ info->setMetaData(Qmmp::TRACK, track->value);
+ }
+ info->setLength(in->duration/AV_TIME_BASE);
+ av_close_input_file(in);
+ list << info;
+ return list;
+}
+
+MetaDataModel* DecoderFFmpegFactory::createMetaDataModel(const QString &path, QObject *parent)
+{
+ return new FFmpegMetaDataModel(path,parent);
+}
+
+void DecoderFFmpegFactory::showSettings(QWidget *parent)
+{
+ SettingsDialog *s = new SettingsDialog(parent);
+ s->show();
+}
+
+void DecoderFFmpegFactory::showAbout(QWidget *parent)
+{
+ QMessageBox::about (parent, tr("About FFmpeg Audio Plugin"),
+
+ tr("Qmmp FFmpeg Audio Plugin")+"\n"+
+ QString(tr("Compiled against libavformat-%1.%2.%3 and libavcodec-%4.%5.%6"))
+ .arg(LIBAVFORMAT_VERSION_MAJOR)
+ .arg(LIBAVFORMAT_VERSION_MINOR)
+ .arg(LIBAVFORMAT_VERSION_MICRO)
+ .arg(LIBAVCODEC_VERSION_MAJOR)
+ .arg(LIBAVCODEC_VERSION_MINOR)
+ .arg(LIBAVCODEC_VERSION_MICRO)+"\n"+
+ tr("Written by: Ilya Kotov <forkotov02@hotmail.ru>"));
+}
+
+QTranslator *DecoderFFmpegFactory::createTranslator(QObject *parent)
+{
+ QTranslator *translator = new QTranslator(parent);
+ QString locale = Qmmp::systemLanguageID();
+ translator->load(QString(":/ffmpeg_legacy_plugin_") + locale);
+ return translator;
+}
+
+Q_EXPORT_PLUGIN2(ffmpeg,DecoderFFmpegFactory)
diff --git a/src/plugins/Input/ffmpeg_legacy/decoderffmpegfactory.h b/src/plugins/Input/ffmpeg_legacy/decoderffmpegfactory.h
new file mode 100644
index 000000000..a668c8608
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/decoderffmpegfactory.h
@@ -0,0 +1,51 @@
+/***************************************************************************
+ * Copyright (C) 2006-2013 by Ilya Kotov *
+ * forkotov02@hotmail.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+#ifndef DECODERFFMPEGFACTORY_H
+#define DECODERFFMPEGFACTORY_H
+
+#include <QObject>
+#include <QString>
+#include <QIODevice>
+#include <QWidget>
+
+#include <qmmp/decoder.h>
+#include <qmmp/output.h>
+#include <qmmp/decoderfactory.h>
+#include <qmmp/fileinfo.h>
+
+class DecoderFFmpegFactory : public QObject,
+ DecoderFactory
+{
+Q_OBJECT
+Q_INTERFACES(DecoderFactory)
+
+public:
+ bool supports(const QString &source) const;
+ bool canDecode(QIODevice *input) const;
+ const DecoderProperties properties() const;
+ Decoder *create(const QString &, QIODevice *);
+ QList<FileInfo *> createPlayList(const QString &fileName, bool useMetaData);
+ MetaDataModel* createMetaDataModel(const QString &path, QObject *parent = 0);
+ void showSettings(QWidget *parent);
+ void showAbout(QWidget *parent);
+ QTranslator *createTranslator(QObject *parent);
+};
+
+#endif
diff --git a/src/plugins/Input/ffmpeg_legacy/ffmpeg_legacy.pro b/src/plugins/Input/ffmpeg_legacy/ffmpeg_legacy.pro
new file mode 100644
index 000000000..54099d44a
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/ffmpeg_legacy.pro
@@ -0,0 +1,59 @@
+include(../../plugins.pri)
+FORMS += settingsdialog.ui
+HEADERS += decoderffmpegfactory.h \
+ decoder_ffmpeg.h \
+ settingsdialog.h \
+ ffmpegmetadatamodel.h
+SOURCES += decoder_ffmpeg.cpp \
+ decoderffmpegfactory.cpp \
+ settingsdialog.cpp \
+ ffmpegmetadatamodel.cpp
+
+INCLUDEPATH += ../../../
+
+
+
+CONFIG += release \
+ warn_on \
+ plugin \
+ link_pkgconfig
+TEMPLATE = lib
+
+TARGET = $$PLUGINS_PREFIX/Input/ffmpeg_legacy
+
+unix {
+ isEmpty(LIB_DIR):LIB_DIR = /lib
+ target.path = $$LIB_DIR/qmmp/Input
+ INSTALLS += target
+ QMAKE_CLEAN = $$PLUGINS_PREFIX/Input/libffmpeg_legacy.so
+ LIBS += -lqmmp
+ QMAKE_LIBDIR += ../../../../lib
+ PKGCONFIG += libavcodec libavformat libavutil
+}
+
+
+win32 {
+ HEADERS += ../../../../src/qmmp/metadatamodel.h \
+ ../../../../src/qmmp/decoderfactory.h
+ QMAKE_LIBDIR += ../../../../bin
+ LIBS += -lqmmp0 -lavcodec.dll -lavformat.dll -lavutil.dll
+}
+
+DEFINES += __STDC_CONSTANT_MACROS
+
+TRANSLATIONS = translations/ffmpeg_plugin_legacy_ru.ts \
+ translations/ffmpeg_plugin_legacy_uk_UA.ts \
+ translations/ffmpeg_plugin_legacy_zh_CN.ts \
+ translations/ffmpeg_plugin_legacy_zh_TW.ts \
+ translations/ffmpeg_plugin_legacy_cs.ts \
+ translations/ffmpeg_plugin_legacy_pl.ts \
+ translations/ffmpeg_plugin_legacy_de.ts \
+ translations/ffmpeg_plugin_legacy_it.ts \
+ translations/ffmpeg_plugin_legacy_tr.ts \
+ translations/ffmpeg_plugin_legacy_lt.ts \
+ translations/ffmpeg_plugin_legacy_nl.ts \
+ translations/ffmpeg_plugin_legacy_ja.ts \
+ translations/ffmpeg_plugin_legacy_es.ts
+
+RESOURCES = translations/translations.qrc
+
diff --git a/src/plugins/Input/ffmpeg_legacy/ffmpegmetadatamodel.cpp b/src/plugins/Input/ffmpeg_legacy/ffmpegmetadatamodel.cpp
new file mode 100644
index 000000000..412b139f8
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/ffmpegmetadatamodel.cpp
@@ -0,0 +1,70 @@
+/***************************************************************************
+ * Copyright (C) 2009-2013 by Ilya Kotov *
+ * forkotov02@hotmail.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+#include "ffmpegmetadatamodel.h"
+
+FFmpegMetaDataModel::FFmpegMetaDataModel(const QString &path, QObject *parent) : MetaDataModel(parent)
+{
+ m_in = 0;
+ avcodec_init();
+ avcodec_register_all();
+ av_register_all();
+ if (av_open_input_file(&m_in, path.toLocal8Bit(), NULL,0, NULL) < 0)
+ return;
+ av_find_stream_info(m_in);
+ av_read_play(m_in);
+}
+
+FFmpegMetaDataModel::~FFmpegMetaDataModel()
+{
+ if(m_in)
+ av_close_input_file(m_in);
+}
+
+QHash<QString, QString> FFmpegMetaDataModel::audioProperties()
+{
+ QHash<QString, QString> ap;
+ if(!m_in)
+ return ap;
+ QString text = QString("%1").arg(int(m_in->duration/AV_TIME_BASE)/60);
+ text +=":"+QString("%1").arg(int(m_in->duration/AV_TIME_BASE)%60,2,10,QChar('0'));
+ ap.insert(tr("Length"), text);
+ ap.insert(tr("File size"), QString("%1 ").arg(m_in->file_size/1024)+" "+tr("KB"));
+ ap.insert(tr("Bitrate"), QString("%1 "+tr("kbps")).arg(m_in->bit_rate/1000));
+
+ AVCodecContext *c = 0;
+ uint wma_idx;
+ for (wma_idx = 0; wma_idx < m_in->nb_streams; wma_idx++)
+ {
+ c = m_in->streams[wma_idx]->codec;
+#if LIBAVCODEC_VERSION_MAJOR < 53
+ if (c->codec_type == CODEC_TYPE_AUDIO)
+#else
+ if (c->codec_type == AVMEDIA_TYPE_AUDIO)
+#endif
+ break;
+ }
+ if (c)
+ {
+ ap.insert(tr("Sample rate"), QString("%1 " + tr("Hz")).arg(c->sample_rate));
+ ap.insert(tr("Channels"), QString("%1").arg(c->channels));
+ }
+ return ap;
+}
diff --git a/src/plugins/Input/ffmpeg_legacy/ffmpegmetadatamodel.h b/src/plugins/Input/ffmpeg_legacy/ffmpegmetadatamodel.h
new file mode 100644
index 000000000..d2e3e4e87
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/ffmpegmetadatamodel.h
@@ -0,0 +1,46 @@
+/***************************************************************************
+ * Copyright (C) 2009-2013 by Ilya Kotov *
+ * forkotov02@hotmail.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+#ifndef FFMPEGMETADATAMODEL_H
+#define FFMPEGMETADATAMODEL_H
+
+extern "C"{
+#include <libavformat/avformat.h>
+#include <libavcodec/avcodec.h>
+#if (LIBAVUTIL_VERSION_INT >= ((51<<16)+(32<<8)+0))
+#include <libavutil/dict.h>
+#endif
+}
+
+#include <qmmp/metadatamodel.h>
+
+class FFmpegMetaDataModel : public MetaDataModel
+{
+Q_OBJECT
+public:
+ FFmpegMetaDataModel(const QString &path, QObject *parent);
+ ~FFmpegMetaDataModel();
+ QHash<QString, QString> audioProperties();
+
+private:
+ AVFormatContext *m_in;
+};
+
+#endif // FFMPEGMETADATAMODEL_H
diff --git a/src/plugins/Input/ffmpeg_legacy/settingsdialog.cpp b/src/plugins/Input/ffmpeg_legacy/settingsdialog.cpp
new file mode 100644
index 000000000..f0a518276
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/settingsdialog.cpp
@@ -0,0 +1,111 @@
+/***************************************************************************
+ * Copyright (C) 2008-2013 by Ilya Kotov *
+ * forkotov02@hotmail.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+#include <QSettings>
+#include <QStringList>
+
+#include <qmmp/qmmp.h>
+
+extern "C"{
+#include <libavformat/avformat.h>
+#include <libavcodec/avcodec.h>
+#if (LIBAVUTIL_VERSION_INT >= ((51<<16)+(32<<8)+0))
+#include <libavutil/dict.h>
+#endif
+}
+#include "settingsdialog.h"
+
+SettingsDialog::SettingsDialog(QWidget *parent)
+ : QDialog(parent)
+{
+ ui.setupUi(this);
+ setAttribute(Qt::WA_DeleteOnClose);
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ QStringList filters;
+ filters << "*.wma";
+ filters << "*.ape";
+ filters = settings.value("FFMPEG_legacy/filters", filters).toStringList();
+ avcodec_register_all();
+ av_register_all();
+ ui.wmaCheckBox->setEnabled(avcodec_find_decoder(CODEC_ID_WMAV1));
+ ui.wmaCheckBox->setChecked(filters.contains("*.wma") && avcodec_find_decoder(CODEC_ID_WMAV1));
+ ui.apeCheckBox->setEnabled(avcodec_find_decoder(CODEC_ID_APE));
+ ui.apeCheckBox->setChecked(filters.contains("*.ape") && avcodec_find_decoder(CODEC_ID_APE));
+ ui.ttaCheckBox->setEnabled(avcodec_find_decoder(CODEC_ID_TTA));
+ ui.ttaCheckBox->setChecked(filters.contains("*.tta") && avcodec_find_decoder(CODEC_ID_TTA));
+ ui.aacCheckBox->setEnabled(avcodec_find_decoder(CODEC_ID_AAC));
+ ui.aacCheckBox->setChecked(filters.contains("*.aac") && avcodec_find_decoder(CODEC_ID_AAC));
+ ui.mp3CheckBox->setEnabled(avcodec_find_decoder(CODEC_ID_MP3));
+ ui.mp3CheckBox->setChecked(filters.contains("*.mp3") && avcodec_find_decoder(CODEC_ID_MP3));
+ ui.mp4CheckBox->setEnabled(avcodec_find_decoder(CODEC_ID_AAC));
+ ui.mp4CheckBox->setChecked(filters.contains("*.m4a") && (avcodec_find_decoder(CODEC_ID_AAC)
+ || avcodec_find_decoder(CODEC_ID_ALAC)));
+ ui.raCheckBox->setEnabled(avcodec_find_decoder(CODEC_ID_RA_288));
+ ui.raCheckBox->setChecked(filters.contains("*.ra") && avcodec_find_decoder(CODEC_ID_RA_288));
+ ui.shCheckBox->setChecked(filters.contains("*.shn") && avcodec_find_decoder(CODEC_ID_SHORTEN));
+ ui.ac3CheckBox->setEnabled(avcodec_find_decoder(CODEC_ID_EAC3));
+ ui.ac3CheckBox->setChecked(filters.contains("*.ac3") && avcodec_find_decoder(CODEC_ID_EAC3));
+ ui.dtsCheckBox->setEnabled(avcodec_find_decoder(CODEC_ID_DTS));
+ ui.dtsCheckBox->setChecked(filters.contains("*.dts") && avcodec_find_decoder(CODEC_ID_DTS));
+ ui.mkaCheckBox->setEnabled(avcodec_find_decoder(CODEC_ID_TRUEHD));
+ ui.mkaCheckBox->setChecked(filters.contains("*.mka") && avcodec_find_decoder(CODEC_ID_TRUEHD));
+ ui.vqfCheckBox->setEnabled(avcodec_find_decoder(CODEC_ID_TWINVQ));
+#if (LIBAVCODEC_VERSION_INT >= ((53<<16)+(42<<8)+4))
+ ui.vqfCheckBox->setChecked(filters.contains("*.vqf") && avcodec_find_decoder(CODEC_ID_TWINVQ));
+#else
+ ui.vqfCheckBox->hide();
+#endif
+}
+
+SettingsDialog::~SettingsDialog()
+{
+}
+
+void SettingsDialog::accept()
+{
+ QStringList filters;
+ if (ui.mp3CheckBox->isChecked())
+ filters << "*.mp3";
+ if (ui.wmaCheckBox->isChecked())
+ filters << "*.wma";
+ if (ui.apeCheckBox->isChecked())
+ filters << "*.ape";
+ if (ui.ttaCheckBox->isChecked())
+ filters << "*.tta";
+ if (ui.aacCheckBox->isChecked())
+ filters << "*.aac";
+ if (ui.mp4CheckBox->isChecked())
+ filters << "*.m4a";
+ if (ui.raCheckBox->isChecked())
+ filters << "*.ra";
+ if (ui.shCheckBox->isChecked())
+ filters << "*.shn";
+ if (ui.ac3CheckBox->isChecked())
+ filters << "*.ac3";
+ if (ui.dtsCheckBox->isChecked())
+ filters << "*.dts";
+ if (ui.mkaCheckBox->isChecked())
+ filters << "*.mka";
+ if (ui.vqfCheckBox->isChecked())
+ filters << "*.vqf";
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ settings.setValue("FFMPEG_legacy/filters", filters);
+ QDialog::accept();
+}
diff --git a/src/plugins/Input/ffmpeg_legacy/settingsdialog.h b/src/plugins/Input/ffmpeg_legacy/settingsdialog.h
new file mode 100644
index 000000000..9721dfcb0
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/settingsdialog.h
@@ -0,0 +1,46 @@
+/***************************************************************************
+ * Copyright (C) 2008-2013 by Ilya Kotov *
+ * forkotov02@hotmail.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+#ifndef SETTINGSDIALOG_H
+#define SETTINGSDIALOG_H
+
+#include <QDialog>
+
+#include "ui_settingsdialog.h"
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class SettingsDialog : public QDialog
+{
+ Q_OBJECT
+public:
+ SettingsDialog(QWidget *parent = 0);
+
+ ~SettingsDialog();
+
+public slots:
+ virtual void accept();
+
+private:
+ Ui::SettingsDialog ui;
+
+};
+
+#endif
diff --git a/src/plugins/Input/ffmpeg_legacy/settingsdialog.ui b/src/plugins/Input/ffmpeg_legacy/settingsdialog.ui
new file mode 100644
index 000000000..cdeac3529
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/settingsdialog.ui
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>SettingsDialog</class>
+ <widget class="QDialog" name="SettingsDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>308</width>
+ <height>328</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>FFmpeg Plugin Settings</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <property name="leftMargin">
+ <number>6</number>
+ </property>
+ <property name="rightMargin">
+ <number>6</number>
+ </property>
+ <property name="bottomMargin">
+ <number>6</number>
+ </property>
+ <item row="1" column="0">
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>178</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="1" column="1">
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0" colspan="2">
+ <widget class="QGroupBox" name="groupBox">
+ <property name="title">
+ <string>Formats</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QCheckBox" name="wmaCheckBox">
+ <property name="text">
+ <string>Windows Media Audio</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="apeCheckBox">
+ <property name="text">
+ <string>Monkey's Audio (APE)</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="ttaCheckBox">
+ <property name="text">
+ <string>True Audio</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="aacCheckBox">
+ <property name="text">
+ <string>ADTS AAC</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="mp3CheckBox">
+ <property name="text">
+ <string>MP3 (MPEG audio layer 3)</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="mp4CheckBox">
+ <property name="text">
+ <string>MPEG-4 AAC/ALAC</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="raCheckBox">
+ <property name="text">
+ <string>RealAudio 1.0/2.0</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="shCheckBox">
+ <property name="text">
+ <string>Shorten</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="ac3CheckBox">
+ <property name="text">
+ <string>AC3/EAC</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="dtsCheckBox">
+ <property name="text">
+ <string>DTS/DTS-Core</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="mkaCheckBox">
+ <property name="text">
+ <string>Matroska Audio (Dolby TrueHD Lossless)</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="vqfCheckBox">
+ <property name="text">
+ <string>VQF</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>SettingsDialog</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>214</x>
+ <y>167</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>103</x>
+ <y>160</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>SettingsDialog</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>269</x>
+ <y>174</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>148</x>
+ <y>169</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_cs.ts b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_cs.ts
new file mode 100644
index 000000000..833d5e24d
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_cs.ts
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="cs">
+<context>
+ <name>DecoderFFmpegFactory</name>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="209"/>
+ <source>About FFmpeg Audio Plugin</source>
+ <translation>O modulu FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="211"/>
+ <source>Qmmp FFmpeg Audio Plugin</source>
+ <translation>Vstupní modul Qmmp FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="219"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation>Autor: Ilja Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="100"/>
+ <source>FFmpeg Plugin</source>
+ <translation>Modul FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="102"/>
+ <source>FFmpeg Formats</source>
+ <translation>Formáty FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="212"/>
+ <source>Compiled against libavformat-%1.%2.%3 and libavcodec-%4.%5.%6</source>
+ <translation>Přeloženo s libavformat-%1.%2.%3 a libavcodec-%4.%5.%6</translation>
+ </message>
+</context>
+<context>
+ <name>FFmpegMetaDataModel</name>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="48"/>
+ <source>Length</source>
+ <translation>Délka</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>File size</source>
+ <translation>Velikost souboru</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>KB</source>
+ <translation>KiB</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>Bitrate</source>
+ <translation>Datový tok</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>kbps</source>
+ <translation>kbps</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Sample rate</source>
+ <translation>Vzorkovací frekvence</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Hz</source>
+ <translation>Hz</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="67"/>
+ <source>Channels</source>
+ <translation>Počet kanálů</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Formats</source>
+ <translation>Formáty</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="61"/>
+ <source>Windows Media Audio</source>
+ <translation>Windows Media Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="75"/>
+ <source>True Audio</source>
+ <translation>True Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="82"/>
+ <source>ADTS AAC</source>
+ <translation>ADTS AAC</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="96"/>
+ <source>MPEG-4 AAC/ALAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="103"/>
+ <source>RealAudio 1.0/2.0</source>
+ <translation>RealAudio 1.0/2.0</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="110"/>
+ <source>Shorten</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="117"/>
+ <source>AC3/EAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="124"/>
+ <source>DTS/DTS-Core</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="131"/>
+ <source>Matroska Audio (Dolby TrueHD Lossless)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="138"/>
+ <source>VQF</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>FFmpeg Plugin Settings</source>
+ <translation>Nastavení modulu FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="68"/>
+ <source>Monkey&apos;s Audio (APE)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="89"/>
+ <source>MP3 (MPEG audio layer 3)</source>
+ <translation>MP3 (MPEG audio layer 3)</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_de.ts b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_de.ts
new file mode 100644
index 000000000..021c9c3d6
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_de.ts
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="de_DE">
+<context>
+ <name>DecoderFFmpegFactory</name>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="209"/>
+ <source>About FFmpeg Audio Plugin</source>
+ <translation>Über FFmpeg-Audio-Modul</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="211"/>
+ <source>Qmmp FFmpeg Audio Plugin</source>
+ <translation>Qmmp FFmpeg-Audio-Modul</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="219"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation>Autor: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="100"/>
+ <source>FFmpeg Plugin</source>
+ <translation>FFmpeg-Modul</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="102"/>
+ <source>FFmpeg Formats</source>
+ <translation>FFmpeg-Formate</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="212"/>
+ <source>Compiled against libavformat-%1.%2.%3 and libavcodec-%4.%5.%6</source>
+ <translation>Kompiliert gegen libavformat-%1.%2.%3 und libavcodec-%4.%5.%6</translation>
+ </message>
+</context>
+<context>
+ <name>FFmpegMetaDataModel</name>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="48"/>
+ <source>Length</source>
+ <translation>Länge</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>File size</source>
+ <translation>Dateigröße</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>KB</source>
+ <translation>KB</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>Bitrate</source>
+ <translation>Bitrate</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>kbps</source>
+ <translation>kbps</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Sample rate</source>
+ <translation>Abtastrate</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Hz</source>
+ <translation>Hz</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="67"/>
+ <source>Channels</source>
+ <translation>Kanäle</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Formats</source>
+ <translation>Formate</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="61"/>
+ <source>Windows Media Audio</source>
+ <translation>Windows Media Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="75"/>
+ <source>True Audio</source>
+ <translation>True Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="82"/>
+ <source>ADTS AAC</source>
+ <translation>ADTS AAC</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="96"/>
+ <source>MPEG-4 AAC/ALAC</source>
+ <translation>MPEG-4 AAC/ALAC</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="103"/>
+ <source>RealAudio 1.0/2.0</source>
+ <translation>RealAudio 1.0/2.0</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="110"/>
+ <source>Shorten</source>
+ <translatorcomment>Name eines Dateiformats</translatorcomment>
+ <translation>Shorten</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="117"/>
+ <source>AC3/EAC</source>
+ <translation>AC3/EAC</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="124"/>
+ <source>DTS/DTS-Core</source>
+ <translation>DTS/DTS-Core</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="131"/>
+ <source>Matroska Audio (Dolby TrueHD Lossless)</source>
+ <translation>Matroska Audio (Dolby TrueHD, verlustfrei)</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="138"/>
+ <source>VQF</source>
+ <translation>VQF</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>FFmpeg Plugin Settings</source>
+ <translation>Einstellungen FFmpeg-Modul</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="68"/>
+ <source>Monkey&apos;s Audio (APE)</source>
+ <translation>Monkey’s Audio (APE)</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="89"/>
+ <source>MP3 (MPEG audio layer 3)</source>
+ <translation>MP3 (MPEG Audio Layer 3)</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_es.ts b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_es.ts
new file mode 100644
index 000000000..9ef0d215d
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_es.ts
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="es">
+<context>
+ <name>DecoderFFmpegFactory</name>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="209"/>
+ <source>About FFmpeg Audio Plugin</source>
+ <translation>Acerca del módulo de audio FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="211"/>
+ <source>Qmmp FFmpeg Audio Plugin</source>
+ <translation>Módulo de audio FFmpeg para Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="219"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation>Escrito por: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="100"/>
+ <source>FFmpeg Plugin</source>
+ <translation>Módulo FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="102"/>
+ <source>FFmpeg Formats</source>
+ <translation>Formatos FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="212"/>
+ <source>Compiled against libavformat-%1.%2.%3 and libavcodec-%4.%5.%6</source>
+ <translation>Compilado con libavformat-%1.%2.%3 y libavcodec-%4.%5.%6</translation>
+ </message>
+</context>
+<context>
+ <name>FFmpegMetaDataModel</name>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="48"/>
+ <source>Length</source>
+ <translation>Duración</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>File size</source>
+ <translation>Tamaño del archivo</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>KB</source>
+ <translation>KB</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>Bitrate</source>
+ <translation>Tasa de bits</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>kbps</source>
+ <translation>kbps</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Sample rate</source>
+ <translation>Frecuencia</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Hz</source>
+ <translation>Hz</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="67"/>
+ <source>Channels</source>
+ <translation>Canales</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Formats</source>
+ <translation>Formatos</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="61"/>
+ <source>Windows Media Audio</source>
+ <translation>Windows Media Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="75"/>
+ <source>True Audio</source>
+ <translation>True Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="82"/>
+ <source>ADTS AAC</source>
+ <translation>ADTS AAC</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="96"/>
+ <source>MPEG-4 AAC/ALAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="103"/>
+ <source>RealAudio 1.0/2.0</source>
+ <translation>RealAudio 1.0/2.0</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="110"/>
+ <source>Shorten</source>
+ <translation>Shorten</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="117"/>
+ <source>AC3/EAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="124"/>
+ <source>DTS/DTS-Core</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="131"/>
+ <source>Matroska Audio (Dolby TrueHD Lossless)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="138"/>
+ <source>VQF</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>FFmpeg Plugin Settings</source>
+ <translation>Configuración del módulo FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="68"/>
+ <source>Monkey&apos;s Audio (APE)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="89"/>
+ <source>MP3 (MPEG audio layer 3)</source>
+ <translation>MP3 (MPEG Audio Layer 3)</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_fr.ts b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_fr.ts
new file mode 100644
index 000000000..51f445581
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_fr.ts
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+ <name>DecoderFFmpegFactory</name>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="100"/>
+ <source>FFmpeg Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="102"/>
+ <source>FFmpeg Formats</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="209"/>
+ <source>About FFmpeg Audio Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="211"/>
+ <source>Qmmp FFmpeg Audio Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="212"/>
+ <source>Compiled against libavformat-%1.%2.%3 and libavcodec-%4.%5.%6</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="219"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FFmpegMetaDataModel</name>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="48"/>
+ <source>Length</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>File size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>Bitrate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>kbps</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Sample rate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Hz</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="67"/>
+ <source>Channels</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>FFmpeg Plugin Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Formats</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="61"/>
+ <source>Windows Media Audio</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="68"/>
+ <source>Monkey&apos;s Audio (APE)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="75"/>
+ <source>True Audio</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="82"/>
+ <source>ADTS AAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="89"/>
+ <source>MP3 (MPEG audio layer 3)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="96"/>
+ <source>MPEG-4 AAC/ALAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="103"/>
+ <source>RealAudio 1.0/2.0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="110"/>
+ <source>Shorten</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="117"/>
+ <source>AC3/EAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="124"/>
+ <source>DTS/DTS-Core</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="131"/>
+ <source>Matroska Audio (Dolby TrueHD Lossless)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="138"/>
+ <source>VQF</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_he.ts b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_he.ts
new file mode 100644
index 000000000..6aa37403a
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_he.ts
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="he_IL">
+<context>
+ <name>DecoderFFmpegFactory</name>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="100"/>
+ <source>FFmpeg Plugin</source>
+ <translation>תוספת FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="102"/>
+ <source>FFmpeg Formats</source>
+ <translation>פורמטים של FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="209"/>
+ <source>About FFmpeg Audio Plugin</source>
+ <translation>אודות תוספת שמע FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="211"/>
+ <source>Qmmp FFmpeg Audio Plugin</source>
+ <translation>תוספת שמע FFmpeg ‫Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="212"/>
+ <source>Compiled against libavformat-%1.%2.%3 and libavcodec-%4.%5.%6</source>
+ <translation>הודרה כנגד libavformat-%1.%2.%3 וכנגד libavcodec-%4.%5.%6</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="219"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation>חוברה על ידי: Ilya Kotov ‫&lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>FFmpegMetaDataModel</name>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="48"/>
+ <source>Length</source>
+ <translation>אריכות</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>File size</source>
+ <translation>גודל קובץ</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>KB</source>
+ <translation>ק״ב</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>Bitrate</source>
+ <translation>שיעור סיביות</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>kbps</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Sample rate</source>
+ <translation>שיעור דגימה</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Hz</source>
+ <translation>הרץ</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="67"/>
+ <source>Channels</source>
+ <translation>ערוצים</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>FFmpeg Plugin Settings</source>
+ <translation>הגדרות תוספת FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Formats</source>
+ <translation>פורמטים</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="61"/>
+ <source>Windows Media Audio</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="68"/>
+ <source>Monkey&apos;s Audio (APE)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="75"/>
+ <source>True Audio</source>
+ <translation>שמע אמיתי</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="82"/>
+ <source>ADTS AAC</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="89"/>
+ <source>MP3 (MPEG audio layer 3)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="96"/>
+ <source>MPEG-4 AAC/ALAC</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="103"/>
+ <source>RealAudio 1.0/2.0</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="110"/>
+ <source>Shorten</source>
+ <translation>מקוצר</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="117"/>
+ <source>AC3/EAC</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="124"/>
+ <source>DTS/DTS-Core</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="131"/>
+ <source>Matroska Audio (Dolby TrueHD Lossless)</source>
+ <translation>שמע Matroska ‫(Dolby TrueHD נטול אובדן)</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="138"/>
+ <source>VQF</source>
+ <translation></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_hu.ts b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_hu.ts
new file mode 100644
index 000000000..176f64142
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_hu.ts
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="hu_HU">
+<context>
+ <name>DecoderFFmpegFactory</name>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="100"/>
+ <source>FFmpeg Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="102"/>
+ <source>FFmpeg Formats</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="209"/>
+ <source>About FFmpeg Audio Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="211"/>
+ <source>Qmmp FFmpeg Audio Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="212"/>
+ <source>Compiled against libavformat-%1.%2.%3 and libavcodec-%4.%5.%6</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="219"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FFmpegMetaDataModel</name>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="48"/>
+ <source>Length</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>File size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>Bitrate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>kbps</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Sample rate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Hz</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="67"/>
+ <source>Channels</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>FFmpeg Plugin Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Formats</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="61"/>
+ <source>Windows Media Audio</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="68"/>
+ <source>Monkey&apos;s Audio (APE)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="75"/>
+ <source>True Audio</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="82"/>
+ <source>ADTS AAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="89"/>
+ <source>MP3 (MPEG audio layer 3)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="96"/>
+ <source>MPEG-4 AAC/ALAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="103"/>
+ <source>RealAudio 1.0/2.0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="110"/>
+ <source>Shorten</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="117"/>
+ <source>AC3/EAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="124"/>
+ <source>DTS/DTS-Core</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="131"/>
+ <source>Matroska Audio (Dolby TrueHD Lossless)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="138"/>
+ <source>VQF</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_it.ts b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_it.ts
new file mode 100644
index 000000000..75ed8b763
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_it.ts
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="it">
+<context>
+ <name>DecoderFFmpegFactory</name>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="209"/>
+ <source>About FFmpeg Audio Plugin</source>
+ <translation>Info sul modulo audi FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="211"/>
+ <source>Qmmp FFmpeg Audio Plugin</source>
+ <translation>Modulo audio FFmpeg per Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="219"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation>Autore: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="100"/>
+ <source>FFmpeg Plugin</source>
+ <translation>Modulo FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="102"/>
+ <source>FFmpeg Formats</source>
+ <translation>Formati FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="212"/>
+ <source>Compiled against libavformat-%1.%2.%3 and libavcodec-%4.%5.%6</source>
+ <translation>Compilato con libavformat-%1.%2.%3 e libavcodec-%4.%5.%6</translation>
+ </message>
+</context>
+<context>
+ <name>FFmpegMetaDataModel</name>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="48"/>
+ <source>Length</source>
+ <translation>Durata</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>File size</source>
+ <translation>Dimensione file</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>KB</source>
+ <translation>KB</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>Bitrate</source>
+ <translation>Bit/secondo</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>kbps</source>
+ <translation>kbps</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Sample rate</source>
+ <translation>Campionamento</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Hz</source>
+ <translation>Hz</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="67"/>
+ <source>Channels</source>
+ <translation>Canali</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Formats</source>
+ <translation>Formati</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="61"/>
+ <source>Windows Media Audio</source>
+ <translation>Windows Media Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="75"/>
+ <source>True Audio</source>
+ <translation>True Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="82"/>
+ <source>ADTS AAC</source>
+ <translation>ADTS AAC</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="96"/>
+ <source>MPEG-4 AAC/ALAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="103"/>
+ <source>RealAudio 1.0/2.0</source>
+ <translation>RealAudio 1.0/2.0</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="110"/>
+ <source>Shorten</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="117"/>
+ <source>AC3/EAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="124"/>
+ <source>DTS/DTS-Core</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="131"/>
+ <source>Matroska Audio (Dolby TrueHD Lossless)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="138"/>
+ <source>VQF</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>FFmpeg Plugin Settings</source>
+ <translation>Impostazioni del modulo FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="68"/>
+ <source>Monkey&apos;s Audio (APE)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="89"/>
+ <source>MP3 (MPEG audio layer 3)</source>
+ <translation>MP3 (MPEG Audio Layer 3)</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_ja.ts b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_ja.ts
new file mode 100644
index 000000000..3404cf8f9
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_ja.ts
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ja_JP">
+<context>
+ <name>DecoderFFmpegFactory</name>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="100"/>
+ <source>FFmpeg Plugin</source>
+ <translation>FFmpeg プラグイン</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="102"/>
+ <source>FFmpeg Formats</source>
+ <translation>FFmpeg 用の形式</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="209"/>
+ <source>About FFmpeg Audio Plugin</source>
+ <translation>FFmpeg 音響プラグインについて</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="211"/>
+ <source>Qmmp FFmpeg Audio Plugin</source>
+ <translation>QMMP FFmpeg 音響プラグイン</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="212"/>
+ <source>Compiled against libavformat-%1.%2.%3 and libavcodec-%4.%5.%6</source>
+ <translation>libavformat-%1.%2.%3 と libavcodec-%4.%5.%6 対応でコンパイル</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="219"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation>制作: Илья Котов (Ilya Kotov) &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>FFmpegMetaDataModel</name>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="48"/>
+ <source>Length</source>
+ <translation>長さ</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>File size</source>
+ <translation>ファイルの大きさ</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>KB</source>
+ <translation>KiB</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>Bitrate</source>
+ <translation>ビットレート</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>kbps</source>
+ <translation>キロビット毎秒</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Sample rate</source>
+ <translation>サンプルレート</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Hz</source>
+ <translation>Hz</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="67"/>
+ <source>Channels</source>
+ <translation>チャンネル</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>FFmpeg Plugin Settings</source>
+ <translation>FFmpeg プラグイン設定</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Formats</source>
+ <translation>形式</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="61"/>
+ <source>Windows Media Audio</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="68"/>
+ <source>Monkey&apos;s Audio (APE)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="75"/>
+ <source>True Audio</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="82"/>
+ <source>ADTS AAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="89"/>
+ <source>MP3 (MPEG audio layer 3)</source>
+ <translation>MP3 (MPEG オーディオ レイヤー3)</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="96"/>
+ <source>MPEG-4 AAC/ALAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="103"/>
+ <source>RealAudio 1.0/2.0</source>
+ <translation>RealAudio 1.0/2.0</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="110"/>
+ <source>Shorten</source>
+ <translation>短縮</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="117"/>
+ <source>AC3/EAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="124"/>
+ <source>DTS/DTS-Core</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="131"/>
+ <source>Matroska Audio (Dolby TrueHD Lossless)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="138"/>
+ <source>VQF</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_kk.ts b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_kk.ts
new file mode 100644
index 000000000..e25f1c514
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_kk.ts
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="kk_KZ">
+<context>
+ <name>DecoderFFmpegFactory</name>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="100"/>
+ <source>FFmpeg Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="102"/>
+ <source>FFmpeg Formats</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="209"/>
+ <source>About FFmpeg Audio Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="211"/>
+ <source>Qmmp FFmpeg Audio Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="212"/>
+ <source>Compiled against libavformat-%1.%2.%3 and libavcodec-%4.%5.%6</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="219"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FFmpegMetaDataModel</name>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="48"/>
+ <source>Length</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>File size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>Bitrate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>kbps</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Sample rate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Hz</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="67"/>
+ <source>Channels</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>FFmpeg Plugin Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Formats</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="61"/>
+ <source>Windows Media Audio</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="68"/>
+ <source>Monkey&apos;s Audio (APE)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="75"/>
+ <source>True Audio</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="82"/>
+ <source>ADTS AAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="89"/>
+ <source>MP3 (MPEG audio layer 3)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="96"/>
+ <source>MPEG-4 AAC/ALAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="103"/>
+ <source>RealAudio 1.0/2.0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="110"/>
+ <source>Shorten</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="117"/>
+ <source>AC3/EAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="124"/>
+ <source>DTS/DTS-Core</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="131"/>
+ <source>Matroska Audio (Dolby TrueHD Lossless)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="138"/>
+ <source>VQF</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_lt.ts b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_lt.ts
new file mode 100644
index 000000000..8f2a6283d
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_lt.ts
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="lt">
+<context>
+ <name>DecoderFFmpegFactory</name>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="209"/>
+ <source>About FFmpeg Audio Plugin</source>
+ <translation>Apie FFmpeg įskiepį</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="211"/>
+ <source>Qmmp FFmpeg Audio Plugin</source>
+ <translation>FFmpeg Qmmp audio įskiepis</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="219"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation>Sukūrė: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="100"/>
+ <source>FFmpeg Plugin</source>
+ <translation>FFmpeg įskiepis</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="102"/>
+ <source>FFmpeg Formats</source>
+ <translation>FFmpeg bylų tipai</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="212"/>
+ <source>Compiled against libavformat-%1.%2.%3 and libavcodec-%4.%5.%6</source>
+ <translation>Surinkta iš libavformat-%1.%2.%3 ir libavcodec-%4.%5.%6</translation>
+ </message>
+</context>
+<context>
+ <name>FFmpegMetaDataModel</name>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="48"/>
+ <source>Length</source>
+ <translation>Trukmė</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>File size</source>
+ <translation>Bylos dydis</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>KB</source>
+ <translation>КB</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>Bitrate</source>
+ <translation>Kokybė</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>kbps</source>
+ <translation>kbps</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Sample rate</source>
+ <translation>Dažnis</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Hz</source>
+ <translation>Hz</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="67"/>
+ <source>Channels</source>
+ <translation>Kanalai</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Formats</source>
+ <translation>Tipai</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="61"/>
+ <source>Windows Media Audio</source>
+ <translation>Windows Media Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="75"/>
+ <source>True Audio</source>
+ <translation>True Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="82"/>
+ <source>ADTS AAC</source>
+ <translation>ADTS AAC</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="96"/>
+ <source>MPEG-4 AAC/ALAC</source>
+ <translation>MPEG-4 AAC/ALAC</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="103"/>
+ <source>RealAudio 1.0/2.0</source>
+ <translation>RealAudio 1.0/2.0</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="110"/>
+ <source>Shorten</source>
+ <translation>Shorten</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="117"/>
+ <source>AC3/EAC</source>
+ <translation>AC3/EAC</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="124"/>
+ <source>DTS/DTS-Core</source>
+ <translation>DTS/DTS-Core</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="131"/>
+ <source>Matroska Audio (Dolby TrueHD Lossless)</source>
+ <translation>Matroska Audio (Dolby TrueHD Lossless)</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="138"/>
+ <source>VQF</source>
+ <translation>VQF</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>FFmpeg Plugin Settings</source>
+ <translation>FFmpeg įskiepio nustatymai</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="68"/>
+ <source>Monkey&apos;s Audio (APE)</source>
+ <translation>Monkey&apos;s Audio (APE)</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="89"/>
+ <source>MP3 (MPEG audio layer 3)</source>
+ <translation>MP3 (MPEG audio layer 3)</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_nl.ts b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_nl.ts
new file mode 100644
index 000000000..221b9562e
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_nl.ts
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="nl">
+<context>
+ <name>DecoderFFmpegFactory</name>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="209"/>
+ <source>About FFmpeg Audio Plugin</source>
+ <translation>Over de FFmpeg Audio Module</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="211"/>
+ <source>Qmmp FFmpeg Audio Plugin</source>
+ <translation>FFmpeg Audio Module voor Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="219"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation>Auteur: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="100"/>
+ <source>FFmpeg Plugin</source>
+ <translation>FFmpeg Module</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="102"/>
+ <source>FFmpeg Formats</source>
+ <translation>FFmpeg Formaat</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="212"/>
+ <source>Compiled against libavformat-%1.%2.%3 and libavcodec-%4.%5.%6</source>
+ <translation>Gecompileerd tegen libavformat-%1.%2.%3 en libavcodec-%4.%5.%6</translation>
+ </message>
+</context>
+<context>
+ <name>FFmpegMetaDataModel</name>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="48"/>
+ <source>Length</source>
+ <translation>Duur</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>File size</source>
+ <translation>Bestandsgrootte</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>KB</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>Bitrate</source>
+ <translation>Bitsnelheid</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>kbps</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Sample rate</source>
+ <translation>Sample frequentie</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Hz</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="67"/>
+ <source>Channels</source>
+ <translation>Kanalen</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Formats</source>
+ <translation>Formaten</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="61"/>
+ <source>Windows Media Audio</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="75"/>
+ <source>True Audio</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="82"/>
+ <source>ADTS AAC</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="96"/>
+ <source>MPEG-4 AAC/ALAC</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="103"/>
+ <source>RealAudio 1.0/2.0</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="110"/>
+ <source>Shorten</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="117"/>
+ <source>AC3/EAC</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="124"/>
+ <source>DTS/DTS-Core</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="131"/>
+ <source>Matroska Audio (Dolby TrueHD Lossless)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="138"/>
+ <source>VQF</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>FFmpeg Plugin Settings</source>
+ <translation>FFmpeg Module Instellingen</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="68"/>
+ <source>Monkey&apos;s Audio (APE)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="89"/>
+ <source>MP3 (MPEG audio layer 3)</source>
+ <translation></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_pl.ts b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_pl.ts
new file mode 100644
index 000000000..f445778dd
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_pl.ts
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="pl">
+<context>
+ <name>DecoderFFmpegFactory</name>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="93"/>
+ <source>FFmpeg Plugin</source>
+ <translation>Wtyczka FFMPEG</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="95"/>
+ <source>FFmpeg Formats</source>
+ <translation>Formaty FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="257"/>
+ <source>About FFmpeg Audio Plugin</source>
+ <translation>O wtyczce FFmpeg Audio</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="259"/>
+ <source>Qmmp FFmpeg Audio Plugin</source>
+ <translation>Wtyczka FFmpeg Audio dla Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="260"/>
+ <source>Compiled against libavformat-%1.%2.%3 and libavcodec-%4.%5.%6</source>
+ <translation>Skompilowane przy użyciu libavformat-%1.%2.%3 i libavcodec-%4.%5.%6</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="267"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation>Autor: Ilja Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>FFmpegMetaDataModel</name>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="52"/>
+ <location filename="../ffmpegmetadatamodel.cpp" line="99"/>
+ <source>Length</source>
+ <translation>Długość</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="53"/>
+ <location filename="../ffmpegmetadatamodel.cpp" line="100"/>
+ <source>File size</source>
+ <translation>Wielkość pliku</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="53"/>
+ <location filename="../ffmpegmetadatamodel.cpp" line="100"/>
+ <source>KB</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="54"/>
+ <location filename="../ffmpegmetadatamodel.cpp" line="101"/>
+ <source>Bitrate</source>
+ <translation>Szybkość transmisji</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="54"/>
+ <location filename="../ffmpegmetadatamodel.cpp" line="101"/>
+ <source>kbps</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <location filename="../ffmpegmetadatamodel.cpp" line="117"/>
+ <source>Sample rate</source>
+ <translation>Próbkowanie</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <location filename="../ffmpegmetadatamodel.cpp" line="117"/>
+ <source>Hz</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="67"/>
+ <location filename="../ffmpegmetadatamodel.cpp" line="118"/>
+ <source>Channels</source>
+ <translation>Kanały</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>FFmpeg Plugin Settings</source>
+ <translation>Ustawienia wtyczki FFMPEG</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Formats</source>
+ <translation>Formaty</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="61"/>
+ <source>Windows Media Audio</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="68"/>
+ <source>Monkey&apos;s Audio (APE)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="75"/>
+ <source>True Audio</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="82"/>
+ <source>ADTS AAC</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="89"/>
+ <source>MP3 (MPEG audio layer 3)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="96"/>
+ <source>MPEG-4 AAC/ALAC</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="103"/>
+ <source>RealAudio 1.0/2.0</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="110"/>
+ <source>Shorten</source>
+ <translation>Shorten (SHN)</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="117"/>
+ <source>AC3/EAC</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="124"/>
+ <source>DTS/DTS-Core</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="131"/>
+ <source>Matroska Audio (Dolby TrueHD Lossless)</source>
+ <translation>Matroska Audio (Dolby TrueHD Bezstratny)</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="138"/>
+ <source>VQF</source>
+ <translation></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_pl_PL.ts b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_pl_PL.ts
new file mode 100644
index 000000000..3770dc05d
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_pl_PL.ts
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="pl">
+<context>
+ <name>DecoderFFmpegFactory</name>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="100"/>
+ <source>FFmpeg Plugin</source>
+ <translation>Wtyczka FFMPEG</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="102"/>
+ <source>FFmpeg Formats</source>
+ <translation>Formaty FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="209"/>
+ <source>About FFmpeg Audio Plugin</source>
+ <translation>O wtyczce FFmpeg Audio</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="211"/>
+ <source>Qmmp FFmpeg Audio Plugin</source>
+ <translation>Wtyczka FFmpeg Audio dla Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="212"/>
+ <source>Compiled against libavformat-%1.%2.%3 and libavcodec-%4.%5.%6</source>
+ <translation>Skompilowane przy użyciu libavformat-%1.%2.%3 i libavcodec-%4.%5.%6</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="219"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation>Autor: Ilja Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>FFmpegMetaDataModel</name>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="48"/>
+ <source>Length</source>
+ <translation>Długość</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>File size</source>
+ <translation>Wielkość pliku</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>KB</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>Bitrate</source>
+ <translation>Szybkość transmisji</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>kbps</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Sample rate</source>
+ <translation>Próbkowanie</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Hz</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="67"/>
+ <source>Channels</source>
+ <translation>Kanały</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>FFmpeg Plugin Settings</source>
+ <translation>Ustawienia wtyczki FFMPEG</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Formats</source>
+ <translation>Formaty</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="61"/>
+ <source>Windows Media Audio</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="68"/>
+ <source>Monkey&apos;s Audio (APE)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="75"/>
+ <source>True Audio</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="82"/>
+ <source>ADTS AAC</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="89"/>
+ <source>MP3 (MPEG audio layer 3)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="96"/>
+ <source>MPEG-4 AAC/ALAC</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="103"/>
+ <source>RealAudio 1.0/2.0</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="110"/>
+ <source>Shorten</source>
+ <translation>Shorten (SHN)</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="117"/>
+ <source>AC3/EAC</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="124"/>
+ <source>DTS/DTS-Core</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="131"/>
+ <source>Matroska Audio (Dolby TrueHD Lossless)</source>
+ <translation>Matroska Audio (Dolby TrueHD Bezstratny)</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="138"/>
+ <source>VQF</source>
+ <translation></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_pt_BR.ts b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_pt_BR.ts
new file mode 100644
index 000000000..8eb7e2e6f
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_pt_BR.ts
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="pt_BR">
+<context>
+ <name>DecoderFFmpegFactory</name>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="100"/>
+ <source>FFmpeg Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="102"/>
+ <source>FFmpeg Formats</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="209"/>
+ <source>About FFmpeg Audio Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="211"/>
+ <source>Qmmp FFmpeg Audio Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="212"/>
+ <source>Compiled against libavformat-%1.%2.%3 and libavcodec-%4.%5.%6</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="219"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FFmpegMetaDataModel</name>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="48"/>
+ <source>Length</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>File size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>Bitrate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>kbps</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Sample rate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Hz</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="67"/>
+ <source>Channels</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>FFmpeg Plugin Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Formats</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="61"/>
+ <source>Windows Media Audio</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="68"/>
+ <source>Monkey&apos;s Audio (APE)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="75"/>
+ <source>True Audio</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="82"/>
+ <source>ADTS AAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="89"/>
+ <source>MP3 (MPEG audio layer 3)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="96"/>
+ <source>MPEG-4 AAC/ALAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="103"/>
+ <source>RealAudio 1.0/2.0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="110"/>
+ <source>Shorten</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="117"/>
+ <source>AC3/EAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="124"/>
+ <source>DTS/DTS-Core</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="131"/>
+ <source>Matroska Audio (Dolby TrueHD Lossless)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="138"/>
+ <source>VQF</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_ru.ts b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_ru.ts
new file mode 100644
index 000000000..6288768bf
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_ru.ts
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ru">
+<context>
+ <name>DecoderFFmpegFactory</name>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="209"/>
+ <source>About FFmpeg Audio Plugin</source>
+ <translation>Об аудио-модуле FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="211"/>
+ <source>Qmmp FFmpeg Audio Plugin</source>
+ <translation>Аудио-модуль FFmpeg для Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="219"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation>Разработчик: Илья Котов &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="100"/>
+ <source>FFmpeg Plugin</source>
+ <translation>Модуль FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="102"/>
+ <source>FFmpeg Formats</source>
+ <translation>Форматы FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="212"/>
+ <source>Compiled against libavformat-%1.%2.%3 and libavcodec-%4.%5.%6</source>
+ <translation>Собрано с libavformat-%1.%2.%3 и libavcodec-%4.%5.%6</translation>
+ </message>
+</context>
+<context>
+ <name>FFmpegMetaDataModel</name>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="48"/>
+ <source>Length</source>
+ <translation>Длительность</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>File size</source>
+ <translation>Размер файла</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>KB</source>
+ <translation>КБ</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>Bitrate</source>
+ <translation>Битовая частота</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>kbps</source>
+ <translation>Кб/с</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Sample rate</source>
+ <translation>Дискретизация</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Hz</source>
+ <translation>Гц</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="67"/>
+ <source>Channels</source>
+ <translation>Каналов</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Formats</source>
+ <translation>Форматы</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="61"/>
+ <source>Windows Media Audio</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="75"/>
+ <source>True Audio</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="82"/>
+ <source>ADTS AAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="96"/>
+ <source>MPEG-4 AAC/ALAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="103"/>
+ <source>RealAudio 1.0/2.0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="110"/>
+ <source>Shorten</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="117"/>
+ <source>AC3/EAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="124"/>
+ <source>DTS/DTS-Core</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="131"/>
+ <source>Matroska Audio (Dolby TrueHD Lossless)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="138"/>
+ <source>VQF</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>FFmpeg Plugin Settings</source>
+ <translation>Настройки модуля FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="68"/>
+ <source>Monkey&apos;s Audio (APE)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="89"/>
+ <source>MP3 (MPEG audio layer 3)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_sk.ts b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_sk.ts
new file mode 100644
index 000000000..8a783fb40
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_sk.ts
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="sk_SK">
+<context>
+ <name>DecoderFFmpegFactory</name>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="100"/>
+ <source>FFmpeg Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="102"/>
+ <source>FFmpeg Formats</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="209"/>
+ <source>About FFmpeg Audio Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="211"/>
+ <source>Qmmp FFmpeg Audio Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="212"/>
+ <source>Compiled against libavformat-%1.%2.%3 and libavcodec-%4.%5.%6</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="219"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FFmpegMetaDataModel</name>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="48"/>
+ <source>Length</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>File size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>Bitrate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>kbps</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Sample rate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Hz</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="67"/>
+ <source>Channels</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>FFmpeg Plugin Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Formats</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="61"/>
+ <source>Windows Media Audio</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="68"/>
+ <source>Monkey&apos;s Audio (APE)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="75"/>
+ <source>True Audio</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="82"/>
+ <source>ADTS AAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="89"/>
+ <source>MP3 (MPEG audio layer 3)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="96"/>
+ <source>MPEG-4 AAC/ALAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="103"/>
+ <source>RealAudio 1.0/2.0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="110"/>
+ <source>Shorten</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="117"/>
+ <source>AC3/EAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="124"/>
+ <source>DTS/DTS-Core</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="131"/>
+ <source>Matroska Audio (Dolby TrueHD Lossless)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="138"/>
+ <source>VQF</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_tr.ts b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_tr.ts
new file mode 100644
index 000000000..19a8cd036
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_tr.ts
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="tr_TR">
+<context>
+ <name>DecoderFFmpegFactory</name>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="100"/>
+ <source>FFmpeg Plugin</source>
+ <translation>FFmpeg Eklentisi</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="102"/>
+ <source>FFmpeg Formats</source>
+ <translation>FFmpeg Biçimleri</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="209"/>
+ <source>About FFmpeg Audio Plugin</source>
+ <translation>FFmpeg Ses Eklentisi Hakkında</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="211"/>
+ <source>Qmmp FFmpeg Audio Plugin</source>
+ <translation>Qmmp FFmpeg Ses Eklentisi</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="212"/>
+ <source>Compiled against libavformat-%1.%2.%3 and libavcodec-%4.%5.%6</source>
+ <translation>libavformat-%1.%2.%3 ve libavcodec-%4.%5.%6 ile derlenmiştir</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="219"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation>Yazan: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>FFmpegMetaDataModel</name>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="48"/>
+ <source>Length</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>File size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>KB</source>
+ <translation type="unfinished">KB</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>Bitrate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>kbps</source>
+ <translation type="unfinished">kbps</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Sample rate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Hz</source>
+ <translation type="unfinished">Hz</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="67"/>
+ <source>Channels</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>FFmpeg Plugin Settings</source>
+ <translation>FFmpeg Eklenti Ayarları</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Formats</source>
+ <translation>Biçimler</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="61"/>
+ <source>Windows Media Audio</source>
+ <translation>Windows Media Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="68"/>
+ <source>Monkey&apos;s Audio (APE)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="75"/>
+ <source>True Audio</source>
+ <translation>True Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="82"/>
+ <source>ADTS AAC</source>
+ <translation>ADTS AAC</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="89"/>
+ <source>MP3 (MPEG audio layer 3)</source>
+ <translation>MP3 (MPEG audio layer 3)</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="96"/>
+ <source>MPEG-4 AAC/ALAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="103"/>
+ <source>RealAudio 1.0/2.0</source>
+ <translation>RealAudio 1.0/2.0</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="110"/>
+ <source>Shorten</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="117"/>
+ <source>AC3/EAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="124"/>
+ <source>DTS/DTS-Core</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="131"/>
+ <source>Matroska Audio (Dolby TrueHD Lossless)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="138"/>
+ <source>VQF</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_uk_UA.ts b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_uk_UA.ts
new file mode 100644
index 000000000..5d86ac6f8
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_uk_UA.ts
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="uk">
+<context>
+ <name>DecoderFFmpegFactory</name>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="209"/>
+ <source>About FFmpeg Audio Plugin</source>
+ <translation>Про аудіо-модуль FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="211"/>
+ <source>Qmmp FFmpeg Audio Plugin</source>
+ <translation>Аудіо-модуль FFmpeg для Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="219"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation>Розробник: Ілля Котов &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="100"/>
+ <source>FFmpeg Plugin</source>
+ <translation>Модуль FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="102"/>
+ <source>FFmpeg Formats</source>
+ <translation>Формати FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="212"/>
+ <source>Compiled against libavformat-%1.%2.%3 and libavcodec-%4.%5.%6</source>
+ <translation>Зібрано з libavformat-%1.%2.%3 та libavcodec-%4.%5.%6</translation>
+ </message>
+</context>
+<context>
+ <name>FFmpegMetaDataModel</name>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="48"/>
+ <source>Length</source>
+ <translation>Тривалість</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>File size</source>
+ <translation>Розмір файлу</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>KB</source>
+ <translation>Кб</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>Bitrate</source>
+ <translation>Бітрейт</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>kbps</source>
+ <translation>Кб/с</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Sample rate</source>
+ <translation>Частота</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Hz</source>
+ <translation>Гц</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="67"/>
+ <source>Channels</source>
+ <translation>Канали</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Formats</source>
+ <translation>Формати</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="61"/>
+ <source>Windows Media Audio</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="75"/>
+ <source>True Audio</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="82"/>
+ <source>ADTS AAC</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="96"/>
+ <source>MPEG-4 AAC/ALAC</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="103"/>
+ <source>RealAudio 1.0/2.0</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="110"/>
+ <source>Shorten</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="117"/>
+ <source>AC3/EAC</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="124"/>
+ <source>DTS/DTS-Core</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="131"/>
+ <source>Matroska Audio (Dolby TrueHD Lossless)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="138"/>
+ <source>VQF</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>FFmpeg Plugin Settings</source>
+ <translation>Налаштування модуля FFmpeg</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="68"/>
+ <source>Monkey&apos;s Audio (APE)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="89"/>
+ <source>MP3 (MPEG audio layer 3)</source>
+ <translation></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_zh_CN.ts b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_zh_CN.ts
new file mode 100644
index 000000000..2c95328d2
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_zh_CN.ts
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="zh_CN">
+<context>
+ <name>DecoderFFmpegFactory</name>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="209"/>
+ <source>About FFmpeg Audio Plugin</source>
+ <translation>关于 FFmpeg 音频插件</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="211"/>
+ <source>Qmmp FFmpeg Audio Plugin</source>
+ <translation>Qmmp FFmpeg 音频插件</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="219"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation>作者:Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="100"/>
+ <source>FFmpeg Plugin</source>
+ <translation>FFmpeg 插件</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="102"/>
+ <source>FFmpeg Formats</source>
+ <translation>FFmpeg 格式</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="212"/>
+ <source>Compiled against libavformat-%1.%2.%3 and libavcodec-%4.%5.%6</source>
+ <translation>编译依赖 libavformat-%1.%2.%3 和 libavcodec-%4.%5.%6</translation>
+ </message>
+</context>
+<context>
+ <name>FFmpegMetaDataModel</name>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="48"/>
+ <source>Length</source>
+ <translation>长度</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>File size</source>
+ <translation>文件大小</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>Bitrate</source>
+ <translation>比特率</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>kbps</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Sample rate</source>
+ <translation>取样率</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Hz</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="67"/>
+ <source>Channels</source>
+ <translation>声音通道</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Formats</source>
+ <translation>格式</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="61"/>
+ <source>Windows Media Audio</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="75"/>
+ <source>True Audio</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="82"/>
+ <source>ADTS AAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="96"/>
+ <source>MPEG-4 AAC/ALAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="103"/>
+ <source>RealAudio 1.0/2.0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="110"/>
+ <source>Shorten</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="117"/>
+ <source>AC3/EAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="124"/>
+ <source>DTS/DTS-Core</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="131"/>
+ <source>Matroska Audio (Dolby TrueHD Lossless)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="138"/>
+ <source>VQF</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>FFmpeg Plugin Settings</source>
+ <translation>FFmpeg 插件设置</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="68"/>
+ <source>Monkey&apos;s Audio (APE)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="89"/>
+ <source>MP3 (MPEG audio layer 3)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_zh_TW.ts b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_zh_TW.ts
new file mode 100644
index 000000000..40bba9dda
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/translations/ffmpeg_legacy_plugin_zh_TW.ts
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="zh_TW">
+<context>
+ <name>DecoderFFmpegFactory</name>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="209"/>
+ <source>About FFmpeg Audio Plugin</source>
+ <translation>關於 FFmpeg 聲訊插件</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="211"/>
+ <source>Qmmp FFmpeg Audio Plugin</source>
+ <translation>Qmmp FFmpeg 聲訊插件</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="219"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation>作者:Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="100"/>
+ <source>FFmpeg Plugin</source>
+ <translation>FFmpeg 插件</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="102"/>
+ <source>FFmpeg Formats</source>
+ <translation>FFmpeg 格式</translation>
+ </message>
+ <message>
+ <location filename="../decoderffmpegfactory.cpp" line="212"/>
+ <source>Compiled against libavformat-%1.%2.%3 and libavcodec-%4.%5.%6</source>
+ <translation>編譯依賴 libavformat-%1.%2.%3 與 libavcodec-%4.%5.%6</translation>
+ </message>
+</context>
+<context>
+ <name>FFmpegMetaDataModel</name>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="48"/>
+ <source>Length</source>
+ <translation>長度</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>File size</source>
+ <translation>文件大小</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="49"/>
+ <source>KB</source>
+ <translation>KB</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>Bitrate</source>
+ <translation>比特率</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="50"/>
+ <source>kbps</source>
+ <translation>kbps</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Sample rate</source>
+ <translation>取樣率</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="66"/>
+ <source>Hz</source>
+ <translation>Hz</translation>
+ </message>
+ <message>
+ <location filename="../ffmpegmetadatamodel.cpp" line="67"/>
+ <source>Channels</source>
+ <translation>聲音通道</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Formats</source>
+ <translation>格式</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="61"/>
+ <source>Windows Media Audio</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="75"/>
+ <source>True Audio</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="82"/>
+ <source>ADTS AAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="96"/>
+ <source>MPEG-4 AAC/ALAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="103"/>
+ <source>RealAudio 1.0/2.0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="110"/>
+ <source>Shorten</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="117"/>
+ <source>AC3/EAC</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="124"/>
+ <source>DTS/DTS-Core</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="131"/>
+ <source>Matroska Audio (Dolby TrueHD Lossless)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="138"/>
+ <source>VQF</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>FFmpeg Plugin Settings</source>
+ <translation>FFmpeg 插件設置</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="68"/>
+ <source>Monkey&apos;s Audio (APE)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="89"/>
+ <source>MP3 (MPEG audio layer 3)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Input/ffmpeg_legacy/translations/translations.qrc b/src/plugins/Input/ffmpeg_legacy/translations/translations.qrc
new file mode 100644
index 000000000..49a792f75
--- /dev/null
+++ b/src/plugins/Input/ffmpeg_legacy/translations/translations.qrc
@@ -0,0 +1,24 @@
+<!DOCTYPE RCC>
+<RCC version="1.0">
+ <qresource>
+ <file>ffmpeg_legacy_plugin_ru.qm</file>
+ <file>ffmpeg_legacy_plugin_uk_UA.qm</file>
+ <file>ffmpeg_legacy_plugin_zh_CN.qm</file>
+ <file>ffmpeg_legacy_plugin_zh_TW.qm</file>
+ <file>ffmpeg_legacy_plugin_tr.qm</file>
+ <file>ffmpeg_legacy_plugin_cs.qm</file>
+ <file>ffmpeg_legacy_plugin_pt_BR.qm</file>
+ <file>ffmpeg_legacy_plugin_de.qm</file>
+ <file>ffmpeg_legacy_plugin_pl_PL.qm</file>
+ <file>ffmpeg_legacy_plugin_fr.qm</file>
+ <file>ffmpeg_legacy_plugin_it.qm</file>
+ <file>ffmpeg_legacy_plugin_kk.qm</file>
+ <file>ffmpeg_legacy_plugin_lt.qm</file>
+ <file>ffmpeg_legacy_plugin_hu.qm</file>
+ <file>ffmpeg_legacy_plugin_nl.qm</file>
+ <file>ffmpeg_legacy_plugin_ja.qm</file>
+ <file>ffmpeg_legacy_plugin_sk.qm</file>
+ <file>ffmpeg_legacy_plugin_es.qm</file>
+ <file>ffmpeg_legacy_plugin_he.qm</file>
+ </qresource>
+</RCC>