00001
00002
00003
00004
00005
00006
00007
00008
00013 #ifndef _BLT_PLAYER_H_
00014 #define _BLT_PLAYER_H_
00015
00020
00021
00022
00023 #include "Neptune.h"
00024 #include "BltDecoder.h"
00025 #include "BltDecoderClient.h"
00026 #include "BltDecoderServer.h"
00027
00028
00029
00030
00045 class BLT_Player : public BLT_DecoderClient
00046 {
00047 public:
00052 typedef BLT_DecoderClient_MessageHandler EventListener;
00053
00066 BLT_Player(NPT_MessageQueue* queue = NULL);
00067
00071 virtual ~BLT_Player();
00072
00081 void SetEventListener(EventListener* listener);
00082
00089 virtual BLT_Result PumpMessage(bool blocking = true);
00090
00096 virtual BLT_Result SetInput(BLT_CString name, BLT_CString type = NULL);
00097
00103 virtual BLT_Result SetOutput(BLT_CString name, BLT_CString type = NULL);
00104
00109 virtual BLT_Result Play();
00110
00114 virtual BLT_Result Stop();
00115
00123 virtual BLT_Result Pause();
00124
00129 virtual BLT_Result SeekToTime(BLT_UInt32 time);
00130
00138 virtual BLT_Result SeekToTimeStamp(BLT_UInt8 h,
00139 BLT_UInt8 m,
00140 BLT_UInt8 s,
00141 BLT_UInt8 f);
00142
00152 virtual BLT_Result SeekToPosition(BLT_Size offset, BLT_Size range);
00153
00164 virtual BLT_Result Ping(const void* cookie);
00165
00174 virtual BLT_Result RegisterModule(BLT_Module* module);
00175
00181 virtual BLT_Result AddNode(BLT_CString name);
00182
00193 virtual BLT_Result SetProperty(BLT_PropertyScope scope,
00194 const char* target,
00195 const char* name,
00196 const ATX_PropertyValue* value);
00197
00205 virtual BLT_Result Shutdown();
00206
00214 virtual BLT_Result Interrupt();
00215
00216 protected:
00217
00218 virtual void OnAckNotification(BLT_DecoderServer_Message::CommandId id) {
00219 if (m_Listener) m_Listener->OnAckNotification(id);
00220 }
00221 virtual void OnNackNotification(BLT_DecoderServer_Message::CommandId id,
00222 BLT_Result result) {
00223 if (m_Listener) m_Listener->OnNackNotification(id, result);
00224 }
00225 virtual void OnPongNotification(const void* cookie) {
00226 if (m_Listener) m_Listener->OnPongNotification(cookie);
00227 }
00228 virtual void OnDecoderStateNotification(BLT_DecoderServer::State state) {
00229 if (m_Listener) m_Listener->OnDecoderStateNotification(state);
00230 }
00231 virtual void OnStreamTimeCodeNotification(BLT_TimeCode timecode) {
00232 if (m_Listener) m_Listener->OnStreamTimeCodeNotification(timecode);
00233 }
00234 virtual void OnStreamPositionNotification(BLT_StreamPosition& position) {
00235 if (m_Listener) m_Listener->OnStreamPositionNotification(position);
00236 }
00237 virtual void OnStreamInfoNotification(BLT_Mask update_mask,
00238 BLT_StreamInfo& info) {
00239 if (m_Listener) m_Listener->OnStreamInfoNotification(update_mask, info);
00240 }
00241 virtual void OnPropertyNotification(BLT_PropertyScope scope,
00242 const char* source,
00243 const char* name,
00244 const ATX_PropertyValue* value) {
00245 if (m_Listener) m_Listener->OnPropertyNotification(scope, source, name, value);
00246 }
00247
00248 private:
00253 BLT_DecoderServer* m_Server;
00254
00258 BLT_DecoderClient_MessageHandler* m_Listener;
00259 };
00260
00263 #endif