File: encoderassistant.h

package info (click to toggle)
audex 0.78-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 3,844 kB
  • ctags: 1,461
  • sloc: cpp: 10,604; makefile: 7; sh: 3
file content (216 lines) | stat: -rw-r--r-- 6,374 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
/* AUDEX CDDA EXTRACTOR
 * Copyright (C) 2007-2014 Marco Nelles (audex@maniatek.com)
 * <http://kde.maniatek.com/audex>
 *
 * 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 3 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, see <http://www.gnu.org/licenses/>.
 */

#ifndef ENCODERASSISTANT_H
#define ENCODERASSISTANT_H

#include <QString>
#include <QStringList>
#include <QMap>

#include <KDebug>
#include <KLocale>
#include <KProcess>

#include "utils/parameters.h"
#include "utils/patternparser.h"

#define ENCODER_LAME_SUFFIX_KEY			"suffix"
#define ENCODER_LAME_PRESET_KEY			"preset"
#define ENCODER_LAME_PRESET_MEDIUM		0
#define ENCODER_LAME_PRESET_STANDARD		1
#define ENCODER_LAME_PRESET_EXTREME		2
#define ENCODER_LAME_PRESET_INSANE		3
#define ENCODER_LAME_PRESET_CUSTOM		4
#define ENCODER_LAME_CBR_KEY			"cbr"
#define ENCODER_LAME_BITRATE_KEY		"bitrate"
#define ENCODER_LAME_EMBED_COVER_KEY		"embed_cover"

#define ENCODER_OGGENC_SUFFIX_KEY		"suffix"
#define ENCODER_OGGENC_QUALITY_KEY		"quality"
#define ENCODER_OGGENC_MINBITRATE_KEY		"minbitrate"
#define ENCODER_OGGENC_MINBITRATE_VALUE_KEY	"minbitrate_value"
#define ENCODER_OGGENC_MAXBITRATE_KEY		"maxbitrate"
#define ENCODER_OGGENC_MAXBITRATE_VALUE_KEY	"maxbitrate_value"

#define ENCODER_FLAC_SUFFIX_KEY			"suffix"
#define ENCODER_FLAC_COMPRESSION_KEY		"compression"
#define ENCODER_FLAC_EMBED_COVER_KEY            "embed_cover"

#define ENCODER_FAAC_SUFFIX_KEY			"suffix"
#define ENCODER_FAAC_QUALITY_KEY		"quality"

#define ENCODER_WAVE_SUFFIX_KEY			"suffix"

#define ENCODER_CUSTOM_SUFFIX_KEY		"suffix"
#define ENCODER_CUSTOM_COMMAND_PATTERN_KEY	"command_pattern"


/******************/
/* default values */
/******************/
#define ENCODER_LAME_NAME			i18n("MP3")
#define ENCODER_LAME_ENCODER_NAME		"LAME"
#define ENCODER_LAME_ICON			"audio-mpeg"
#define ENCODER_LAME_BIN			"lame"
#define ENCODER_LAME_VERSION_PARA		"--version"
#define ENCODER_LAME_SUFFIX			"mp3"
#define ENCODER_LAME_MAX_EMBED_COVER_SIZE	128*1024

/* preset normal quality */
#define ENCODER_LAME_PRESET			1
#define ENCODER_LAME_CBR			"false"
#define ENCODER_LAME_BITRATE			192
#define ENCODER_LAME_EMBED_COVER		"false"

/* preset mobile quality */
#define ENCODER_LAME_PRESET_M			4
#define ENCODER_LAME_CBR_M			"false"
#define ENCODER_LAME_BITRATE_M			128
#define ENCODER_LAME_EMBED_COVER_M		"false"

/* preset extreme quality */
#define ENCODER_LAME_PRESET_X			2
#define ENCODER_LAME_CBR_X			"false"
#define ENCODER_LAME_BITRATE_X			192
#define ENCODER_LAME_EMBED_COVER_X		"false"

/* tag helper for lame */
#define ENCODER_LAME_HELPER_TAG			"eyeD3"
#define ENCODER_LAME_HELPER_TAG_VERSION_PARA	"--version"



#define ENCODER_OGGENC_NAME			i18n("Ogg Vorbis")
#define ENCODER_OGGENC_ENCODER_NAME		"OGGENC"
#define ENCODER_OGGENC_ICON			"audio-x-vorbis+ogg"
#define ENCODER_OGGENC_BIN			"oggenc"
#define ENCODER_OGGENC_VERSION_PARA		"--version"
#define ENCODER_OGGENC_SUFFIX			"ogg"

