1/*
2 * Copyright 2019, Dario Casalinuovo. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _DVD_MEDIA_IO_H
6#define _DVD_MEDIA_IO_H
7
8
9#include <AdapterIO.h>
10#include <String.h>
11#include <Url.h>
12
13#include <dvdnav/dvdnav.h>
14
15
16class DVDMediaIO : public BAdapterIO
17{
18public:
19										DVDMediaIO(const char* path);
20	virtual								~DVDMediaIO();
21
22	virtual	ssize_t						WriteAt(off_t position,
23											const void* buffer,
24											size_t size);
25
26	virtual	status_t					SetSize(off_t size);
27
28	virtual status_t					Open();
29
30			void						LoopThread();
31
32	virtual	status_t					SeekRequested(off_t position);
33
34			void						HandleDVDEvent(int event, int len);
35
36			void						MouseMoved(uint32 x, uint32 y);
37			void						MouseDown(uint32 x, uint32 y);
38
39private:
40			static int32				_LoopThread(void* data);
41
42			thread_id					fLoopThread;
43			bool						fExit;
44
45			BInputAdapter*				fInputAdapter;
46
47			const char*					fPath;
48			dvdnav_t*					fDvdNav;
49			uint8_t*					fBuffer;
50};
51
52
53#endif
54