11 #include "DVDMessage.h" 12 #include "threads/CriticalSection.h" 13 #include "threads/Event.h" 32 std::shared_ptr<CDVDMsg> message;
36 enum MsgQueueReturnCode
41 MSGQ_NOT_INITIALIZED = -2,
42 MSGQ_INVALID_MSG = -3,
43 MSGQ_OUT_OF_MEMORY = -4
46 #define MSGQ_IS_ERROR(c) (c < 0) 55 void Flush(CDVDMsg::Message message = CDVDMsg::DEMUXER_PACKET);
59 MsgQueueReturnCode Put(
const std::shared_ptr<CDVDMsg>& pMsg,
int priority = 0);
60 MsgQueueReturnCode PutBack(
const std::shared_ptr<CDVDMsg>& pMsg,
int priority = 0);
67 MsgQueueReturnCode Get(std::shared_ptr<CDVDMsg>& pMsg,
68 std::chrono::milliseconds timeout,
70 MsgQueueReturnCode Get(std::shared_ptr<CDVDMsg>& pMsg, std::chrono::milliseconds timeout)
73 return Get(pMsg, timeout, priority);
76 int GetDataSize()
const {
return m_iDataSize; }
77 int GetTimeSize()
const;
78 unsigned GetPacketCount(CDVDMsg::Message type);
79 bool ReceivedAbortRequest() {
return m_bAbortRequest; }
80 void WaitUntilEmpty();
83 bool IsFull()
const {
return GetLevel() == 100; }
86 void SetMaxDataSize(
int iMaxDataSize) { m_iMaxDataSize = iMaxDataSize; }
87 void SetMaxTimeSize(
double sec) { m_TimeSize = 1.0 / std::max(1.0, sec); }
88 int GetMaxDataSize()
const {
return m_iMaxDataSize; }
89 double GetMaxTimeSize()
const {
return m_TimeSize; }
90 bool IsInited()
const {
return m_bInitialized; }
91 bool IsDataBased()
const;
94 MsgQueueReturnCode Put(
const std::shared_ptr<CDVDMsg>& pMsg,
int priority,
bool front);
95 void UpdateTimeFront();
96 void UpdateTimeBack();
99 mutable CCriticalSection m_section;
101 std::atomic<bool> m_bAbortRequest =
false;
103 bool m_drain =
false;
113 std::list<DVDMessageListItem> m_messages;
114 std::list<DVDMessageListItem> m_prioMessages;
This is an Event class built from a ConditionVariable.
Definition: Event.h:35
Definition: DVDMessageQueue.h:48
Definition: DVDMessageQueue.h:20