diff options
| author | Thomas Reufer <thomas@reufer.ch> | 2014-10-31 12:45:07 +0100 |
|---|---|---|
| committer | Thomas Reufer <thomas@reufer.ch> | 2014-10-31 12:54:50 +0100 |
| commit | f960f87b94d8ed3e6c346b9033990502e36c10e5 (patch) | |
| tree | b2b7d7b2ba6f70902e6ccb131a2203f959203f80 | |
| parent | 438b5b0310c9b2e98aaeea9b92d2d3f2e0cd9158 (diff) | |
| download | vdr-plugin-rpihddevice-f960f87b94d8ed3e6c346b9033990502e36c10e5.tar.gz vdr-plugin-rpihddevice-f960f87b94d8ed3e6c346b9033990502e36c10e5.tar.bz2 | |
moved audio parser mutex back to Parse() method to improve performance
| -rw-r--r-- | audio.c | 23 | ||||
| -rw-r--r-- | omxdevice.c | 12 |
2 files changed, 9 insertions, 26 deletions
@@ -89,45 +89,29 @@ public: cAudioCodec::eCodec GetCodec(void) { - m_mutex->Lock(); - if (!m_parsed) Parse(); - - m_mutex->Unlock(); return m_codec; } unsigned int GetChannels(void) { - m_mutex->Lock(); - if (!m_parsed) Parse(); - - m_mutex->Unlock(); return m_channels; } unsigned int GetSamplingRate(void) { - m_mutex->Lock(); - if (!m_parsed) Parse(); - - m_mutex->Unlock(); return m_samplingRate; } unsigned int GetFrameSize(void) { - m_mutex->Lock(); - if (!m_parsed) Parse(); - - m_mutex->Unlock(); return m_packet.size; } @@ -150,12 +134,8 @@ public: bool Empty(void) { - m_mutex->Lock(); - if (!m_parsed) Parse(); - - m_mutex->Unlock(); return m_packet.size == 0; } @@ -269,6 +249,8 @@ private: void Parse() { + m_mutex->Lock(); + cAudioCodec::eCodec codec = cAudioCodec::eInvalid; unsigned int channels = 0; unsigned int offset = 0; @@ -352,6 +334,7 @@ private: m_packet.size = 0; m_parsed = true; + m_mutex->Unlock(); } struct Pts diff --git a/omxdevice.c b/omxdevice.c index 8a3edb0..504ed1c 100644 --- a/omxdevice.c +++ b/omxdevice.c @@ -154,19 +154,19 @@ bool cOmxDevice::SetPlayMode(ePlayMode PlayMode) switch (PlayMode) { case pmNone: - m_omx->StopClock(); - m_omx->SetClockScale(0.0f); - - if (m_hasVideo) - m_omx->StopVideo(); - if (m_hasAudio) { m_audio->Reset(); m_omx->FlushAudio(); } + if (m_hasVideo) + m_omx->StopVideo(); + + m_omx->StopClock(); + m_omx->SetClockScale(0.0f); m_omx->SetCurrentReferenceTime(0); m_omx->SetClockReference(cOmx::eClockRefVideo); + m_videoCodec = cVideoCodec::eInvalid; m_hasAudio = false; m_hasVideo = false; |
