BltPlayer.h

Go to the documentation of this file.
00001 /*****************************************************************
00002 |
00003 |   BlueTune - Async Layer
00004 |
00005 |   (c) 2002-2006 Gilles Boccon-Gibod
00006 |   Author: Gilles Boccon-Gibod (bok@bok.net)
00007 |
00008  ****************************************************************/
00013 #ifndef _BLT_PLAYER_H_
00014 #define _BLT_PLAYER_H_
00015 
00020 /*----------------------------------------------------------------------
00021 |   includes
00022 +---------------------------------------------------------------------*/
00023 #include "Neptune.h"
00024 #include "BltDecoder.h"
00025 #include "BltDecoderClient.h"
00026 #include "BltDecoderServer.h"
00027 
00028 /*----------------------------------------------------------------------
00029 |   BLT_Player
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     // BLT_DecoderClient_MessageHandler methods
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 /* _BLT_PLAYER_H_ */