summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Gmeiner <christian.gmeiner@gmail.com>2009-12-09 20:16:17 +0100
committerChristian Gmeiner <christian.gmeiner@gmail.com>2009-12-09 20:16:17 +0100
commit73e56c71ee9e8a996a62a3f465dcbc161abb5b4c (patch)
tree66d8bd57a330b32f9e58ad267f257c663956b45b
parent42bf76053d336d4db646bde9f2a6a8cd6b79454e (diff)
downloadvdr-plugin-dxr3-73e56c71ee9e8a996a62a3f465dcbc161abb5b4c.tar.gz
vdr-plugin-dxr3-73e56c71ee9e8a996a62a3f465dcbc161abb5b4c.tar.bz2
add a way to enable/disable audio via iAudio
As all audio realated stuff uses iAudio I added a way to control if write gets called or not. This depends if it was enabled or not. Also I did changes to the demuxer to call the new method instead of the old stub. I am not happy to have that chain: m_pAudioThread->audio()->setEnabled(false) Need some time to redesign this part.
-rw-r--r--dxr3audio-alsa.c2
-rw-r--r--dxr3audio-oss.c2
-rw-r--r--dxr3audio.c2
-rw-r--r--dxr3audio.h10
-rw-r--r--dxr3demuxdevice.c26
-rw-r--r--dxr3interface.c11
-rw-r--r--dxr3interface.h6
7 files changed, 20 insertions, 39 deletions
diff --git a/dxr3audio-alsa.c b/dxr3audio-alsa.c
index 6129f58..70ed3c9 100644
--- a/dxr3audio-alsa.c
+++ b/dxr3audio-alsa.c
@@ -189,7 +189,7 @@ void cAudioAlsa::setup(const SampleContext& ctx)
void cAudioAlsa::write(uchar* data, size_t size)
{
- if (!open)
+ if (!open || !enabled)
return;
snd_pcm_uframes_t frames = size / bytesFrame;
diff --git a/dxr3audio-oss.c b/dxr3audio-oss.c
index 9f3409d..4e70df4 100644
--- a/dxr3audio-oss.c
+++ b/dxr3audio-oss.c
@@ -73,7 +73,7 @@ void cAudioOss::setup(const SampleContext& ctx)
void cAudioOss::write(uchar* data, size_t size)
{
- if (!open)
+ if (!open || !enabled)
return;
size_t ret = WriteAllOrNothing(fd, data, size, 1000, 10);
diff --git a/dxr3audio.c b/dxr3audio.c
index 793efad..fa61708 100644
--- a/dxr3audio.c
+++ b/dxr3audio.c
@@ -29,7 +29,7 @@ const static int AUDIO_STEREO = 0;
const static int AUDIO_MONO_LEFT = 1;
const static int AUDIO_MONO_RIGHT = 2;
-iAudio::iAudio() : open(false), vol(0), audioChannel(0), digitalAudio(false), ac3dts(false)
+iAudio::iAudio() : open(false), enabled(false), vol(0), audioChannel(0), digitalAudio(false)
{
memset(&curContext, 0, sizeof(SampleContext));
}
diff --git a/dxr3audio.h b/dxr3audio.h
index e508839..243460c 100644
--- a/dxr3audio.h
+++ b/dxr3audio.h
@@ -39,8 +39,9 @@ public:
virtual void setup(const SampleContext& ctx) = 0;
virtual void write(uchar* data, size_t size) = 0;
- void setVolume(int v) { vol = v; }
- void mute() { setVolume(0); }
+ void setEnabled(bool on) { dsyslog("audio enable %d", (int)on); enabled = on; }
+ void setVolume(int v) { vol = v; }
+ void mute() { setVolume(0); }
void changeVolume(short* pcmbuf, size_t size);
void setAudioChannel(int channel) { audioChannel = channel; }
@@ -49,16 +50,13 @@ public:
virtual void setDigitalAudio(bool on) = 0;
bool isDigitalAudio() { return digitalAudio; }
- bool isAc3Dts() { return ac3dts; }
-
-
protected:
bool open;
+ bool enabled;
int vol;
int audioChannel;
bool digitalAudio;
SampleContext curContext;
- bool ac3dts;
};
#endif /*_AUDIO_H_*/
diff --git a/dxr3demuxdevice.c b/dxr3demuxdevice.c
index cbba41d..a834e25 100644
--- a/dxr3demuxdevice.c
+++ b/dxr3demuxdevice.c
@@ -65,7 +65,7 @@ cDxr3DemuxDevice::~cDxr3DemuxDevice()
void cDxr3DemuxDevice::Stop()
{
m_dxr3Device->DisableVideo();
- m_dxr3Device->DisableAudio();
+ m_pAudioThread->audio()->setEnabled(false);
m_vBuf.Clear();
m_aBuf.Clear();
m_vBuf.WakeUp();
@@ -83,7 +83,7 @@ void cDxr3DemuxDevice::Stop()
void cDxr3DemuxDevice::Resync()
{
m_dxr3Device->DisableVideo();
- m_dxr3Device->DisableAudio();
+ m_pAudioThread->audio()->setEnabled(false);
m_vBuf.Clear();
m_aBuf.Clear();
m_vBuf.WakeUp();
@@ -99,7 +99,7 @@ void cDxr3DemuxDevice::Resync()
void cDxr3DemuxDevice::Clear()
{
m_dxr3Device->DisableVideo();
- m_dxr3Device->DisableAudio();
+ m_pAudioThread->audio()->setEnabled(false);
m_vBuf.Clear();
m_aBuf.Clear();
m_vBuf.WakeUp();
@@ -122,7 +122,7 @@ void cDxr3DemuxDevice::SetReplayMode()
m_dxr3Device->SetPlayMode();
m_dxr3Device->SetSysClock(m_stopScr);
m_dxr3Device->EnableVideo();
- m_dxr3Device->EnableAudio();
+ m_pAudioThread->audio()->setEnabled(true);
m_vBuf.Start();
m_aBuf.Start();
m_vBuf.WakeUp();
@@ -143,7 +143,7 @@ void cDxr3DemuxDevice::SetTrickMode(eDxr3TrickState trickState, int Speed)
{
m_demuxMode = DXR3_DEMUX_TRICK_MODE;
m_trickState = trickState;
- m_dxr3Device->DisableAudio();
+ m_pAudioThread->audio()->setEnabled(false);
if (m_demuxMode == DXR3_DEMUX_TRICK_MODE &&
m_trickState == DXR3_FREEZE)
@@ -292,7 +292,7 @@ int cDxr3DemuxDevice::DemuxPes(const uint8_t* buf, int length, bool bAc3Dts)
m_dxr3Device->SetSysClock(pcr);
m_dxr3Device->SetPlayMode();
m_dxr3Device->EnableVideo();
- m_dxr3Device->EnableAudio();
+ m_pAudioThread->audio()->setEnabled(true);
m_vBuf.Start();
m_aBuf.Start();
}
@@ -325,7 +325,7 @@ int cDxr3DemuxDevice::DemuxPes(const uint8_t* buf, int length, bool bAc3Dts)
m_dxr3Device->SetSysClock(pcr);
m_dxr3Device->SetPlayMode();
m_dxr3Device->EnableVideo();
- m_dxr3Device->EnableAudio();
+ m_pAudioThread->audio()->setEnabled(true);
m_vBuf.Start();
m_aBuf.Start();
}
@@ -342,7 +342,7 @@ int cDxr3DemuxDevice::DemuxPes(const uint8_t* buf, int length, bool bAc3Dts)
m_dxr3Device->SetSysClock(pcr);
m_dxr3Device->SetPlayMode();
m_dxr3Device->EnableVideo();
- m_dxr3Device->EnableAudio();
+ m_pAudioThread->audio()->setEnabled(true);
m_vBuf.Start();
m_aBuf.Start();
}
@@ -372,7 +372,7 @@ int cDxr3DemuxDevice::DemuxPes(const uint8_t* buf, int length, bool bAc3Dts)
m_dxr3Device->SetSysClock(pcr);
m_dxr3Device->SetPlayMode();
m_dxr3Device->EnableVideo();
- m_dxr3Device->EnableAudio();
+ m_pAudioThread->audio()->setEnabled(true);
m_vBuf.Start();
m_aBuf.Start();
}
@@ -406,7 +406,7 @@ int cDxr3DemuxDevice::DemuxPes(const uint8_t* buf, int length, bool bAc3Dts)
m_dxr3Device->SetSysClock(pcr);
m_dxr3Device->SetPlayMode();
m_dxr3Device->EnableVideo();
- m_dxr3Device->EnableAudio();
+ m_pAudioThread->audio()->setEnabled(true);
m_vBuf.Start();
m_aBuf.Start();
}
@@ -424,7 +424,7 @@ int cDxr3DemuxDevice::DemuxPes(const uint8_t* buf, int length, bool bAc3Dts)
m_dxr3Device->SetSysClock(pcr);
m_dxr3Device->SetPlayMode();
m_dxr3Device->EnableVideo();
- m_dxr3Device->EnableAudio();
+ m_pAudioThread->audio()->setEnabled(true);
m_vBuf.Start();
m_aBuf.Start();
}
@@ -453,7 +453,7 @@ int cDxr3DemuxDevice::DemuxPes(const uint8_t* buf, int length, bool bAc3Dts)
m_dxr3Device->SetSysClock(pcr);
m_dxr3Device->SetPlayMode();
m_dxr3Device->EnableVideo();
- m_dxr3Device->EnableAudio();
+ m_pAudioThread->audio()->setEnabled(true);
m_vBuf.Start();
m_aBuf.Start();
}
@@ -488,7 +488,7 @@ int cDxr3DemuxDevice::DemuxAudioPes(const uint8_t* buf, int length)
m_synchState = DXR3_DEMUX_AUDIO_SYNCHED;
m_dxr3Device->SetPlayMode();
m_dxr3Device->EnableVideo();
- m_dxr3Device->EnableAudio();
+ m_pAudioThread->audio()->setEnabled(true);
m_vBuf.Start();
m_aBuf.Start();
}
diff --git a/dxr3interface.c b/dxr3interface.c
index 99d8192..445195d 100644
--- a/dxr3interface.c
+++ b/dxr3interface.c
@@ -119,16 +119,6 @@ int64_t cDxr3Interface::GetPts()
return m_lastSeenPts << 1;
}
-// state changes
-// ==================================
-//! disable audio output of dxr3
-void cDxr3Interface::DisableAudio()
-{
- Lock();
- m_AudioActive = false;
- Unlock();
-}
-
// set/get functions
// ==================================
//! get aspect ratio
@@ -372,7 +362,6 @@ void cDxr3Interface::ClaimDevices()
}
// set default values
- m_AudioActive = false;
m_VideoActive = false;
m_horizontal = 720;
m_vertical = 576;
diff --git a/dxr3interface.h b/dxr3interface.h
index 5650784..8112470 100644
--- a/dxr3interface.h
+++ b/dxr3interface.h
@@ -87,11 +87,6 @@ public:
{
m_VideoActive = false;
}
- void EnableAudio()
- {
- m_AudioActive = true;
- }
- void DisableAudio();
// set/get functions
uint32_t GetAspectRatio() const;
@@ -144,7 +139,6 @@ private:
uint32_t m_aspectRatio; ///< current used aspect ratio
uint32_t m_horizontal; ///< horizontal size of current videostream
uint32_t m_vertical; ///< vertical size of current videostream
- bool m_AudioActive; ///< is audio active?
bool m_VideoActive; ///< is video active?
// bcs