summaryrefslogtreecommitdiff
path: root/src/audio/AudioMsg.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/audio/AudioMsg.cpp')
-rw-r--r--src/audio/AudioMsg.cpp165
1 files changed, 165 insertions, 0 deletions
diff --git a/src/audio/AudioMsg.cpp b/src/audio/AudioMsg.cpp
new file mode 100644
index 0000000..2e1d6df
--- /dev/null
+++ b/src/audio/AudioMsg.cpp
@@ -0,0 +1,165 @@
+//
+// libavg - Media Playback Engine.
+// Copyright (C) 2003-2014 Ulrich von Zadow
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// Current versions can be found at www.libavg.de
+//
+
+#include "AudioMsg.h"
+
+#include "../base/ObjectCounter.h"
+#include "../base/Exception.h"
+
+#include <iostream>
+
+using namespace std;
+
+namespace avg {
+
+AudioMsg::AudioMsg()
+ : m_MsgType(NONE)
+{
+ ObjectCounter::get()->incRef(&typeid(*this));
+}
+
+AudioMsg::~AudioMsg()
+{
+ ObjectCounter::get()->decRef(&typeid(*this));
+}
+
+void AudioMsg::setAudio(AudioBufferPtr pAudioBuffer, float audioTime)
+{
+ AVG_ASSERT(pAudioBuffer);
+ setType(AUDIO);
+ m_pAudioBuffer = pAudioBuffer;
+ m_AudioTime = audioTime;
+}
+
+void AudioMsg::setAudioTime(float audioTime)
+{
+ setType(AUDIO_TIME);
+ m_AudioTime = audioTime;
+}
+
+void AudioMsg::setEOF()
+{
+ setType(END_OF_FILE);
+}
+
+void AudioMsg::setError(const Exception& ex)
+{
+ setType(ERROR);
+ m_pEx = new Exception(ex);
+}
+
+void AudioMsg::setSeekDone(int seqNum, float seekTime)
+{
+ setType(SEEK_DONE);
+ AVG_ASSERT(seqNum != -1);
+ m_SeekSeqNum = seqNum;
+ m_SeekTime = seekTime;
+}
+
+void AudioMsg::setClosed()
+{
+ setType(CLOSED);
+}
+
+AudioMsg::MsgType AudioMsg::getType()
+{
+ return m_MsgType;
+}
+
+AudioBufferPtr AudioMsg::getAudioBuffer() const
+{
+ AVG_ASSERT(m_MsgType == AUDIO);
+ return m_pAudioBuffer;
+}
+
+float AudioMsg::getAudioTime() const
+{
+ AVG_ASSERT(m_MsgType == AUDIO_TIME || m_MsgType == AUDIO);
+ return m_AudioTime;
+}
+
+const Exception& AudioMsg::getException() const
+{
+ AVG_ASSERT(m_MsgType == ERROR);
+ return *m_pEx;
+}
+
+int AudioMsg::getSeekSeqNum()
+{
+ AVG_ASSERT(m_MsgType == SEEK_DONE);
+ return m_SeekSeqNum;
+}
+
+float AudioMsg::getSeekTime()
+{
+ AVG_ASSERT(m_MsgType == SEEK_DONE);
+ return m_SeekTime;
+}
+
+void AudioMsg::dump()
+{
+ switch (m_MsgType) {
+ case NONE:
+ cerr << "NONE" << endl;
+ break;
+ case AUDIO:
+ cerr << "AUDIO" << endl;
+ break;
+ case AUDIO_TIME:
+ cerr << "AUDIO_TIME" << endl;
+ break;
+ case END_OF_FILE:
+ cerr << "END_OF_FILE" << endl;
+ break;
+ case ERROR:
+ cerr << "ERROR" << endl;
+ break;
+ case FRAME:
+ cerr << "FRAME" << endl;
+ break;
+ case VDPAU_FRAME:
+ cerr << "VDPAU_FRAME" << endl;
+ break;
+ case SEEK_DONE:
+ cerr << "SEEK_DONE" << endl;
+ break;
+ case PACKET:
+ cerr << "PACKET" << endl;
+ break;
+ case CLOSED:
+ cerr << "CLOSED" << endl;
+ break;
+ default:
+ AVG_ASSERT(false);
+ break;
+ }
+}
+
+void AudioMsg::setType(MsgType msgType)
+{
+ AVG_ASSERT(m_MsgType == NONE);
+ m_MsgType = msgType;
+}
+
+
+
+}
+