diff options
author | austriancoder <austriancoder> | 2005-08-15 17:18:40 +0000 |
---|---|---|
committer | austriancoder <austriancoder> | 2005-08-15 17:18:40 +0000 |
commit | 8955b4dfa419698ecb853bb8f1cdc1fe96d206d6 (patch) | |
tree | 2ec35c50a4c8feb54f6c6fe48710d6a48bfc2ea6 /dxr3syncbuffer.h | |
parent | e4c44acfc5421d0794dcbc777202378f35a187e8 (diff) | |
download | vdr-plugin-dxr3-8955b4dfa419698ecb853bb8f1cdc1fe96d206d6.tar.gz vdr-plugin-dxr3-8955b4dfa419698ecb853bb8f1cdc1fe96d206d6.tar.bz2 |
HEAD should have files of 0.2.3 release
Diffstat (limited to 'dxr3syncbuffer.h')
-rw-r--r-- | dxr3syncbuffer.h | 145 |
1 files changed, 0 insertions, 145 deletions
diff --git a/dxr3syncbuffer.h b/dxr3syncbuffer.h deleted file mode 100644 index fe680d4..0000000 --- a/dxr3syncbuffer.h +++ /dev/null @@ -1,145 +0,0 @@ -/* - * dxr3syncbuffer.h - * - * Copyright (C) 2002-2004 Kai Möller - * - * This program 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.1 - * of the License, or (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -#ifndef _DXR3SYNCBUFFER_H_ -#define _DXR3SYNCBUFFER_H_ - -#include <stdint.h> - -#include "dxr3vdrincludes.h" -#include "dxr3interface.h" -#include "dxr3generaldefines.h" -#include "dxr3nextpts.h" -#include "dxr3log.h" - -// ================================== -const uint32_t UNKNOWN_CHANNEL_COUNT = 0xFFFFFFFF; -const uint32_t UNKNOWN_DATA_RATE = 0xFFFFFFFF; -const uint32_t UNKNOWN_ASPECT_RATIO = 0xFFFFFFFF; - -// ================================== -class cFixedLengthFrame -{ -public: - cFixedLengthFrame(); - ~cFixedLengthFrame(); - - void Init(uint32_t lenght); - - void CopyFrame(const uint8_t* pStart, int length, uint32_t pts, eFrameType type); - uint8_t* GetData(void); - int GetCount(void); - uint32_t GetPts(void); - void SetPts(uint32_t pts); - void SetChannelCount(uint32_t channelCount) {if (channelCount != UNKNOWN_CHANNEL_COUNT) m_staticAudioChannelCount = m_audioChannelCount = channelCount; else m_audioChannelCount = m_staticAudioChannelCount; }; - void SetDataRate(uint32_t dataRate) {if (m_audioDataRate != UNKNOWN_DATA_RATE) m_staticAudioDataRate = m_audioDataRate = dataRate; else m_audioDataRate = m_staticAudioDataRate;}; - void SetAspectRatio(uint32_t aspectRatio) {m_videoAspectRatio = aspectRatio;}; - uint32_t GetChannelCount(void) {return ((m_audioChannelCount == m_staticAudioChannelCount || !m_staticAudioChannelCount)? m_audioChannelCount : m_staticAudioChannelCount) ;}; - uint32_t GetDataRate(void) {return ((m_audioDataRate == m_staticAudioDataRate || !m_staticAudioDataRate) ? m_audioDataRate : m_staticAudioDataRate);}; - uint32_t GetAspectRatio(void) {return m_videoAspectRatio;}; - eFrameType GetFrameType(void) {return m_type;} - - static void Clear(void) {m_staticAudioDataRate = 0; m_staticAudioChannelCount = 0;}; - -protected: - uint8_t* m_pData; - int m_count; - int m_length; - uint32_t m_pts; - eFrameType m_type; - - uint32_t m_audioChannelCount; - uint32_t m_audioDataRate; - uint32_t m_videoAspectRatio; - - static uint32_t m_staticAudioChannelCount; - static uint32_t m_staticAudioDataRate; - -private: -// cFixedLengthFrame(); // you are not allowed to use this constructor - cFixedLengthFrame(cFixedLengthFrame&); // no copy constructor - -}; - -// ================================== -class cDxr3SyncBuffer : public cRingBuffer -{ -public: - enum eSyncBufferException - { - SYNC_BUFFER_OVERRUN - }; -public: - cDxr3SyncBuffer(int frameCount, int frameLength, cDxr3Interface& dxr3Device); - ~cDxr3SyncBuffer(); - - virtual int Available(void); - cFixedLengthFrame* Push(const uint8_t* pStart, int length, uint32_t pts, eFrameType type = ftUnknown) throw (eSyncBufferException); - void Pop(void); - cFixedLengthFrame* Get(void); - void Clear(void); - void Stop(void) { m_bStopped = true;}; - void Start(void); - void WaitForSysClock(uint32_t pts, uint32_t delta); - void WaitForNextPut(void); - void WakeUp(void); - void WaitForReceiverStopped(void); - void SetDemuxMode(eDxr3DemuxMode demuxMode) {m_demuxMode = demuxMode;}; - eDxr3DemuxMode GetDemuxMode(void) {return m_demuxMode;}; - bool Poll(int TimeoutMs); - bool IsPolled(void) { return m_bPollSync;}; - uint32_t GetFillLevel(void) { return Available() * 100 / Size();}; - -protected: - void ReceiverStopped(void); - - cFixedLengthFrame* m_pBuffer; - int m_count; - int m_nextFree; - int m_next; - bool m_bWaitPts; - bool m_bPutBlock; - bool m_bGetBlock; - bool m_bStartReceiver; - bool m_bStopped; - uint32_t m_waitPts; - uint32_t m_waitDelta; - uint32_t m_lastPts; - eDxr3DemuxMode m_demuxMode; - - cCondVar receiverStopped; - cMutex receiverStoppedMutex; - cDxr3Interface& m_dxr3Device; - bool m_bPollSync; - -private: - cDxr3SyncBuffer(); // you are not allowed to use this constructor - cDxr3SyncBuffer(cDxr3SyncBuffer&); // no constructor -}; - -#endif /*_DXR3SYNCBUFFER_H_*/ - -// Local variables: -// mode: c++ -// c-file-style: "stroustrup" -// c-file-offsets: ((inline-open . 0)) -// indent-tabs-mode: t -// End: |