rockbox/rbutil/rbutilqt/base/encoderbase.cpp
Dominik Riebeling f1fc6bae25 Rockbox Utility: use libmp3lame for voice clips.
Instead of calling the lame executable use libmp3lame directly. As result, this
simplifies the prerequisites for creating voice clips for Archos devices to
putting the library in the system's search path (Windows: put libmp3lame.dll in
the search path or the same folder RockboxUtility.exe is located in. Linux:
install the library using your systems package manager) and configuration.

This creates a notable encoding speedup on Windows (around factor 6 on my test
setup) and a small speedup on Linux (around factor 1.2).

The implemenatation currently has the following limitations:
- Only enabled on Windows and Linux. On OS X installing the correct dylib is a
  bit nontrivial, so using the old command line based method is still in use
  for now.
- The encoder parameters are currently hardcoded to use the same values the
  build system uses.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31634 a1c6a512-1295-4272-9138-f99709370657
2012-01-08 11:50:04 +00:00

81 lines
2.2 KiB
C++

/***************************************************************************
* __________ __ ___.
* 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 "encoderbase.h"
#include "utils.h"
#include "rbsettings.h"
#include "encoderrbspeex.h"
#include "encoderlame.h"
#include "encoderexe.h"
/*********************************************************************
* Encoder Base
**********************************************************************/
QMap<QString,QString> EncoderBase::encoderList;
EncoderBase::EncoderBase(QObject *parent): EncTtsSettingInterface(parent)
{
}
// initialize list of encoders
void EncoderBase::initEncodernamesList()
{
encoderList["rbspeex"] = "Rockbox Speex Encoder";
encoderList["lame"] = "Lame Mp3 Encoder";
}
// get nice name for a specific encoder
QString EncoderBase::getEncoderName(QString encoder)
{
if(encoderList.isEmpty())
initEncodernamesList();
return encoderList.value(encoder);
}
// get a specific encoder object
EncoderBase* EncoderBase::getEncoder(QObject* parent,QString encoder)
{
EncoderBase* enc;
if(encoder == "lame")
{
#if defined(Q_OS_MACX)
/* currently not on OS X */
enc = new EncoderExe(encoder,parent);
#else
enc = new EncoderLame(parent);
#endif
return enc;
}
else // rbspeex is default
{
enc = new EncoderRbSpeex(parent);
return enc;
}
}
QStringList EncoderBase::getEncoderList()
{
if(encoderList.isEmpty())
initEncodernamesList();
return encoderList.keys();
}