Warning, file /multimedia/k3b/plugins/encoder/ogg/k3boggvorbisencoderconfigwidget.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 0003 SPDX-FileCopyrightText: 2003-2009 Sebastian Trueg <trueg@k3b.org> 0004 SPDX-FileCopyrightText: 1998-2009 Sebastian Trueg <trueg@k3b.org> 0005 0006 SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 #include "k3boggvorbisencoderconfigwidget.h" 0010 #include "k3boggvorbisencoderdefaults.h" 0011 #include "k3bcore.h" 0012 #include "k3bplugin_i18n.h" 0013 0014 #include <KConfig> 0015 #include <KConfigGroup> 0016 #include <KSharedConfig> 0017 0018 #include <QCheckBox> 0019 #include <QDebug> 0020 #include <QHBoxLayout> 0021 #include <QLabel> 0022 #include <QLayout> 0023 #include <QRadioButton> 0024 #include <QSlider> 0025 #include <QToolTip> 0026 0027 0028 0029 K3B_EXPORT_PLUGIN_CONFIG_WIDGET( kcm_k3bexternalencoder, K3bOggVorbisEncoderSettingsWidget ) 0030 0031 namespace { 0032 0033 // quality levels -1 to 10 map to 0 to 11 0034 const int s_rough_average_quality_level_bitrates[] = { 0035 45, 0036 64, 0037 80, 0038 96, 0039 112, 0040 128, 0041 160, 0042 192, 0043 224, 0044 256, 0045 320, 0046 400 0047 }; 0048 0049 } // namespace 0050 0051 K3bOggVorbisEncoderSettingsWidget::K3bOggVorbisEncoderSettingsWidget(QObject *parent, const KPluginMetaData& metaData, const QVariantList& args ) 0052 : K3b::PluginConfigWidget( parent, metaData, args ) 0053 { 0054 w = new base_K3bOggVorbisEncoderSettingsWidget( widget() ); 0055 0056 QString ttQuality = i18n("Controls the quality of the encoded files."); 0057 QString wsQuality = i18n("<p>Vorbis' audio quality is not best measured in kilobits per second, " 0058 "but on a scale from -1 to 10 called <em>quality</em>." 0059 "<p>For now, quality -1 is roughly equivalent to 45kbps average, " 0060 "5 is roughly 160kbps, and 10 gives about 400kbps. " 0061 "Most people seeking very-near-CD-quality audio encode at a quality of 5 or, " 0062 "for lossless stereo coupling, 6. The quality 3 gives, at " 0063 "approximately 110kbps a smaller filesize and significantly better fidelity " 0064 "than .mp3 compression at 128kbps." 0065 "<p><em>This explanation is based on the one from the www.vorbis.com FAQ.</em>"); 0066 0067 w->m_radioQualityLevel->setToolTip( ttQuality ); 0068 w->m_labelQualityLevel->setToolTip( ttQuality ); 0069 w->m_slideQualityLevel->setToolTip( ttQuality ); 0070 w->m_radioQualityLevel->setWhatsThis( wsQuality ); 0071 w->m_labelQualityLevel->setWhatsThis( wsQuality ); 0072 w->m_slideQualityLevel->setWhatsThis( wsQuality ); 0073 0074 0075 QHBoxLayout* lay = new QHBoxLayout( widget() ); 0076 lay->setContentsMargins( 0, 0, 0, 0 ); 0077 0078 lay->addWidget( w ); 0079 0080 connect( w->m_slideQualityLevel, SIGNAL(valueChanged(int)), 0081 this, SLOT(slotQualityLevelChanged(int)) ); 0082 0083 slotQualityLevelChanged( 4 ); 0084 0085 connect( w->m_radioQualityLevel, SIGNAL(toggled(bool)), this, SLOT(changed()) ); 0086 connect( w->m_slideQualityLevel, SIGNAL(valueChanged(int)), this, SLOT(changed()) ); 0087 connect( w->m_radioManual, SIGNAL(toggled(bool)), this, SLOT(changed()) ); 0088 connect( w->m_checkBitrateUpper, SIGNAL(toggled(bool)), this, SLOT(changed()) ); 0089 connect( w->m_checkBitrateNominal, SIGNAL(toggled(bool)), this, SLOT(changed()) ); 0090 connect( w->m_checkBitrateLower, SIGNAL(toggled(bool)), this, SLOT(changed()) ); 0091 connect( w->m_inputBitrateUpper, SIGNAL(valueChanged(int)), this, SLOT(changed()) ); 0092 connect( w->m_inputBitrateNominal, SIGNAL(valueChanged(int)), this, SLOT(changed()) ); 0093 connect( w->m_inputBitrateLower, SIGNAL(valueChanged(int)), this, SLOT(changed()) ); 0094 } 0095 0096 0097 K3bOggVorbisEncoderSettingsWidget::~K3bOggVorbisEncoderSettingsWidget() 0098 { 0099 } 0100 0101 0102 void K3bOggVorbisEncoderSettingsWidget::slotQualityLevelChanged( int val ) 0103 { 0104 w->m_labelQualityLevel->setText( QString::number(val) + ' ' 0105 + i18n("(targeted VBR of %1)",s_rough_average_quality_level_bitrates[val+1]) ); 0106 } 0107 0108 0109 void K3bOggVorbisEncoderSettingsWidget::load() 0110 { 0111 KSharedConfig::Ptr c = KSharedConfig::openConfig(); 0112 0113 KConfigGroup grp(c, QStringLiteral("K3bOggVorbisEncoderPlugin") ); 0114 0115 if( grp.readEntry( "manual bitrate", DEFAULT_MANUAL_BITRATE ) ) 0116 w->m_radioManual->setChecked(true); 0117 else 0118 w->m_radioQualityLevel->setChecked(true); 0119 w->m_slideQualityLevel->setValue( grp.readEntry( "quality level", DEFAULT_QUALITY_LEVEL ) ); 0120 w->m_inputBitrateUpper->setValue( grp.readEntry( "bitrate upper", DEFAULT_BITRATE_UPPER ) ); 0121 w->m_checkBitrateUpper->setChecked( grp.readEntry( "bitrate upper", DEFAULT_BITRATE_UPPER ) != -1 ); 0122 w->m_inputBitrateNominal->setValue( grp.readEntry( "bitrate nominal", DEFAULT_BITRATE_NOMINAL ) ); 0123 w->m_checkBitrateNominal->setChecked( grp.readEntry( "bitrate nominal", DEFAULT_BITRATE_NOMINAL ) != -1 ); 0124 w->m_inputBitrateLower->setValue( grp.readEntry( "bitrate lower", DEFAULT_BITRATE_LOWER ) ); 0125 w->m_checkBitrateLower->setChecked( grp.readEntry( "bitrate lower", DEFAULT_BITRATE_LOWER ) != -1 ); 0126 // w->m_inputSamplerate->setValue( grp.readEntry( "samplerate", DEFAULT_SAMPLERATE ) ); 0127 } 0128 0129 0130 void K3bOggVorbisEncoderSettingsWidget::save() 0131 { 0132 KSharedConfig::Ptr c = KSharedConfig::openConfig(); 0133 0134 KConfigGroup grp(c, QStringLiteral("K3bOggVorbisEncoderPlugin") ); 0135 0136 grp.writeEntry( "manual bitrate", w->m_radioManual->isChecked() ); 0137 grp.writeEntry( "quality level", w->m_slideQualityLevel->value() ); 0138 grp.writeEntry( "bitrate upper", w->m_checkBitrateUpper->isChecked() ? w->m_inputBitrateUpper->value() : -1 ); 0139 grp.writeEntry( "bitrate nominal", w->m_checkBitrateNominal->isChecked() ? w->m_inputBitrateNominal->value() : -1 ); 0140 grp.writeEntry( "bitrate lower", w->m_checkBitrateLower->isChecked() ? w->m_inputBitrateLower->value() : -1 ); 0141 // c->writeEntry( "samplerate", w->m_inputSamplerate->value() ); 0142 } 0143 0144 0145 void K3bOggVorbisEncoderSettingsWidget::defaults() 0146 { 0147 if( DEFAULT_MANUAL_BITRATE ) 0148 w->m_radioManual->setChecked(true); 0149 else 0150 w->m_radioQualityLevel->setChecked(true); 0151 w->m_slideQualityLevel->setValue( DEFAULT_QUALITY_LEVEL ); 0152 w->m_inputBitrateUpper->setValue( DEFAULT_BITRATE_UPPER ); 0153 w->m_checkBitrateUpper->setChecked( DEFAULT_BITRATE_UPPER != -1 ); 0154 w->m_inputBitrateNominal->setValue( DEFAULT_BITRATE_NOMINAL ); 0155 w->m_checkBitrateNominal->setChecked( DEFAULT_BITRATE_NOMINAL != -1 ); 0156 w->m_inputBitrateLower->setValue( DEFAULT_BITRATE_LOWER ); 0157 w->m_checkBitrateLower->setChecked( DEFAULT_BITRATE_LOWER != -1 ); 0158 // w->m_inputSamplerate->setValue( DEFAULT_SAMPLERATE ); 0159 setNeedsSave( true ); 0160 } 0161 0162 #include "k3boggvorbisencoderconfigwidget.moc" 0163 0164 #include "moc_k3boggvorbisencoderconfigwidget.cpp"