xref: /haiku/src/add-ons/media/plugins/rtsp_streamer/RTSPMediaIO.h (revision d004f813045155f0810c57ec0d0a2e073ebc6c05)
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