1 // Copyright (c) 1998-99, Be Incorporated, All Rights Reserved. 2 // SMS 3 /* VideoConsumer.h */ 4 #ifndef VIDEO_CONSUMER_H 5 #define VIDEO_CONSUMER_H 6 7 8 #include <Bitmap.h> 9 #include <BufferConsumer.h> 10 #include <MediaEventLooper.h> 11 #include <MediaNode.h> 12 #include <TimedEventQueue.h> 13 #include <TranslationKit.h> 14 #include <View.h> 15 #include <Window.h> 16 17 18 typedef struct { 19 port_id port; 20 bigtime_t rate; 21 uint32 imageFormat; 22 int32 translator; 23 bool passiveFtp; 24 char fileNameText[64]; 25 char serverText[64]; 26 char loginText[64]; 27 char passwordText[64]; 28 char directoryText[64]; 29 } ftp_msg_info; 30 31 #define FTP_INFO 0x60000001 32 33 class BStringView; 34 35 36 37 class VideoConsumer : public BMediaEventLooper, public BBufferConsumer { 38 public: 39 VideoConsumer(const char* name, BView* view, BStringView* statusLine, 40 BMediaAddOn *addon, const uint32 internalId); 41 ~VideoConsumer(); 42 43 /* BMediaNode */ 44 public: 45 virtual BMediaAddOn* AddOn(long* cookie) const; 46 47 protected: 48 virtual void Start(bigtime_t performanceTime); 49 virtual void Stop(bigtime_t performanceTime, bool immediate); 50 virtual void Seek(bigtime_t mediaTime, bigtime_t performanceTime); 51 virtual void TimeWarp(bigtime_t atRealTime, 52 bigtime_t toPerformanceTime); 53 54 virtual void NodeRegistered(); 55 virtual status_t RequestCompleted(const media_request_info& info); 56 57 virtual status_t HandleMessage(int32 message, const void* data, 58 size_t size); 59 60 virtual status_t DeleteHook(BMediaNode* node); 61 62 /* BMediaEventLooper */ 63 protected: 64 virtual void HandleEvent(const media_timed_event* event, 65 bigtime_t lateness, bool realTimeEvent); 66 67 /* BBufferConsumer */ 68 public: 69 virtual status_t AcceptFormat(const media_destination& dest, 70 media_format* format); 71 72 virtual status_t GetNextInput(int32* cookie, media_input* outInput); 73 74 virtual void DisposeInputCookie(int32 cookie); 75 76 protected: 77 virtual void BufferReceived(BBuffer* buffer); 78 79 private: 80 virtual void ProducerDataStatus(const media_destination &forWhom, 81 int32 status, bigtime_t atMediaTime); 82 83 virtual status_t GetLatencyFor(const media_destination& forWhom, 84 bigtime_t* outLatency, media_node_id* outId); 85 86 virtual status_t Connected(const media_source& producer, 87 const media_destination& where, const media_format& withFormat, 88 media_input* outInput); 89 90 virtual void Disconnected(const media_source& producer, 91 const media_destination& where); 92 93 virtual status_t FormatChanged(const media_source& producer, 94 const media_destination& consumer, int32 fromChangeCount, 95 const media_format& format); 96 97 /* implementation */ 98 99 public: 100 status_t CreateBuffers(const media_format& withFormat); 101 102 void DeleteBuffers(); 103 104 static status_t FtpRun(void* data); 105 106 void FtpThread(); 107 108 void UpdateFtpStatus(char* status); 109 110 status_t LocalSave(char* filename, BBitmap* bitmap); 111 112 status_t FtpSave(char* filename); 113 114 private: 115 BStringView* fStatusLine; 116 uint32 fInternalID; 117 BMediaAddOn* fAddOn; 118 119 thread_id fFtpThread; 120 121 bool fConnectionActive; 122 media_input fIn; 123 media_destination fDestination; 124 bigtime_t fMyLatency; 125 126 BWindow* fWindow; 127 BView* fView; 128 BBitmap* fBitmap[3]; 129 bool fOurBuffers; 130 BBufferGroup* fBuffers; 131 uint32 fBufferMap[3]; 132 133 BBitmap* fFtpBitmap; 134 volatile bool fTimeToFtp; 135 volatile bool fFtpComplete; 136 137 bigtime_t fRate; 138 uint32 fImageFormat; 139 int32 fTranslator; 140 bool fPassiveFtp; 141 char fFileNameText[64]; 142 char fServerText[64]; 143 char fLoginText[64]; 144 char fPasswordText[64]; 145 char fDirectoryText[64]; 146 }; 147 148 #endif // VIDEO_CONSUMER_H 149