summaryrefslogtreecommitdiffstats
path: root/rbutil/rbutilqt/base/encoderrbspeex.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'rbutil/rbutilqt/base/encoderrbspeex.cpp')
-rw-r--r--rbutil/rbutilqt/base/encoderrbspeex.cpp114
1 files changed, 114 insertions, 0 deletions
diff --git a/rbutil/rbutilqt/base/encoderrbspeex.cpp b/rbutil/rbutilqt/base/encoderrbspeex.cpp
new file mode 100644
index 0000000000..431ab0a872
--- /dev/null
+++ b/rbutil/rbutilqt/base/encoderrbspeex.cpp
@@ -0,0 +1,114 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ *
+ * Copyright (C) 2007 by Dominik Wenger
+ *
+ * All files in this archive are subject to the GNU General Public License.
+ * See the file COPYING in the source tree root for full license agreement.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#include <QtCore>
+#include "encoderrbspeex.h"
+#include "rbsettings.h"
+
+EncoderRbSpeex::EncoderRbSpeex(QObject *parent) : EncoderBase(parent)
+{
+
+}
+
+void EncoderRbSpeex::generateSettings()
+{
+ insertSetting(eVOLUME,new EncTtsSetting(this,EncTtsSetting::eDOUBLE,
+ tr("Volume:"),RbSettings::subValue("rbspeex",RbSettings::EncoderVolume),1.0,10.0));
+ insertSetting(eQUALITY,new EncTtsSetting(this,EncTtsSetting::eDOUBLE,
+ tr("Quality:"),RbSettings::subValue("rbspeex",RbSettings::EncoderQuality),0,10.0));
+ insertSetting(eCOMPLEXITY,new EncTtsSetting(this,EncTtsSetting::eINT,
+ tr("Complexity:"),RbSettings::subValue("rbspeex",RbSettings::EncoderComplexity),0,10));
+ insertSetting(eNARROWBAND,new EncTtsSetting(this,EncTtsSetting::eBOOL,
+ tr("Use Narrowband:"),RbSettings::subValue("rbspeex",RbSettings::EncoderNarrowBand)));
+}
+
+void EncoderRbSpeex::saveSettings()
+{
+ //save settings in user config
+ RbSettings::setSubValue("rbspeex",RbSettings::EncoderVolume,
+ getSetting(eVOLUME)->current().toDouble());
+ RbSettings::setSubValue("rbspeex",RbSettings::EncoderQuality,
+ getSetting(eQUALITY)->current().toDouble());
+ RbSettings::setSubValue("rbspeex",RbSettings::EncoderComplexity,
+ getSetting(eCOMPLEXITY)->current().toInt());
+ RbSettings::setSubValue("rbspeex",RbSettings::EncoderNarrowBand,
+ getSetting(eNARROWBAND)->current().toBool());
+
+ RbSettings::sync();
+}
+
+bool EncoderRbSpeex::start()
+{
+
+ // try to get config from settings
+ quality = RbSettings::subValue("rbspeex", RbSettings::EncoderQuality).toDouble();
+ complexity = RbSettings::subValue("rbspeex", RbSettings::EncoderComplexity).toInt();
+ volume = RbSettings::subValue("rbspeex", RbSettings::EncoderVolume).toDouble();
+ narrowband = RbSettings::subValue("rbspeex", RbSettings::EncoderNarrowBand).toBool();
+
+
+ return true;
+}
+
+bool EncoderRbSpeex::encode(QString input,QString output)
+{
+ qDebug() << "[RbSpeex] Encoding " << input << " to "<< output;
+ char errstr[512];
+
+ FILE *fin,*fout;
+ if ((fin = fopen(input.toLocal8Bit(), "rb")) == NULL) {
+ qDebug() << "[RbSpeex] Error: could not open input file\n";
+ return false;
+ }
+ if ((fout = fopen(output.toLocal8Bit(), "wb")) == NULL) {
+ qDebug() << "[RbSpeex] Error: could not open output file\n";
+ fclose(fin);
+ return false;
+ }
+
+ int ret = encode_file(fin, fout, quality, complexity, narrowband, volume,
+ errstr, sizeof(errstr));
+ fclose(fout);
+ fclose(fin);
+
+ if (!ret) {
+ /* Attempt to delete unfinished output */
+ qDebug() << "[RbSpeex] Error:" << errstr;
+ QFile(output).remove();
+ return false;
+ }
+ return true;
+}
+
+bool EncoderRbSpeex::configOk()
+{
+ bool result=true;
+ // check config
+
+ if(RbSettings::subValue("rbspeex", RbSettings::EncoderVolume).toDouble() <= 0)
+ result =false;
+
+ if(RbSettings::subValue("rbspeex", RbSettings::EncoderQuality).toDouble() <= 0)
+ result =false;
+
+ if(RbSettings::subValue("rbspeex", RbSettings::EncoderComplexity).toInt() <= 0)
+ result =false;
+
+ return result;
+}
+