11 #include "DVDMessageQueue.h" 12 #include "IVideoPlayer.h" 13 #include "threads/Thread.h" 14 #include "utils/Stopwatch.h" 23 class CPVRRadioRDSInfoTag;
28 #define UECP_DATA_START 0xFE 29 #define UECP_DATA_STOP 0xFF 30 #define UECP_SIZE_MAX 263 43 void CloseStream(
bool bWaitForBuffers)
override;
47 void WaitForBuffers() { m_messageQueue.WaitUntilEmpty(); }
48 bool AcceptsData()
const override {
return !m_messageQueue.IsFull(); }
49 void SendMessage(std::shared_ptr<CDVDMsg> pMsg,
int priority = 0)
override 51 if (m_messageQueue.IsInited())
52 m_messageQueue.Put(pMsg, priority);
54 void FlushMessages()
override { m_messageQueue.Flush(); }
55 bool IsInited()
const override {
return true; }
56 bool IsStalled()
const override {
return true; }
59 void OnExit()
override;
60 void Process()
override;
64 void ProcessUECP(
const unsigned char *Data,
unsigned int Length);
66 inline unsigned int DecodePI(
const uint8_t* msgElement);
67 inline unsigned int DecodePS(uint8_t *msgElement);
68 inline unsigned int DecodeDI(
const uint8_t* msgElement);
69 inline unsigned int DecodeTA_TP(
const uint8_t* msgElement);
70 inline unsigned int DecodeMS(
const uint8_t* msgElement);
71 inline unsigned int DecodePTY(
const uint8_t* msgElement);
72 inline unsigned int DecodePTYN(uint8_t *msgElement);
73 inline unsigned int DecodeRT(uint8_t *msgElement,
unsigned int len);
74 inline unsigned int DecodeRTC(uint8_t *msgElement);
75 inline unsigned int DecodeODA(uint8_t *msgElement,
unsigned int len);
76 inline unsigned int DecodeRTPlus(uint8_t *msgElement,
unsigned int len);
77 inline unsigned int DecodeTMC(uint8_t *msgElement,
unsigned int len);
78 inline unsigned int DecodeEPPTransmitterInfo(
const uint8_t* msgElement);
79 inline unsigned int DecodeSlowLabelingCodes(
const uint8_t* msgElement);
80 inline unsigned int DecodeDABDynLabelCmd(
const uint8_t* msgElement,
unsigned int len);
81 inline unsigned int DecodeDABDynLabelMsg(
const uint8_t* msgElement,
unsigned int len);
82 inline unsigned int DecodeAF(uint8_t *msgElement,
unsigned int len);
83 inline unsigned int DecodeEonAF(uint8_t *msgElement,
unsigned int len);
84 inline unsigned int DecodeTDC(uint8_t *msgElement,
unsigned int len);
86 void SendTMCSignal(
unsigned int flags, uint8_t *data);
87 void SetRadioStyle(
const std::string& genre);
89 std::shared_ptr<PVR::CPVRRadioRDSInfoTag> m_currentInfoTag;
90 std::shared_ptr<PVR::CPVRChannel> m_currentChannel;
91 bool m_currentFileUpdate;
93 CCriticalSection m_critSection;
96 uint8_t m_UECPData[UECP_SIZE_MAX+1];
97 unsigned int m_UECPDataIndex;
99 bool m_UECPDatabStuff;
100 bool m_UECPDataDeadBreak;
103 bool m_RDS_SlowLabelingCodesPresent;
105 uint16_t m_PI_Current;
106 unsigned int m_PI_CountryCode;
107 unsigned int m_PI_ProgramType;
108 unsigned int m_PI_ProgramReferenceNumber;
110 unsigned int m_EPP_TM_INFO_ExtendedCountryCode;
113 bool m_DI_ArtificialHead;
114 bool m_DI_Compressed;
115 bool m_DI_DynamicPTY;
117 bool m_TA_TP_TrafficAdvisory;
118 float m_TA_TP_TrafficVolume;
120 bool m_MS_SpeechActive;
128 uint8_t m_RTPlus_WorkText[RT_MEL+1];
129 bool m_RTPlus_TToggle;
132 bool m_RTPlus_GenrePresent;
133 char m_RTPlus_Temptext[RT_MEL];
135 char m_RTPlus_Title[RT_MEL];
136 char m_RTPlus_Artist[RT_MEL];
137 int m_RTPlus_iToggle;
138 unsigned int m_RTPlus_ItemToggle;
139 time_t m_RTPlus_Starttime;
143 uint8_t m_TMC_LastData[5];
Definition: Stopwatch.h:14
Definition: DVDStreamInfo.h:23
Definition: IVideoPlayer.h:36
Definition: VideoPlayerRadioRDS.h:36
Definition: DVDMessageQueue.h:48
Definition: ContextMenuManager.h:24
Definition: ProcessInfo.h:26
DateTime class, which uses FileTime as it's base.
Definition: XBDateTime.h:63