14c7eafb7SDario Casalinuovo /* 24c7eafb7SDario Casalinuovo * Copyright 2016, Dario Casalinuovo. All rights reserved. 34c7eafb7SDario Casalinuovo * Distributed under the terms of the MIT License. 44c7eafb7SDario Casalinuovo */ 54c7eafb7SDario Casalinuovo #ifndef _RTSP_MEDIA_IO_H 64c7eafb7SDario Casalinuovo #define _RTSP_MEDIA_IO_H 74c7eafb7SDario Casalinuovo 84c7eafb7SDario Casalinuovo 94c7eafb7SDario Casalinuovo #include <AdapterIO.h> 104c7eafb7SDario Casalinuovo #include <Url.h> 114c7eafb7SDario Casalinuovo 124c7eafb7SDario Casalinuovo #include "rtsp.h" 134c7eafb7SDario Casalinuovo 144c7eafb7SDario Casalinuovo 154c7eafb7SDario Casalinuovo class RTSPMediaIO : public BAdapterIO 164c7eafb7SDario Casalinuovo { 174c7eafb7SDario Casalinuovo public: 184c7eafb7SDario Casalinuovo RTSPMediaIO(BUrl* ourUrl); 194c7eafb7SDario Casalinuovo virtual ~RTSPMediaIO(); 204c7eafb7SDario Casalinuovo 214c7eafb7SDario Casalinuovo status_t InitCheck() const; 224c7eafb7SDario Casalinuovo 23*d004f813SDario Casalinuovo virtual ssize_t WriteAt(off_t position, 24*d004f813SDario Casalinuovo const void* buffer, 254c7eafb7SDario Casalinuovo size_t size); 264c7eafb7SDario Casalinuovo private: 274c7eafb7SDario Casalinuovo BUrl* fUrl; 284c7eafb7SDario Casalinuovo 294c7eafb7SDario Casalinuovo TaskScheduler* fScheduler; 304c7eafb7SDario Casalinuovo UsageEnvironment* fEnv; 314c7eafb7SDario Casalinuovo char loopWatchVariable; 324c7eafb7SDario Casalinuovo 334c7eafb7SDario Casalinuovo status_t fInitErr; 344c7eafb7SDario Casalinuovo }; 354c7eafb7SDario Casalinuovo 364c7eafb7SDario Casalinuovo 374c7eafb7SDario Casalinuovo class HaikuRTSPClient : public RTSPClient 384c7eafb7SDario Casalinuovo { 394c7eafb7SDario Casalinuovo public: 404c7eafb7SDario Casalinuovo HaikuRTSPClient(UsageEnvironment& env, 414c7eafb7SDario Casalinuovo char const* rtspURL, 424c7eafb7SDario Casalinuovo portNumBits tunnelOverHTTPPortNum, 434c7eafb7SDario Casalinuovo BInputAdapter* fInputAdapter); 444c7eafb7SDario Casalinuovo 454c7eafb7SDario Casalinuovo BInputAdapter* GetInputAdapter() const; 464c7eafb7SDario Casalinuovo 474c7eafb7SDario Casalinuovo status_t WaitForInit(bigtime_t timeout); 484c7eafb7SDario Casalinuovo 494c7eafb7SDario Casalinuovo void NotifyError(); 504c7eafb7SDario Casalinuovo void NotifySucces(); 514c7eafb7SDario Casalinuovo 524c7eafb7SDario Casalinuovo protected: 534c7eafb7SDario Casalinuovo virtual ~HaikuRTSPClient(); 544c7eafb7SDario Casalinuovo 554c7eafb7SDario Casalinuovo public: 564c7eafb7SDario Casalinuovo 574c7eafb7SDario Casalinuovo MediaSubsessionIterator* iter; 584c7eafb7SDario Casalinuovo MediaSession* session; 594c7eafb7SDario Casalinuovo MediaSubsession* subsession; 604c7eafb7SDario Casalinuovo TaskToken streamTimerTask; 614c7eafb7SDario Casalinuovo double duration; 624c7eafb7SDario Casalinuovo 634c7eafb7SDario Casalinuovo private: 644c7eafb7SDario Casalinuovo BInputAdapter* fInputAdapter; 654c7eafb7SDario Casalinuovo port_id fInitPort; 664c7eafb7SDario Casalinuovo }; 674c7eafb7SDario Casalinuovo 684c7eafb7SDario Casalinuovo #endif 69