File indexing completed on 2024-04-21 04:48:15
0001 /* AUDEX CDDA EXTRACTOR 0002 * SPDX-FileCopyrightText: Copyright (C) 2007 Marco Nelles 0003 * <https://userbase.kde.org/Audex> 0004 * 0005 * SPDX-License-Identifier: GPL-3.0-or-later 0006 */ 0007 0008 #ifndef ENCODERASSISTANT_H 0009 #define ENCODERASSISTANT_H 0010 0011 #include <QMap> 0012 #include <QString> 0013 #include <QStringList> 0014 0015 #include <KLocalizedString> 0016 #include <KProcess> 0017 0018 #include "utils/parameters.h" 0019 #include "utils/schemeparser.h" 0020 0021 #define ENCODER_LAME_SUFFIX_KEY "suffix" 0022 #define ENCODER_LAME_PRESET_KEY "preset" 0023 #define ENCODER_LAME_PRESET_MEDIUM 0 0024 #define ENCODER_LAME_PRESET_STANDARD 1 0025 #define ENCODER_LAME_PRESET_EXTREME 2 0026 #define ENCODER_LAME_PRESET_INSANE 3 0027 #define ENCODER_LAME_PRESET_CUSTOM 4 0028 #define ENCODER_LAME_CBR_KEY "cbr" 0029 #define ENCODER_LAME_BITRATE_KEY "bitrate" 0030 #define ENCODER_LAME_EMBED_COVER_KEY "embed_cover" 0031 0032 #define ENCODER_OGGENC_SUFFIX_KEY "suffix" 0033 #define ENCODER_OGGENC_QUALITY_KEY "quality" 0034 #define ENCODER_OGGENC_MINBITRATE_KEY "minbitrate" 0035 #define ENCODER_OGGENC_MINBITRATE_VALUE_KEY "minbitrate_value" 0036 #define ENCODER_OGGENC_MAXBITRATE_KEY "maxbitrate" 0037 #define ENCODER_OGGENC_MAXBITRATE_VALUE_KEY "maxbitrate_value" 0038 0039 #define ENCODER_OPUSENC_SUFFIX_KEY "suffix" 0040 #define ENCODER_OPUSENC_BITRATE_KEY "bitrate" 0041 #define ENCODER_OPUSENC_EMBED_COVER_KEY "embed_cover" 0042 0043 #define ENCODER_FLAC_SUFFIX_KEY "suffix" 0044 #define ENCODER_FLAC_COMPRESSION_KEY "compression" 0045 #define ENCODER_FLAC_EMBED_COVER_KEY "embed_cover" 0046 0047 #define ENCODER_FAAC_SUFFIX_KEY "suffix" 0048 #define ENCODER_FAAC_QUALITY_KEY "quality" 0049 #define ENCODER_FAAC_EMBED_COVER_KEY "embed_cover" 0050 0051 #define ENCODER_WAVE_SUFFIX_KEY "suffix" 0052 0053 #define ENCODER_CUSTOM_SUFFIX_KEY "suffix" 0054 #define ENCODER_CUSTOM_COMMAND_SCHEME_KEY "command_scheme" 0055 0056 /******************/ 0057 /* default values */ 0058 /******************/ 0059 #define ENCODER_LAME_NAME i18n("MP3") 0060 #define ENCODER_LAME_ENCODER_NAME "LAME" 0061 #define ENCODER_LAME_ICON "audio-mpeg" 0062 #define ENCODER_LAME_BIN "lame" 0063 #define ENCODER_LAME_VERSION_PARA "--version" 0064 #define ENCODER_LAME_SUFFIX "mp3" 0065 #define ENCODER_LAME_MAX_EMBED_COVER_SIZE 128 * 1024 0066 #define ENCODER_LAME_EMBED_COVER true 0067 0068 /* preset quality */ 0069 #define ENCODER_LAME_PRESET 2 0070 #define ENCODER_LAME_CBR false 0071 #define ENCODER_LAME_BITRATE 224 0072 0073 #define ENCODER_OGGENC_NAME i18n("Ogg Vorbis") 0074 #define ENCODER_OGGENC_ENCODER_NAME "OGGENC" 0075 #define ENCODER_OGGENC_ICON "audio-x-vorbis+ogg" 0076 #define ENCODER_OGGENC_BIN "oggenc" 0077 #define ENCODER_OGGENC_VERSION_PARA "--version" 0078 #define ENCODER_OGGENC_SUFFIX "ogg" 0079 0080 /* preset quality */ 0081 #define ENCODER_OGGENC_QUALITY 6 0082 #define ENCODER_OGGENC_MINBITRATE false 0083 #define ENCODER_OGGENC_MINBITRATE_VALUE 80 0084 #define ENCODER_OGGENC_MAXBITRATE false 0085 #define ENCODER_OGGENC_MAXBITRATE_VALUE 320 0086 0087 #define ENCODER_OPUSENC_NAME i18n("Opus") 0088 #define ENCODER_OPUSENC_ENCODER_NAME "OPUSENC" 0089 #define ENCODER_OPUSENC_ICON "audio-x-opus" 0090 #define ENCODER_OPUSENC_BIN "opusenc" 0091 #define ENCODER_OPUSENC_VERSION_PARA "--version" 0092 #define ENCODER_OPUSENC_SUFFIX "opus" 0093 #define ENCODER_OPUSENC_EMBED_COVER true 0094 0095 /* preset quality */ 0096 #define ENCODER_OPUSENC_BITRATE 128 0097 0098 #define ENCODER_FLAC_NAME i18n("FLAC (Lossless)") 0099 #define ENCODER_FLAC_ENCODER_NAME "FLAC" 0100 #define ENCODER_FLAC_ICON "audio-x-flac" 0101 #define ENCODER_FLAC_BIN "flac" 0102 #define ENCODER_FLAC_VERSION_PARA "-v" 0103 #define ENCODER_FLAC_SUFFIX "flac" 0104 0105 #define ENCODER_FLAC_COMPRESSION 8 0106 #define ENCODER_FLAC_EMBED_COVER true 0107 0108 #define ENCODER_FAAC_NAME i18n("MP4 (AAC)") 0109 #define ENCODER_FAAC_ENCODER_NAME "FAAC" 0110 #define ENCODER_FAAC_ICON "audio-mp4" 0111 #define ENCODER_FAAC_BIN "faac" 0112 #define ENCODER_FAAC_VERSION_PARA "--help" 0113 #define ENCODER_FAAC_SUFFIX "mp4" 0114 #define ENCODER_FAAC_EMBED_COVER true 0115 0116 /* preset quality */ 0117 #define ENCODER_FAAC_QUALITY 160 0118 0119 #define ENCODER_WAVE_NAME i18n("WAVE (Raw Uncompressed)") 0120 #define ENCODER_WAVE_ENCODER_NAME "WAVE" 0121 #define ENCODER_WAVE_ICON "audio-x-wav" 0122 #define ENCODER_WAVE_BIN "mv" 0123 #define ENCODER_WAVE_VERSION_PARA "--help" 0124 #define ENCODER_WAVE_SUFFIX "wav" 0125 0126 #define ENCODER_CUSTOM_NAME i18n("Custom") 0127 #define ENCODER_CUSTOM_ENCODER_NAME i18n("Custom") 0128 #define ENCODER_CUSTOM_ICON "audio-x-generic" 0129 #define ENCODER_CUSTOM_BIN "" 0130 #define ENCODER_CUSTOM_VERSION_PARA "" 0131 #define ENCODER_CUSTOM_SUFFIX "" 0132 #define ENCODER_CUSTOM_COMMAND_SCHEME "" 0133 0134 #define ENCODER_NUM 6 0135 0136 namespace EncoderAssistant 0137 { 0138 enum Encoder { LAME = 0, OGGENC, OPUSENC, FLAC, FAAC, WAVE, CUSTOM, NUM }; 0139 0140 const QString name(const Encoder encoder); 0141 const QString encoderName(const Encoder encoder); 0142 const QString icon(const Encoder encoder); 0143 0144 bool available(const Encoder encoder); 0145 bool canEmbedCover(const Encoder encoder, int *maxCoverSize = nullptr); 0146 const QString version(const Encoder encoder); 0147 long versionNumber(const Encoder encoder); 0148 const QString scheme(const Encoder encoder, const Parameters ¶meters); 0149 0150 Parameters stdParameters(const Encoder encoder); 0151 0152 const QMap<int, QString> encoderList(); 0153 const QMap<int, QString> availableEncoderNameList(); 0154 const QMap<int, QString> availableEncoderNameListWithVersions(); 0155 0156 }; 0157 0158 #endif