summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Reufer <thomas@reufer.ch>2014-10-31 12:45:07 +0100
committerThomas Reufer <thomas@reufer.ch>2014-10-31 12:54:50 +0100
commitf960f87b94d8ed3e6c346b9033990502e36c10e5 (patch)
treeb2b7d7b2ba6f70902e6ccb131a2203f959203f80
parent438b5b0310c9b2e98aaeea9b92d2d3f2e0cd9158 (diff)
downloadvdr-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.c23
-rw-r--r--omxdevice.c12
2 files changed, 9 insertions, 26 deletions
diff --git a/audio.c b/audio.c
index 7ec524e..8b746c2 100644
--- a/audio.c
+++ b/audio.c
@@ -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;