Changeset 651 for trunk/src/3rdparty/phonon/mmf/abstractaudioeffect.cpp
- Timestamp:
- Mar 8, 2010, 12:52:58 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/vendor/nokia/qt/4.6.2 (added) merged: 650 /branches/vendor/nokia/qt/current merged: 649 /branches/vendor/nokia/qt/4.6.1 removed
- Property svn:mergeinfo changed
-
trunk/src/3rdparty/phonon/mmf/abstractaudioeffect.cpp
r561 r651 38 38 AbstractAudioEffect::AbstractAudioEffect(QObject *parent, 39 39 const QList<EffectParameter> ¶ms) 40 : MediaNode::MediaNode(parent) 40 : MediaNode(parent) 41 , m_params(params) 41 42 , m_player(0) 42 , m_params(params)43 43 { 44 44 45 } 45 46 46 QList< EffectParameter> AbstractAudioEffect::parameters() const47 QList<Phonon::EffectParameter> AbstractAudioEffect::parameters() const 47 48 { 48 return m_params; 49 // Convert from QList<MMF::EffectParameter> to QList<Phonon::EffectParameter> 50 QList<Phonon::EffectParameter> result; 51 EffectParameter param; 52 foreach (param, m_params) 53 result += param; 54 return result; 49 55 } 50 56 51 QVariant AbstractAudioEffect::parameterValue(const EffectParameter &queriedParam) const57 QVariant AbstractAudioEffect::parameterValue(const Phonon::EffectParameter &queriedParam) const 52 58 { 53 59 const QVariant &val = m_values.value(queriedParam.id()); … … 59 65 } 60 66 61 void AbstractAudioEffect::setParameterValue(const EffectParameter ¶m,67 void AbstractAudioEffect::setParameterValue(const Phonon::EffectParameter ¶m, 62 68 const QVariant &newValue) 63 69 { 64 70 m_values.insert(param.id(), newValue); 65 parameterChanged(param.id(), newValue); 66 // TODO: handle audio effect errors 67 TRAP_IGNORE(m_effect->ApplyL()); 71 72 if (m_effect.data()) { 73 const EffectParameter& internalParam = internalParameter(param.id()); 74 int err = parameterChanged(internalParam, newValue); 75 // TODO: handle audio effect errors 76 Q_UNUSED(err); 77 } 78 } 79 80 void AbstractAudioEffect::abstractPlayerChanged(AbstractPlayer *player) 81 { 82 m_player = qobject_cast<AbstractMediaPlayer *>(player); 83 m_effect.reset(); 84 } 85 86 void AbstractAudioEffect::stateChanged(Phonon::State newState, 87 Phonon::State oldState) 88 { 89 if (Phonon::LoadingState == oldState 90 && Phonon::LoadingState != newState) 91 createEffect(); 68 92 } 69 93 … … 73 97 Q_ASSERT_X(!m_effect.data(), Q_FUNC_INFO, "Effect already created"); 74 98 75 AbstractMediaPlayer *const player = 76 qobject_cast<AbstractMediaPlayer *>(mediaObject->abstractPlayer()); 99 abstractPlayerChanged(mediaObject->abstractPlayer()); 77 100 78 if (player) {79 m_player = player;101 connect(mediaObject, SIGNAL(stateChanged(Phonon::State, Phonon::State)), 102 SLOT(stateChanged(Phonon::State, Phonon::State))); 80 103 81 if (AudioPlayer *audioPlayer = qobject_cast<AudioPlayer *>(player)) { 82 connectAudioPlayer(audioPlayer->nativePlayer()); 83 applyParameters(); 84 // TODO: handle audio effect errors 85 TRAP_IGNORE(m_effect->EnableL()); 104 connect(mediaObject, SIGNAL(abstractPlayerChanged(AbstractPlayer *)), 105 SLOT(abstractPlayerChanged(AbstractPlayer *))); 106 107 if (mediaObject->state() != Phonon::LoadingState) 108 createEffect(); 109 } 110 111 void AbstractAudioEffect::disconnectMediaObject(MediaObject *mediaObject) 112 { 113 mediaObject->disconnect(this); 114 abstractPlayerChanged(0); 115 } 116 117 void AbstractAudioEffect::setEnabled(bool enabled) 118 { 119 TInt err = KErrNone; 120 121 if (enabled) 122 // TODO: handle audio effect errors 123 TRAP(err, m_effect->EnableL()) 124 else 125 // TODO: handle audio effect errors 126 TRAP(err, m_effect->DisableL()) 127 128 Q_UNUSED(err); 129 } 130 131 void AbstractAudioEffect::createEffect() 132 { 133 Q_ASSERT_X(m_player, Q_FUNC_INFO, "Invalid media player pointer"); 134 135 if (AudioPlayer *audioPlayer = qobject_cast<AudioPlayer *>(m_player)) { 136 createEffect(audioPlayer->nativePlayer()); 137 } 138 139 if (m_effect.data()) { 140 EffectParameter param; 141 int err = 0; 142 foreach (param, m_params) { 143 const QVariant value = parameterValue(param); 144 err = parameterChanged(param, value); 86 145 } 146 Q_UNUSED(err) 87 147 } 88 148 } 89 149 90 void AbstractAudioEffect::disconnectMediaObject(MediaObject * /*mediaObject*/) 150 const MMF::EffectParameter& AbstractAudioEffect::internalParameter(int id) const 91 151 { 92 m_player = 0; 93 m_effect.reset(); 152 const EffectParameter *result = 0; 153 for (int i=0; i<m_params.count() && !result; ++i) { 154 if (m_params[i].id() == id) 155 result = &m_params[i]; 156 } 157 Q_ASSERT_X(result, Q_FUNC_INFO, "Parameter not found"); 158 return *result; 94 159 } 160 161 int AbstractAudioEffect::parameterChanged(const EffectParameter ¶m, 162 const QVariant &value) 163 { 164 int err = 0; 165 166 switch (param.id()) { 167 case ParameterEnable: 168 setEnabled(value.toBool()); 169 break; 170 default: 171 { 172 const EffectParameter& internalParam = internalParameter(param.id()); 173 err = effectParameterChanged(internalParam, value); 174 } 175 break; 176 } 177 178 if (!err) 179 TRAP(err, m_effect->ApplyL()); 180 181 return err; 182 } 183 184 int AbstractAudioEffect::effectParameterChanged( 185 const EffectParameter ¶m, const QVariant &value) 186 { 187 // Default implementation 188 Q_ASSERT_X(false, Q_FUNC_INFO, "Effect has no parameters"); 189 return 0; 190 } 191 95 192 96 193 QT_END_NAMESPACE
Note:
See TracChangeset
for help on using the changeset viewer.