From e6cdd7a53803f700e7edaa5dea2b0876ada17114 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Tue, 16 Feb 2010 11:49:36 +0000 Subject: added ogg flac support git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1558 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/Input/flac/decoder_flac.cpp | 67 +++++++++++-------- src/plugins/Input/flac/decoder_flac.h | 2 +- src/plugins/Input/flac/decoderflacfactory.cpp | 75 +++++++++++++--------- src/plugins/Input/flac/flacmetadatamodel.cpp | 66 +++++++++++++++---- src/plugins/Input/flac/flacmetadatamodel.h | 4 +- src/plugins/Input/flac/replaygainreader.cpp | 18 ++++-- .../Input/flac/translations/flac_plugin_cs.ts | 26 ++++---- .../Input/flac/translations/flac_plugin_de.ts | 26 ++++---- .../Input/flac/translations/flac_plugin_it.ts | 26 ++++---- .../Input/flac/translations/flac_plugin_lt.ts | 26 ++++---- .../Input/flac/translations/flac_plugin_pl.ts | 26 ++++---- .../Input/flac/translations/flac_plugin_ru.ts | 26 ++++---- .../Input/flac/translations/flac_plugin_tr.ts | 26 ++++---- .../Input/flac/translations/flac_plugin_uk_UA.ts | 26 ++++---- .../Input/flac/translations/flac_plugin_zh_CN.ts | 26 ++++---- .../Input/flac/translations/flac_plugin_zh_TW.ts | 26 ++++---- 16 files changed, 288 insertions(+), 204 deletions(-) (limited to 'src/plugins/Input') diff --git a/src/plugins/Input/flac/decoder_flac.cpp b/src/plugins/Input/flac/decoder_flac.cpp index 50f679956..c80eb21e6 100644 --- a/src/plugins/Input/flac/decoder_flac.cpp +++ b/src/plugins/Input/flac/decoder_flac.cpp @@ -40,8 +40,6 @@ #include "cueparser.h" #include "decoder_flac.h" - - static size_t pack_pcm_signed (FLAC__byte *data, const FLAC__int32 * const input[], unsigned wide_samples, @@ -94,7 +92,6 @@ static int flac_decode (void *void_data, char *buf, int buf_len) DecoderFLAC *dflac = (DecoderFLAC *) void_data; unsigned to_copy; int bytes_per_sample; - FLAC__uint64 decode_position; bytes_per_sample = dflac->data()->bits_per_sample / 8; @@ -112,23 +109,6 @@ static int flac_decode (void *void_data, char *buf, int buf_len) { return 0; } - - /* Count the bitrate */ - if (!FLAC__stream_decoder_get_decode_position( - dflac->data()->decoder, &decode_position)) - decode_position = 0; - if (decode_position > dflac->data()->last_decode_position) - { - int bytes_per_sec = bytes_per_sample * dflac->data()->sample_rate - * dflac->data()->channels; - - dflac->data()->bitrate = int(((float)decode_position - - dflac->data()->last_decode_position) * 8.0 * - bytes_per_sec / - dflac->data()->sample_buffer_fill / 1000); - } - - dflac->data()->last_decode_position = decode_position; } to_copy = qMin((unsigned)buf_len, dflac->data()->sample_buffer_fill); @@ -147,9 +127,8 @@ static FLAC__StreamDecoderReadStatus flac_callback_read (const FLAC__StreamDecod void *client_data) { DecoderFLAC *dflac = (DecoderFLAC *) client_data; - qint64 res; - - res = dflac->data()->input->read((char *)buffer, *bytes); + qint64 res = dflac->data()->input->read((char *)buffer, *bytes); + dflac->data()->last_bytes += res; if (res > 0) { @@ -177,6 +156,9 @@ static FLAC__StreamDecoderWriteStatus flac_callback_write (const FLAC__StreamDec if (dflac->data()->abort) return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT; + dflac->data()->bitrate = dflac->data()->last_bytes * 8.0 * frame->header.sample_rate / + frame->header.blocksize / 1000.0; + dflac->data()->last_bytes = 0; dflac->data()->sample_buffer_fill = pack_pcm_signed ( dflac->data()->sample_buffer, @@ -343,14 +325,23 @@ bool DecoderFLAC::initialize() m_data->bitrate = -1; m_data->abort = 0; m_data->sample_buffer_fill = 0; - m_data->last_decode_position = 0; + m_data->last_bytes = 0; if (!m_data->decoder) { qDebug("DecoderFLAC: creating FLAC__StreamDecoder"); m_data->decoder = FLAC__stream_decoder_new (); } + char buf[22]; + data()->input->peek(buf,sizeof(buf)); qDebug("DecoderFLAC: setting callbacks"); - if (FLAC__stream_decoder_init_stream( + if(!memcmp(buf, "OggS", 4)) + { + if(!FLAC_API_SUPPORTS_OGG_FLAC) + { + qWarning("DecoderFLAC: unsupported format"); + return FALSE; + } + if (FLAC__stream_decoder_init_ogg_stream( m_data->decoder, flac_callback_read, flac_callback_seek, @@ -361,8 +352,32 @@ bool DecoderFLAC::initialize() flac_callback_metadata, flac_callback_error, this) != FLAC__STREAM_DECODER_INIT_STATUS_OK) + { + data()->ok = 0; + return FALSE; + } + } + else if (!memcmp(buf, "fLaC", 4)) { - data()->ok = 0; + if (FLAC__stream_decoder_init_stream( + m_data->decoder, + flac_callback_read, + flac_callback_seek, + flac_callback_tell, + flac_callback_length, + flac_callback_eof, + flac_callback_write, + flac_callback_metadata, + flac_callback_error, + this) != FLAC__STREAM_DECODER_INIT_STATUS_OK) + { + data()->ok = 0; + return FALSE; + } + } + else + { + qWarning("DecoderFLAC: unsupported format"); return FALSE; } diff --git a/src/plugins/Input/flac/decoder_flac.h b/src/plugins/Input/flac/decoder_flac.h index ea66a652f..74af08a71 100644 --- a/src/plugins/Input/flac/decoder_flac.h +++ b/src/plugins/Input/flac/decoder_flac.h @@ -50,7 +50,7 @@ struct flac_data unsigned sample_rate; unsigned channels; - FLAC__uint64 last_decode_position; + FLAC__uint64 last_bytes; int ok; /* was this stream successfully opened? */ //struct decoder_error error; diff --git a/src/plugins/Input/flac/decoderflacfactory.cpp b/src/plugins/Input/flac/decoderflacfactory.cpp index e87e96b71..0315ef125 100644 --- a/src/plugins/Input/flac/decoderflacfactory.cpp +++ b/src/plugins/Input/flac/decoderflacfactory.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2008 by Ilya Kotov * + * Copyright (C) 2008-2010 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -22,6 +22,7 @@ #include #include #include +#include #include #include @@ -35,7 +36,7 @@ bool DecoderFLACFactory::supports(const QString &source) const { - return (source.right(5).toLower() == ".flac"); + return source.endsWith(".flac") || source.endsWith(".oga"); } bool DecoderFLACFactory::canDecode(QIODevice *input) const @@ -48,7 +49,7 @@ const DecoderProperties DecoderFLACFactory::properties() const { DecoderProperties properties; properties.name = tr("FLAC Plugin"); - properties.filter = "*.flac"; + properties.filter = "*.flac *.oga"; properties.description = tr("FLAC Files"); //properties.contentType = ; properties.shortName = "flac"; @@ -65,11 +66,29 @@ Decoder *DecoderFLACFactory::create(const QString &path, QIODevice *i) QList DecoderFLACFactory::createPlayList(const QString &fileName, bool useMetaData) { - FileInfo *info = new FileInfo(fileName); + QList list; + TagLib::Ogg::XiphComment *tag = 0; + TagLib::FLAC::Properties *ap = 0; - TagLib::FLAC::File fileRef(fileName.toLocal8Bit ()); - TagLib::Tag *tag = useMetaData ? fileRef.tag() : 0; + TagLib::FLAC::File *flacFile = 0; + TagLib::Ogg::FLAC::File *oggFlacFile = 0; + + if(fileName.endsWith(".flac")) + { + flacFile = new TagLib::FLAC::File(fileName.toLocal8Bit ()); + tag = useMetaData ? flacFile->xiphComment() : 0; + ap = flacFile->audioProperties(); + } + else if(fileName.endsWith(".oga")) + { + oggFlacFile = new TagLib::Ogg::FLAC::File(fileName.toLocal8Bit ()); + tag = useMetaData ? oggFlacFile->tag() : 0; + ap = oggFlacFile->audioProperties(); + } + else + return list; + FileInfo *info = new FileInfo(fileName); if (tag && !tag->isEmpty()) { info->setMetaData(Qmmp::ALBUM, @@ -84,37 +103,35 @@ QList DecoderFLACFactory::createPlayList(const QString &fileName, bo QString::fromUtf8(tag->title().toCString(TRUE)).trimmed()); info->setMetaData(Qmmp::YEAR, tag->year()); info->setMetaData(Qmmp::TRACK, tag->track()); - } - if (fileRef.audioProperties()) - info->setLength(fileRef.audioProperties()->length()); - - //looking for cuesheet comment - TagLib::Ogg::XiphComment *xiph_comment = useMetaData ? fileRef.xiphComment() : 0; - QList list; - if(xiph_comment) - { - if (xiph_comment->fieldListMap().contains("CUESHEET")) + if (tag->fieldListMap().contains("CUESHEET")) { - CUEParser parser(xiph_comment->fieldListMap()["CUESHEET"] - .toString().toCString(TRUE), fileName); + CUEParser parser(tag->fieldListMap()["CUESHEET"].toString().toCString(TRUE), fileName); list = parser.createPlayList(); delete info; + if(flacFile) + delete flacFile; + if(oggFlacFile) + delete oggFlacFile; return list; } - else - { - //additional metadata - TagLib::StringList fld; - if(!(fld = xiph_comment->fieldListMap()["COMPOSER"]).isEmpty()) - info->setMetaData(Qmmp::COMPOSER, - QString::fromUtf8(fld.toString().toCString(TRUE)).trimmed()); - if(!(fld = xiph_comment->fieldListMap()["DISCNUMBER"]).isEmpty()) - info->setMetaData(Qmmp::DISCNUMBER, - QString::fromUtf8(fld.toString().toCString(TRUE)).trimmed()); - } + + //additional metadata + TagLib::StringList fld; + if(!(fld = tag->fieldListMap()["COMPOSER"]).isEmpty()) + info->setMetaData(Qmmp::COMPOSER, + QString::fromUtf8(fld.toString().toCString(TRUE)).trimmed()); + if(!(fld = tag->fieldListMap()["DISCNUMBER"]).isEmpty()) + info->setMetaData(Qmmp::DISCNUMBER, + QString::fromUtf8(fld.toString().toCString(TRUE)).trimmed()); } + if(ap) + info->setLength(ap->length()); list << info; + if(flacFile) + delete flacFile; + if(oggFlacFile) + delete oggFlacFile; return list; } diff --git a/src/plugins/Input/flac/flacmetadatamodel.cpp b/src/plugins/Input/flac/flacmetadatamodel.cpp index 3c1366e25..39633b2aa 100644 --- a/src/plugins/Input/flac/flacmetadatamodel.cpp +++ b/src/plugins/Input/flac/flacmetadatamodel.cpp @@ -55,16 +55,39 @@ FLACMetaDataModel::~FLACMetaDataModel() QHash FLACMetaDataModel::audioProperties() { QHash ap; - TagLib::FLAC::File f (m_path.toLocal8Bit()); - if(!f.audioProperties()) + TagLib::FLAC::File *flacFile = 0; + TagLib::Ogg::FLAC::File *oggFlacFile = 0; + TagLib::FLAC::Properties *taglib_ap = 0; + qint64 size = 0; + if(m_path.endsWith(".flac")) + { + flacFile = new TagLib::FLAC::File(m_path.toLocal8Bit ()); + taglib_ap = flacFile->audioProperties(); + size = flacFile->length(); + } + else if(m_path.endsWith(".oga")) + { + oggFlacFile = new TagLib::Ogg::FLAC::File(m_path.toLocal8Bit ()); + taglib_ap = oggFlacFile->audioProperties(); + size = oggFlacFile->length(); + } + else return ap; - QString text = QString("%1").arg(f.audioProperties()->length()/60); - text +=":"+QString("%1").arg(f.audioProperties()->length()%60,2,10,QChar('0')); - ap.insert(tr("Length"), text); - ap.insert(tr("Sample rate"), QString("%1 " + tr("Hz")).arg(f.audioProperties()->sampleRate())); - ap.insert(tr("Channels"), QString("%1").arg(f.audioProperties()->channels())); - ap.insert(tr("Bitrate"), QString("%1 " + tr("kbps")).arg(f.audioProperties()->bitrate())); - ap.insert(tr("File size"), QString("%1 "+tr("KB")).arg(f.length()/1024)); + + if(taglib_ap) + { + QString text = QString("%1").arg(taglib_ap->length()/60); + text +=":"+QString("%1").arg(taglib_ap->length()%60,2,10,QChar('0')); + ap.insert(tr("Length"), text); + ap.insert(tr("Sample rate"), QString("%1 " + tr("Hz")).arg(taglib_ap->sampleRate())); + ap.insert(tr("Channels"), QString("%1").arg(taglib_ap->channels())); + ap.insert(tr("Bitrate"), QString("%1 " + tr("kbps")).arg(taglib_ap->bitrate())); + } + ap.insert(tr("File size"), QString("%1 "+tr("KB")).arg(size/1024)); + if(flacFile) + delete flacFile; + if(oggFlacFile) + delete oggFlacFile; return ap; } @@ -100,13 +123,27 @@ QString FLACMetaDataModel::coverPath() VorbisCommentModel::VorbisCommentModel(const QString &path) : TagModel(TagModel::Save) { - m_file = new TagLib::FLAC::File (path.toLocal8Bit().constData()); - m_tag = m_file->xiphComment(); + m_file = 0; + m_ogg_file = 0; + m_tag = 0; + if(path.endsWith(".flac")) + { + m_file = new TagLib::FLAC::File (path.toLocal8Bit().constData()); + m_tag = m_file->xiphComment(); + } + else if (path.endsWith(".oga")) + { + m_ogg_file = new TagLib::Ogg::FLAC::File(path.toLocal8Bit().constData()); + m_tag = m_ogg_file->tag(); + } } VorbisCommentModel::~VorbisCommentModel() { - delete m_file; + if(m_file) + delete m_file; + if(m_ogg_file) + delete m_ogg_file; } const QString VorbisCommentModel::name() @@ -192,5 +229,8 @@ void VorbisCommentModel::setValue(Qmmp::MetaData key, const QString &value) void VorbisCommentModel::save() { - m_file->save(); + if(m_file) + m_file->save(); + else if(m_ogg_file) + m_ogg_file->save(); } diff --git a/src/plugins/Input/flac/flacmetadatamodel.h b/src/plugins/Input/flac/flacmetadatamodel.h index c8f77bd81..1512ba93c 100644 --- a/src/plugins/Input/flac/flacmetadatamodel.h +++ b/src/plugins/Input/flac/flacmetadatamodel.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009 by Ilya Kotov * + * Copyright (C) 2009-2010 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -22,6 +22,7 @@ #define FLACMETADATAMODEL_H #include +#include #include #include @@ -53,6 +54,7 @@ public: private: TagLib::FLAC::File *m_file; + TagLib::Ogg::FLAC::File *m_ogg_file; TagLib::Ogg::XiphComment *m_tag; }; diff --git a/src/plugins/Input/flac/replaygainreader.cpp b/src/plugins/Input/flac/replaygainreader.cpp index 27361e12b..1968ceb00 100644 --- a/src/plugins/Input/flac/replaygainreader.cpp +++ b/src/plugins/Input/flac/replaygainreader.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009 by Ilya Kotov * + * Copyright (C) 2009-2010 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -22,13 +22,23 @@ #include #include #include +#include #include "replaygainreader.h" ReplayGainReader::ReplayGainReader(const QString &path) { - TagLib::FLAC::File fileRef(path.toLocal8Bit ().constData()); - if(fileRef.xiphComment()) - readVorbisComment(fileRef.xiphComment()); + if(path.endsWith("*.flac")) + { + TagLib::FLAC::File fileRef(path.toLocal8Bit ().constData()); + if(fileRef.xiphComment()) + readVorbisComment(fileRef.xiphComment()); + } + else if(path.endsWith("*.oga")) + { + TagLib::Ogg::FLAC::File fileRef(path.toLocal8Bit ().constData()); + if(fileRef.tag()) + readVorbisComment(fileRef.tag()); + } } QMap ReplayGainReader::replayGainInfo() const diff --git a/src/plugins/Input/flac/translations/flac_plugin_cs.ts b/src/plugins/Input/flac/translations/flac_plugin_cs.ts index db4d8f759..8031f4e80 100644 --- a/src/plugins/Input/flac/translations/flac_plugin_cs.ts +++ b/src/plugins/Input/flac/translations/flac_plugin_cs.ts @@ -4,27 +4,27 @@ DecoderFLACFactory - + FLAC Plugin Modul FLAC - + FLAC Files Soubory FLAC - + About FLAC Audio Plugin O modulu FLAC - + Qmmp FLAC Audio Plugin Vstupní modul Qmmp FLAC - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> Autor: Ilja Kotov <forkotov02@hotmail.ru> @@ -32,42 +32,42 @@ FLACMetaDataModel - + Length Délka - + Sample rate Vzorkovací frekvence - + Hz Hz - + Channels Počet kanálů - + Bitrate Datový tok - + kbps kbps - + File size Velikost souboru - + KB KiB diff --git a/src/plugins/Input/flac/translations/flac_plugin_de.ts b/src/plugins/Input/flac/translations/flac_plugin_de.ts index 7269a751d..435fe8aa0 100644 --- a/src/plugins/Input/flac/translations/flac_plugin_de.ts +++ b/src/plugins/Input/flac/translations/flac_plugin_de.ts @@ -4,27 +4,27 @@ DecoderFLACFactory - + FLAC Plugin FLAC-Modul - + FLAC Files FLAC-Dateien - + About FLAC Audio Plugin Über FLAC-Audio-Modul - + Qmmp FLAC Audio Plugin Qmmp FLAC-Audio-Modul - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> Autor: Ilja Kotov <forkotov02@hotmail.ru> @@ -32,42 +32,42 @@ FLACMetaDataModel - + Length Länge - + Sample rate Abtastrate - + Hz Hz - + Channels Kanäle - + Bitrate Bitrate - + kbps kbps - + File size Dateigröße - + KB KB diff --git a/src/plugins/Input/flac/translations/flac_plugin_it.ts b/src/plugins/Input/flac/translations/flac_plugin_it.ts index 0edf97c14..037ae6757 100644 --- a/src/plugins/Input/flac/translations/flac_plugin_it.ts +++ b/src/plugins/Input/flac/translations/flac_plugin_it.ts @@ -4,27 +4,27 @@ DecoderFLACFactory - + FLAC Plugin Modulo FLAC - + FLAC Files Brani FLAC - + About FLAC Audio Plugin Info sul modulo audio FLAC - + Qmmp FLAC Audio Plugin Modulo Audio FLAC per Qmmp - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> Autore: Ilja Kotov <forkotov02@hotmail.ru> @@ -32,42 +32,42 @@ FLACMetaDataModel - + Length Durata - + Sample rate Campionamento - + Hz Hz - + Channels Canali - + Bitrate bit al secondo - + kbps kbps - + File size Dimensione file - + KB KB diff --git a/src/plugins/Input/flac/translations/flac_plugin_lt.ts b/src/plugins/Input/flac/translations/flac_plugin_lt.ts index 191f4984e..d9f33a36e 100644 --- a/src/plugins/Input/flac/translations/flac_plugin_lt.ts +++ b/src/plugins/Input/flac/translations/flac_plugin_lt.ts @@ -4,27 +4,27 @@ DecoderFLACFactory - + FLAC Plugin FLAC įskiepis - + FLAC Files FLAC bylos - + About FLAC Audio Plugin Apie FLAC audio įskiepį - + Qmmp FLAC Audio Plugin Qmmp FLAC audio įskiepis - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> Sukūrė: Ilya Kotov <forkotov02@hotmail.ru> @@ -32,42 +32,42 @@ FLACMetaDataModel - + Length Trukmė - + Sample rate Dažnis - + Hz Hz - + Channels Kanalai - + Bitrate Kokybė - + kbps kbps - + File size Bylos dydis - + KB KB diff --git a/src/plugins/Input/flac/translations/flac_plugin_pl.ts b/src/plugins/Input/flac/translations/flac_plugin_pl.ts index f00bb5e57..5e19e73eb 100644 --- a/src/plugins/Input/flac/translations/flac_plugin_pl.ts +++ b/src/plugins/Input/flac/translations/flac_plugin_pl.ts @@ -4,27 +4,27 @@ DecoderFLACFactory - + FLAC Plugin Wtyczka FLAC - + FLAC Files Pliki FLAC - + About FLAC Audio Plugin O wtyczce FLAC Audio - + Qmmp FLAC Audio Plugin Wtyczka FLAC Audio dla Qmmp - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> Autor: Ilja Kotov <forkotov02@hotmail.ru> @@ -32,42 +32,42 @@ FLACMetaDataModel - + Length Długość - + Sample rate Próbkowanie - + Hz - + Channels Kanały - + Bitrate Szybkość transmisji - + kbps - + File size Wielkość pliku - + KB diff --git a/src/plugins/Input/flac/translations/flac_plugin_ru.ts b/src/plugins/Input/flac/translations/flac_plugin_ru.ts index 9e161688a..bd4c3ef0a 100644 --- a/src/plugins/Input/flac/translations/flac_plugin_ru.ts +++ b/src/plugins/Input/flac/translations/flac_plugin_ru.ts @@ -4,27 +4,27 @@ DecoderFLACFactory - + FLAC Plugin Модуль FLAC - + FLAC Files Файлы FLAC - + About FLAC Audio Plugin Об аудио-модуле FLAC - + Qmmp FLAC Audio Plugin Аудио-модуль FLAC для Qmmp - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> Разработчик: Илья Котов <forkotov02@hotmail.ru> @@ -32,42 +32,42 @@ FLACMetaDataModel - + Length Длительность - + Sample rate Дискретизация - + Hz Гц - + Channels Каналов - + Bitrate Битовая частота - + kbps Кб/с - + File size Размер файла - + KB КБ diff --git a/src/plugins/Input/flac/translations/flac_plugin_tr.ts b/src/plugins/Input/flac/translations/flac_plugin_tr.ts index f7081afb1..d3dc9a05a 100644 --- a/src/plugins/Input/flac/translations/flac_plugin_tr.ts +++ b/src/plugins/Input/flac/translations/flac_plugin_tr.ts @@ -4,27 +4,27 @@ DecoderFLACFactory - + FLAC Plugin FLAC Eklentisi - + FLAC Files FLAC Dosyaları - + About FLAC Audio Plugin FLAC Ses Eklentisi Hakkında - + Qmmp FLAC Audio Plugin Qmmp FLAC Ses Eklentisi - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> Yazan: Ilya Kotov <forkotov02@hotmail.ru> @@ -32,42 +32,42 @@ FLACMetaDataModel - + Length - + Sample rate - + Hz Hz - + Channels - + Bitrate - + kbps kbps - + File size - + KB KB diff --git a/src/plugins/Input/flac/translations/flac_plugin_uk_UA.ts b/src/plugins/Input/flac/translations/flac_plugin_uk_UA.ts index c53fd1ac9..005111e18 100644 --- a/src/plugins/Input/flac/translations/flac_plugin_uk_UA.ts +++ b/src/plugins/Input/flac/translations/flac_plugin_uk_UA.ts @@ -4,27 +4,27 @@ DecoderFLACFactory - + FLAC Plugin Модуль FLAC - + FLAC Files Файли FLAC - + About FLAC Audio Plugin Про аудіо-модуль FLAC - + Qmmp FLAC Audio Plugin Аудіо-модуль FLAC для Qmmp - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> Розробник: Ілля Котов <forkotov02@hotmail.ru> @@ -32,42 +32,42 @@ FLACMetaDataModel - + Length Тривалість - + Sample rate Частота - + Hz Гц - + Channels Канали - + Bitrate Бітрейт - + kbps Кб/с - + File size Розмір файлу - + KB Кб diff --git a/src/plugins/Input/flac/translations/flac_plugin_zh_CN.ts b/src/plugins/Input/flac/translations/flac_plugin_zh_CN.ts index 179fe5d48..d450a62d2 100644 --- a/src/plugins/Input/flac/translations/flac_plugin_zh_CN.ts +++ b/src/plugins/Input/flac/translations/flac_plugin_zh_CN.ts @@ -4,27 +4,27 @@ DecoderFLACFactory - + FLAC Plugin FLAC 插件 - + FLAC Files FLAC 文件 - + About FLAC Audio Plugin 关于 FLAC 音频插件 - + Qmmp FLAC Audio Plugin Qmmp FLAC 音频插件 - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> 作者:Ilya Kotov <forkotov02@hotmail.ru> @@ -32,42 +32,42 @@ FLACMetaDataModel - + Length - + Sample rate - + Hz Hz - + Channels - + Bitrate - + kbps kbps - + File size - + KB KB diff --git a/src/plugins/Input/flac/translations/flac_plugin_zh_TW.ts b/src/plugins/Input/flac/translations/flac_plugin_zh_TW.ts index 8c3590f28..55129f864 100644 --- a/src/plugins/Input/flac/translations/flac_plugin_zh_TW.ts +++ b/src/plugins/Input/flac/translations/flac_plugin_zh_TW.ts @@ -4,27 +4,27 @@ DecoderFLACFactory - + FLAC Plugin FLAC 插件 - + FLAC Files FLAC 檔案 - + About FLAC Audio Plugin 關於 FLAC 聲訊插件 - + Qmmp FLAC Audio Plugin Qmmp FLAC 聲訊插件 - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> 作者:Ilya Kotov <forkotov02@hotmail.ru> @@ -32,42 +32,42 @@ FLACMetaDataModel - + Length - + Sample rate - + Hz Hz - + Channels - + Bitrate - + kbps kbps - + File size - + KB KB -- cgit v1.2.3-13-gbd6f