xref: /haiku/src/add-ons/media/plugins/ffmpeg/AVFormatReader.h (revision a127b88ecbfab58f64944c98aa47722a18e363b2)
1 /*
2  * Copyright 2009, Stephan Aßmus <superstippi@gmx.de>
3  * All rights reserved. Distributed under the terms of the GNU L-GPL license.
4  */
5 #ifndef AV_FORMAT_READER_H
6 #define AV_FORMAT_READER_H
7 
8 
9 #include <Locker.h>
10 #include <String.h>
11 
12 #include "ReaderPlugin.h"
13 
14 
15 class AVFormatReader : public Reader {
16 public:
17 								AVFormatReader();
18 								~AVFormatReader();
19 
20 	virtual	const char*			Copyright();
21 
22 	virtual	status_t			Sniff(int32* streamCount);
23 
24 	virtual	void				GetFileFormatInfo(media_file_format* mff);
25 	virtual	status_t			GetMetaData(BMessage* _data);
26 
27 	virtual	status_t			AllocateCookie(int32 streamNumber,
28 									void** cookie);
29 	virtual	status_t			FreeCookie(void* cookie);
30 
31 	virtual	status_t			GetStreamInfo(void* cookie, int64* frameCount,
32 									bigtime_t* duration, media_format* format,
33 									const void** infoBuffer,
34 									size_t* infoSize);
35 
36 	virtual	status_t			GetStreamMetaData(void* cookie,
37 									BMessage* _data);
38 
39 	virtual	status_t			Seek(void* cookie, uint32 flags, int64* frame,
40 									bigtime_t* time);
41 	virtual	status_t			FindKeyFrame(void* cookie, uint32 flags,
42 									int64* frame, bigtime_t* time);
43 
44 	virtual	status_t			GetNextChunk(void* cookie,
45 									const void** chunkBuffer,
46 									size_t* chunkSize,
47 									media_header* mediaHeader);
48 
49 private:
50 			class Stream;
51 
52 			BString				fCopyright;
53 			Stream**			fStreams;
54 			BLocker				fSourceLock;
55 };
56 
57 
58 #endif // AV_FORMAT_READER_H
59