diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2017-04-18 19:56:55 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2017-04-18 19:56:55 +0000 |
| commit | e7b06c4b734a9978243751e3f44afa8b2faa21ff (patch) | |
| tree | a8407988e15eead05101bd0112f62bb4073f89cc /src/plugins/Output/directsound | |
| parent | fcd41290acbb1582f4e463ecaca868e52ec00bfb (diff) | |
| download | qmmp-e7b06c4b734a9978243751e3f44afa8b2faa21ff.tar.gz qmmp-e7b06c4b734a9978243751e3f44afa8b2faa21ff.tar.bz2 qmmp-e7b06c4b734a9978243751e3f44afa8b2faa21ff.zip | |
implemented latency() function for DirectSound and WavOut output plugins
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@7123 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Output/directsound')
4 files changed, 13 insertions, 5 deletions
diff --git a/src/plugins/Output/directsound/outputdirectsound.cpp b/src/plugins/Output/directsound/outputdirectsound.cpp index bd9281ca3..2d84ad5ba 100644 --- a/src/plugins/Output/directsound/outputdirectsound.cpp +++ b/src/plugins/Output/directsound/outputdirectsound.cpp @@ -1,5 +1,5 @@ /***************************************************************************
- * Copyright (C) 2014-2016 by Ilya Kotov *
+ * Copyright (C) 2014-2017 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -50,6 +50,8 @@ OutputDirectSound::OutputDirectSound() : Output() m_primaryBuffer = 0;
m_dsBuffer = 0;
m_dsBufferAt = 0;
+ m_latency = 0;
+ m_bytesPerSecond = 0;
instance = this;
}
@@ -61,8 +63,10 @@ OutputDirectSound::~OutputDirectSound() bool OutputDirectSound::initialize(quint32 freq, ChannelMap map, Qmmp::AudioFormat format)
{
+ m_latency = 0;
DSBUFFERDESC bufferDesc;
+
HRESULT result = DirectSoundCreate8(0, &m_ds, 0);
if(result != DS_OK)
{
@@ -178,13 +182,14 @@ bool OutputDirectSound::initialize(quint32 freq, ChannelMap map, Qmmp::AudioForm configure(freq, out_map, format);
if(volumeControl)
volumeControl->restore();
+ m_bytesPerSecond = (sampleRate() * sampleSize() * channels());
return true;
}
qint64 OutputDirectSound::latency()
{
- return 0;
+ return m_latency;
}
qint64 OutputDirectSound::writeAudio(unsigned char *data, qint64 len)
@@ -193,6 +198,7 @@ qint64 OutputDirectSound::writeAudio(unsigned char *data, qint64 len) DWORD size = 0, size2 = 0;
DWORD available = bytesToWrite(); //available bytes
+ m_latency = (DS_BUFSIZE - available) * 1000 / m_bytesPerSecond;
if(available < 128)
{
usleep(5000);
diff --git a/src/plugins/Output/directsound/outputdirectsound.h b/src/plugins/Output/directsound/outputdirectsound.h index 46d2a0b21..295073a18 100644 --- a/src/plugins/Output/directsound/outputdirectsound.h +++ b/src/plugins/Output/directsound/outputdirectsound.h @@ -1,5 +1,5 @@ /***************************************************************************
- * Copyright (C) 2014-2016 by Ilya Kotov *
+ * Copyright (C) 2014-2017 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -74,6 +74,8 @@ private: } DSoundChannels;
static DSoundChannels m_dsound_pos[10];
+ qint64 m_latency;
+ qint32 m_bytesPerSecond;
};
/**
diff --git a/src/plugins/Output/directsound/outputdirectsoundfactory.cpp b/src/plugins/Output/directsound/outputdirectsoundfactory.cpp index d0287ad40..d62b45543 100644 --- a/src/plugins/Output/directsound/outputdirectsoundfactory.cpp +++ b/src/plugins/Output/directsound/outputdirectsoundfactory.cpp @@ -1,5 +1,5 @@ /***************************************************************************
- * Copyright (C) 2014-2016 by Ilya Kotov *
+ * Copyright (C) 2014-2017 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
diff --git a/src/plugins/Output/directsound/outputdirectsoundfactory.h b/src/plugins/Output/directsound/outputdirectsoundfactory.h index c2e23b697..f244789ec 100644 --- a/src/plugins/Output/directsound/outputdirectsoundfactory.h +++ b/src/plugins/Output/directsound/outputdirectsoundfactory.h @@ -1,5 +1,5 @@ /***************************************************************************
- * Copyright (C) 2014 by Ilya Kotov *
+ * Copyright (C) 2014-2017 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
|
