xref: /haiku/headers/os/game/StreamingGameSound.h (revision 508f54795f39c3e7552d87c95aae9dd8ec6f505b)
1 /*
2  *  Copyright 2001-2002, Haiku Inc. All Rights Reserved.
3  *  Distributed under the terms of the MIT License.
4  *
5  * Author:
6  *		Christopher ML Zumwalt May (zummy@users.sf.net)
7  */
8 #ifndef _STREAMINGGAMESOUND_H
9 #define _STREAMINGGAMESOUND_H
10 
11 
12 #include <SupportDefs.h>
13 #include <GameSound.h>
14 #include <Locker.h>
15 
16 
17 class BStreamingGameSound : public BGameSound {
18 public:
19 								BStreamingGameSound(size_t bufferFrameCount,
20 									const gs_audio_format* format,
21 									size_t bufferCount = 2,
22 									BGameSoundDevice* device = NULL);
23 
24 	virtual						~BStreamingGameSound();
25 
26 	virtual	BGameSound*			Clone() const;
27 
28 	virtual	status_t			SetStreamHook(void (*hook)(void* cookie,
29 										void* buffer, size_t byteCount,
30 										BStreamingGameSound* me),
31 									void* cookie);
32 	virtual	void				FillBuffer(void* buffer, size_t byteCount);
33 
34 	virtual	status_t			SetAttributes(gs_attribute* attributes,
35 									size_t attributeCount);
36 
37 	virtual	status_t 			Perform(int32 selector, void* data);
38 
39 protected:
40 								BStreamingGameSound(BGameSoundDevice* device);
41 
42 	virtual status_t			SetParameters(size_t bufferFrameCount,
43 									const gs_audio_format* format,
44 								 	size_t bufferCount);
45 
46 			bool				Lock();
47 			void				Unlock();
48 
49 private:
50 								BStreamingGameSound();
51 								BStreamingGameSound(
52 									const BStreamingGameSound& other);
53 			BStreamingGameSound& operator=(const BStreamingGameSound& other);
54 									// not implemented
55 
56 	virtual	status_t			_Reserved_BStreamingGameSound_0(int32 arg,...);
57 	virtual	status_t			_Reserved_BStreamingGameSound_1(int32 arg,...);
58 	virtual	status_t			_Reserved_BStreamingGameSound_2(int32 arg,...);
59 	virtual	status_t			_Reserved_BStreamingGameSound_3(int32 arg,...);
60 	virtual	status_t			_Reserved_BStreamingGameSound_4(int32 arg,...);
61 	virtual	status_t			_Reserved_BStreamingGameSound_5(int32 arg,...);
62 	virtual	status_t			_Reserved_BStreamingGameSound_6(int32 arg,...);
63 	virtual	status_t			_Reserved_BStreamingGameSound_7(int32 arg,...);
64 	virtual	status_t			_Reserved_BStreamingGameSound_8(int32 arg,...);
65 	virtual	status_t			_Reserved_BStreamingGameSound_9(int32 arg,...);
66 	virtual	status_t			_Reserved_BStreamingGameSound_10(int32 arg,...);
67 	virtual	status_t			_Reserved_BStreamingGameSound_11(int32 arg,...);
68 	virtual	status_t			_Reserved_BStreamingGameSound_12(int32 arg,...);
69 	virtual	status_t			_Reserved_BStreamingGameSound_13(int32 arg,...);
70 	virtual	status_t			_Reserved_BStreamingGameSound_14(int32 arg,...);
71 	virtual	status_t			_Reserved_BStreamingGameSound_15(int32 arg,...);
72 	virtual	status_t			_Reserved_BStreamingGameSound_16(int32 arg,...);
73 	virtual	status_t			_Reserved_BStreamingGameSound_17(int32 arg,...);
74 	virtual	status_t			_Reserved_BStreamingGameSound_18(int32 arg,...);
75 	virtual	status_t			_Reserved_BStreamingGameSound_19(int32 arg,...);
76 	virtual	status_t			_Reserved_BStreamingGameSound_20(int32 arg,...);
77 	virtual	status_t			_Reserved_BStreamingGameSound_21(int32 arg,...);
78 	virtual	status_t			_Reserved_BStreamingGameSound_22(int32 arg,...);
79 	virtual	status_t			_Reserved_BStreamingGameSound_23(int32 arg,...);
80 
81 private:
82 			void				(*fStreamHook)(void* cookie, void* buffer,
83 									size_t bytes, BStreamingGameSound* sound);
84 			void*				fStreamCookie;
85 			BLocker				fLock;
86 
87 			uint32				_reserved[12];
88 };
89 
90 
91 #endif	// _STREAMING_GAME_SOUND_H
92