1/*
2 * Copyright (c) 2003-2004, Marcus Overhagen
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without modification,
6 * are permitted provided that the following conditions are met:
7 *
8 *  * Redistributions of source code must retain the above copyright notice,
9 *    this list of conditions and the following disclaimer.
10 *  * Redistributions in binary form must reproduce the above copyright notice,
11 *    this list of conditions and the following disclaimer in the documentation
12 *    and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17 * IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
18 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
19 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
21 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
22 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
23 * OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25#ifndef _AU_READER_H
26#define _AU_READER_H
27
28#include "ReaderPlugin.h"
29#include "au.h"
30
31class auReader : public Reader
32{
33public:
34				auReader();
35				~auReader();
36
37	const char *Copyright();
38
39	status_t	Sniff(int32 *streamCount);
40
41	void		GetFileFormatInfo(media_file_format *mff);
42
43	status_t	AllocateCookie(int32 streamNumber, void **cookie);
44	status_t	FreeCookie(void *cookie);
45
46	status_t	GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration,
47							  media_format *format, const void **infoBuffer, size_t *infoSize);
48
49	status_t	Seek(void *cookie,
50					 uint32 seekTo,
51					 int64 *frame, bigtime_t *time);
52
53	status_t	GetNextChunk(void *cookie,
54							 const void **chunkBuffer, size_t *chunkSize,
55							 media_header *mediaHeader);
56
57	BPositionIO *Source() { return fSource; }
58
59private:
60	BPositionIO *	fSource;
61
62	media_format	fFormat;
63	int64			fDataStart;
64	int64			fDataSize;
65
66	int64			fFrameCount;
67	bigtime_t		fDuration;
68
69	bool			fRaw;
70
71	int64			fPosition;
72
73	int				fChannelCount;
74	int32			fFrameRate;
75	int				fBitsPerSample;
76	int				fBitsPerFrame;
77	int				fBlockAlign;
78	uint32			fFormatCode;
79
80	void *			fBuffer;
81	int32 			fBufferSize;
82};
83
84
85class auReaderPlugin : public ReaderPlugin
86{
87public:
88	Reader *NewReader();
89};
90
91MediaPlugin *instantiate_plugin();
92
93#endif
94