summaryrefslogtreecommitdiff
path: root/rbutil/rbutilqt/base/encoderlame.h
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2012-01-08 11:50:04 +0000
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2012-01-08 11:50:04 +0000
commitf1fc6bae253d55ba4faf0abeeb1c8c3e125627e7 (patch)
treeb5af14bb95660680bdf01f59e29a117cba6a21dd /rbutil/rbutilqt/base/encoderlame.h
parent3e014d35231ed66e53c6531d8d0d1e4603f9df93 (diff)
downloadrockbox-f1fc6bae253d55ba4faf0abeeb1c8c3e125627e7.tar.gz
rockbox-f1fc6bae253d55ba4faf0abeeb1c8c3e125627e7.zip
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
Diffstat (limited to 'rbutil/rbutilqt/base/encoderlame.h')
-rw-r--r--rbutil/rbutilqt/base/encoderlame.h71
1 files changed, 71 insertions, 0 deletions
diff --git a/rbutil/rbutilqt/base/encoderlame.h b/rbutil/rbutilqt/base/encoderlame.h
new file mode 100644
index 0000000000..9f87188d9b
--- /dev/null
+++ b/rbutil/rbutilqt/base/encoderlame.h
@@ -0,0 +1,71 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 *
9 * Copyright (C) 2012 Dominik Riebeling
10 *
11 * All files in this archive are subject to the GNU General Public License.
12 * See the file COPYING in the source tree root for full license agreement.
13 *
14 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
15 * KIND, either express or implied.
16 *
17 ****************************************************************************/
18
19#ifndef ENCODERLAME_H
20#define ENCODERLAME_H
21
22#include <QtCore>
23#include "encoderbase.h"
24#include "lame/lame.h"
25
26class EncoderLame : public EncoderBase
27{
28 enum ESettings
29 {
30 eVOLUME,
31 eQUALITY,
32 eCOMPLEXITY,
33 eNARROWBAND
34 };
35
36 Q_OBJECT
37 public:
38 EncoderLame(QObject *parent = NULL);
39 bool encode(QString input,QString output);
40 bool start();
41 bool stop() {return true;}
42
43 // for settings view
44 bool configOk();
45 void generateSettings();
46 void saveSettings();
47
48 private:
49 QLibrary *lib;
50 const char*(*m_get_lame_short_version)(void);
51 int (*m_lame_set_out_samplerate)(lame_global_flags*, int);
52 int (*m_lame_set_in_samplerate)(lame_global_flags*, int);
53 int (*m_lame_set_num_channels)(lame_global_flags*, int);
54 int (*m_lame_set_scale)(lame_global_flags*, float);
55 int (*m_lame_set_mode)(lame_global_flags*, MPEG_mode);
56 int (*m_lame_set_VBR)(lame_global_flags*, vbr_mode);
57 int (*m_lame_set_VBR_quality)(lame_global_flags*, float);
58 int (*m_lame_set_VBR_max_bitrate_kbps)(lame_global_flags*, int);
59 int (*m_lame_set_bWriteVbrTag)(lame_global_flags*, int);
60 lame_global_flags*(*m_lame_init)(void);
61 int (*m_lame_init_params)(lame_global_flags*);
62 int (*m_lame_encode_buffer)(lame_global_flags*, short int[], short
63 int[], int, unsigned char*, int);
64 int (*m_lame_encode_flush)(lame_global_flags*, unsigned char*, int);
65 int (*m_lame_close)(lame_global_flags*);
66
67 bool m_symbolsResolved;
68};
69
70#endif
71