/* preset normal quality */
#define ENCODER_OGGENC_QUALITY			4
#define ENCODER_OGGENC_MINBITRATE		FALSE
#define ENCODER_OGGENC_MINBITRATE_VALUE		80
#define ENCODER_OGGENC_MAXBITRATE		FALSE
#define ENCODER_OGGENC_MAXBITRATE_VALUE		256

/* preset mobile quality */
#define ENCODER_OGGENC_QUALITY_M		2
#define ENCODER_OGGENC_MINBITRATE_M		FALSE
#define ENCODER_OGGENC_MINBITRATE_VALUE_M	80
#define ENCODER_OGGENC_MAXBITRATE_M		TRUE
#define ENCODER_OGGENC_MAXBITRATE_VALUE_M	224

/* preset extreme quality */
#define ENCODER_OGGENC_QUALITY_X		6
#define ENCODER_OGGENC_MINBITRATE_X		FALSE
#define ENCODER_OGGENC_MINBITRATE_VALUE_X	80
#define ENCODER_OGGENC_MAXBITRATE_X		FALSE
#define ENCODER_OGGENC_MAXBITRATE_VALUE_X	256



#define ENCODER_FLAC_NAME			i18n("FLAC (Lossless)")
#define ENCODER_FLAC_ENCODER_NAME		"FLAC"
#define ENCODER_FLAC_ICON			"audio-x-flac"
#define ENCODER_FLAC_BIN			"flac"
#define ENCODER_FLAC_VERSION_PARA		"-v"
#define ENCODER_FLAC_SUFFIX			"flac"

#define ENCODER_FLAC_COMPRESSION		5
#define ENCODER_FLAC_EMBED_COVER		"true"


#define ENCODER_FAAC_NAME			i18n("MP4 (AAC)")
#define ENCODER_FAAC_ENCODER_NAME		"FAAC"
#define ENCODER_FAAC_ICON			"audio-mp4"
#define ENCODER_FAAC_BIN			"faac"
#define ENCODER_FAAC_VERSION_PARA		"--help"
#define ENCODER_FAAC_SUFFIX			"mp4"

/* preset normal quality */
#define ENCODER_FAAC_QUALITY			150

/* preset mobile quality */
#define ENCODER_FAAC_QUALITY_M			110

/* preset extreme quality */
#define ENCODER_FAAC_QUALITY_X			300



#define ENCODER_WAVE_NAME			i18n("WAVE (Raw Uncompressed)")
#define ENCODER_WAVE_ENCODER_NAME		"WAVE"
#define ENCODER_WAVE_ICON			"audio-x-wav"
#define ENCODER_WAVE_BIN			"mv"
#define ENCODER_WAVE_VERSION_PARA		"--help"
#define ENCODER_WAVE_SUFFIX			"wav"



#define ENCODER_CUSTOM_NAME			i18n("Custom")
#define ENCODER_CUSTOM_ENCODER_NAME		i18n("Custom")
#define ENCODER_CUSTOM_ICON			"audio-x-generic"
#define ENCODER_CUSTOM_BIN			""
#define ENCODER_CUSTOM_VERSION_PARA		""
#define ENCODER_CUSTOM_SUFFIX			""
#define ENCODER_CUSTOM_COMMAND_PATTERN		""



#define ENCODER_NUM				6


namespace EncoderAssistant {

  enum Encoder {
    LAME = 0,
    OGGENC,
    FLAC,
    FAAC,
    WAVE,
    CUSTOM,
    NUM
  };

  const QString name(const Encoder encoder);
  const QString encoderName(const Encoder encoder);
  const QString icon(const Encoder encoder);

  bool available(const Encoder encoder);
  bool canEmbedCover(const Encoder encoder, int *maxCoverSize = NULL);
  const QString version(const Encoder encoder);
  long versionNumber(const Encoder encoder);
  const QString pattern(const Encoder encoder, const Parameters& parameters);

  enum Quality {
    MOBILE = 0,
    NORMAL,
    EXTREME
  };

  Parameters stdParameters(const Encoder encoder, const Quality quality);

  const QMap<int,QString> encoderList();
  const QMap<int,QString> availableEncoderNameList();
  const QMap<int,QString> availableEncoderNameListWithVersions();

};

#endif