summaryrefslogtreecommitdiff
path: root/dxr3syncbuffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'dxr3syncbuffer.h')
-rw-r--r--dxr3syncbuffer.h120
1 files changed, 87 insertions, 33 deletions
diff --git a/dxr3syncbuffer.h b/dxr3syncbuffer.h
index bfef1ec..b1d2912 100644
--- a/dxr3syncbuffer.h
+++ b/dxr3syncbuffer.h
@@ -36,28 +36,64 @@ const uint32_t UNKNOWN_DATA_RATE = 0xFFFFFFFF;
const uint32_t UNKNOWN_ASPECT_RATIO = 0xFFFFFFFF;
// ==================================
-class cFixedLengthFrame
-{
-public:
+class cFixedLengthFrame
+{
+public:
cFixedLengthFrame();
~cFixedLengthFrame();
-
+
void Init(uint32_t lenght);
- void CopyFrame(const uint8_t* pStart, int length, uint32_t pts, eFrameType type);
+ 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;}
+ 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;};
+ static void Clear(void)
+ {
+ m_staticAudioDataRate = 0;
+ m_staticAudioChannelCount = 0;
+ };
protected:
uint8_t* m_pData;
@@ -65,52 +101,70 @@ protected:
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(); // you are not allowed to use this constructor
cFixedLengthFrame(cFixedLengthFrame&); // no copy constructor
-
+
};
// ==================================
-class cDxr3SyncBuffer : public cRingBuffer
+class cDxr3SyncBuffer : public cRingBuffer
{
public:
- enum eSyncBufferException
- {
- SYNC_BUFFER_OVERRUN
- };
+ enum eSyncBufferException
+ {
+ SYNC_BUFFER_OVERRUN
+ };
public:
- cDxr3SyncBuffer(int frameCount, int frameLength, cDxr3Interface& dxr3Device);
- ~cDxr3SyncBuffer();
+ 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);
+ cFixedLengthFrame* Push(const uint8_t* pStart, int length, uint32_t pts,
+ eFrameType type = ftUnknown)
+ throw (eSyncBufferException);
void Pop(void);
- cFixedLengthFrame* Get(void);
+ cFixedLengthFrame* Get(void);
void Clear(void);
- void Stop(void) { m_bStopped = true;};
+ 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;};
+ 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();};
+ 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;
@@ -129,7 +183,7 @@ protected:
cMutex receiverStoppedMutex;
cDxr3Interface& m_dxr3Device;
bool m_bPollSync;
-
+
private:
cDxr3SyncBuffer(); // you are not allowed to use this constructor
cDxr3SyncBuffer(cDxr3SyncBuffer&); // no constructor