Merge remote-tracking branch 'origin/stable' into dev

Conflicts:
	.qmake.conf

Change-Id: I6ea9c40c69f55fa733fd9000a57d570fff21f1e9
This commit is contained in:
Frederik Gladhorn
2013-11-29 16:03:52 +01:00
13 changed files with 95 additions and 25 deletions

View File

@@ -3,4 +3,3 @@ plugin declarative_multimedia
classname QMultimediaDeclarativeModule
typeinfo plugins.qmltypes
Video 5.0 Video.qml
classname QMultimediaDeclarativeModule

View File

@@ -265,7 +265,7 @@ int QSoundEffect::loopsRemaining() const
*/
qreal QSoundEffect::volume() const
{
return qreal(d->volume()) / 100;
return d->volume();
}
/*!
@@ -273,15 +273,15 @@ qreal QSoundEffect::volume() const
*/
void QSoundEffect::setVolume(qreal volume)
{
if (volume < 0 || volume > 1) {
if (volume < qreal(0.0) || volume > qreal(1.0)) {
qWarning("SoundEffect: volume should be between 0.0 and 1.0");
return;
}
int iVolume = qRound(volume * 100);
if (d->volume() == iVolume)
if (qFuzzyCompare(d->volume(), volume))
return;
d->setVolume(iVolume);
d->setVolume(volume);
}
/*!

View File

@@ -382,7 +382,7 @@ QSoundEffectPrivate::QSoundEffectPrivate(QObject* parent):
m_muted(false),
m_playQueued(false),
m_stopping(false),
m_volume(100),
m_volume(1.0),
m_loopCount(1),
m_runningCount(0),
m_reloadCategory(false),
@@ -517,12 +517,12 @@ void QSoundEffectPrivate::setLoopCount(int loopCount)
m_loopCount = loopCount;
}
int QSoundEffectPrivate::volume() const
qreal QSoundEffectPrivate::volume() const
{
return m_volume;
}
void QSoundEffectPrivate::setVolume(int volume)
void QSoundEffectPrivate::setVolume(qreal volume)
{
m_volume = volume;
emit volumeChanged();
@@ -537,7 +537,7 @@ void QSoundEffectPrivate::updateVolume()
pa_cvolume volume;
volume.channels = m_pulseSpec.channels;
if (pulseDaemon()->context())
pa_operation_unref(pa_context_set_sink_input_volume(pulseDaemon()->context(), m_sinkInputId, pulseDaemon()->calcVolume(&volume, m_volume), setvolume_callback, m_ref->getRef()));
pa_operation_unref(pa_context_set_sink_input_volume(pulseDaemon()->context(), m_sinkInputId, pulseDaemon()->calcVolume(&volume, qRound(m_volume * 100)), setvolume_callback, m_ref->getRef()));
Q_ASSERT(pa_cvolume_valid(&volume));
#ifdef QT_PA_DEBUG
qDebug() << this << "updateVolume =" << pa_cvolume_max(&volume);

View File

@@ -80,8 +80,8 @@ public:
int loopCount() const;
int loopsRemaining() const;
void setLoopCount(int loopCount);
int volume() const;
void setVolume(int volume);
qreal volume() const;
void setVolume(qreal volume);
bool isMuted() const;
void setMuted(bool muted);
bool isLoaded() const;
@@ -153,7 +153,7 @@ private:
bool m_muted;
bool m_playQueued;
bool m_stopping;
int m_volume;
qreal m_volume;
int m_loopCount;
int m_runningCount;
QUrl m_source;

View File

@@ -175,20 +175,20 @@ void QSoundEffectPrivate::setLoopCount(int loopCount)
d->m_runningCount = loopCount;
}
int QSoundEffectPrivate::volume() const
qreal QSoundEffectPrivate::volume() const
{
if (d->m_audioOutput && !d->m_muted)
return d->m_audioOutput->volume()*100.0f;
return d->m_audioOutput->volume();
return d->m_volume;
}
void QSoundEffectPrivate::setVolume(int volume)
void QSoundEffectPrivate::setVolume(qreal volume)
{
d->m_volume = volume;
if (d->m_audioOutput && !d->m_muted)
d->m_audioOutput->setVolume(volume/100.0f);
d->m_audioOutput->setVolume(volume);
emit volumeChanged();
}
@@ -203,7 +203,7 @@ void QSoundEffectPrivate::setMuted(bool muted)
if (muted && d->m_audioOutput)
d->m_audioOutput->setVolume(0);
else if (!muted && d->m_audioOutput && d->m_muted)
d->m_audioOutput->setVolume(d->m_volume/100.0f);
d->m_audioOutput->setVolume(d->m_volume);
d->m_muted = muted;
emit mutedChanged();
@@ -314,7 +314,7 @@ PrivateSoundSource::PrivateSoundSource(QSoundEffectPrivate* s):
m_audioOutput(0),
m_sample(0),
m_muted(false),
m_volume(100),
m_volume(1.0),
m_sampleReady(false),
m_offset(0)
{
@@ -337,7 +337,7 @@ void PrivateSoundSource::sampleReady()
m_audioOutput = new QAudioOutput(m_sample->format());
connect(m_audioOutput,SIGNAL(stateChanged(QAudio::State)), this, SLOT(stateChanged(QAudio::State)));
if (!m_muted)
m_audioOutput->setVolume(m_volume/100.0f);
m_audioOutput->setVolume(m_volume);
else
m_audioOutput->setVolume(0);
}

View File

@@ -88,7 +88,7 @@ private:
QAudioOutput *m_audioOutput;
QSample *m_sample;
bool m_muted;
int m_volume;
qreal m_volume;
bool m_sampleReady;
qint64 m_offset;
QString m_category;
@@ -113,8 +113,8 @@ public:
int loopCount() const;
int loopsRemaining() const;
void setLoopCount(int loopCount);
int volume() const;
void setVolume(int volume);
qreal volume() const;
void setVolume(qreal volume);
bool isMuted() const;
void setMuted(bool muted);
bool isLoaded() const;

View File

@@ -864,6 +864,11 @@ void QMediaPlayer::setPlaybackRate(qreal rate)
Setting the media to a null QMediaContent will cause the player to discard all
information relating to the current media source and to cease all I/O operations related
to that media.
\note This function returns immediately after recording the specified source of the media.
It does not wait for the media to finish loading and does not check for errors. Listen for
the mediaStatusChanged() and error() signals to be notified when the media is loaded and
when an error occurs during loading.
*/
void QMediaPlayer::setMedia(const QMediaContent &media, QIODevice *stream)

View File

@@ -13,7 +13,8 @@ android {
}
qnx {
SUBDIRS += qnx audiocapture
config_mmrenderer: SUBDIRS += qnx
SUBDIRS += audiocapture
}
qnx:!blackberry {

View File

@@ -57,7 +57,7 @@ QVariant MmRendererMetaDataReaderControl::metaData(const QString &key) const
{
if (key == QMediaMetaData::Title)
return m_metaData.title();
else if (key == QMediaMetaData::Author)
else if (key == QMediaMetaData::AlbumArtist)
return m_metaData.artist();
else if (key == QMediaMetaData::Comment)
return m_metaData.comment();

View File

@@ -60,6 +60,8 @@ void MFAudioEndpointControl::clear()
foreach (LPWSTR wstrID, m_devices)
CoTaskMemFree(wstrID);
m_devices.clear();
if (m_currentActivate)
m_currentActivate->Release();
m_currentActivate = NULL;
@@ -130,6 +132,11 @@ IMFActivate* MFAudioEndpointControl::createActivate()
clear();
updateEndpoints();
// Check if an endpoint is available ("Default" is always inserted)
if (m_devices.count() <= 1)
return NULL;
setActiveOutput(m_defaultEndpoint);
return m_currentActivate;