xref: /haiku/src/apps/cortex/addons/common/SoundUtils.h (revision d3d8b26997fac34a84981e6d2b649521de2cc45a)
1 /*******************************************************************************
2 /
3 /	File:			SoundUtils.h
4 /
5 /   Description:	Utility functions for handling audio data.
6 /
7 /	Copyright 1998-1999, Be Incorporated, All Rights Reserved
8 /
9 *******************************************************************************/
10 
11 #if ! defined( _SoundUtils_h )
12 #define _SoundUtils_h
13 
14 #include <MediaDefs.h>
15 
16 //	Simple helper functions that come in handy when doing
17 //	buffer calculations.
18 double us_to_s(bigtime_t usecs);
19 bigtime_t s_to_us(double secs);
20 
21 int bytes_per_frame(const media_raw_audio_format & format);
22 int frames_per_buffer(const media_raw_audio_format & format);
23 bigtime_t buffer_duration(const media_raw_audio_format & format);
24 bigtime_t frames_duration(const media_raw_audio_format & format,
25 	int64 num_frames);
26 int64 frames_for_duration(const media_raw_audio_format & format,
27 	bigtime_t duration);
28 int buffers_for_duration(const media_raw_audio_format & format,
29 	bigtime_t duration);
30 
31 //	This is a common hook function interface for
32 //	SoundConsumer and SoundProducer to use.
33 typedef void (*SoundProcessFunc)(void * cookie,
34 	bigtime_t timestamp, void * data, size_t datasize,
35 	const media_raw_audio_format & format);
36 typedef void (*SoundNotifyFunc)(void * cookie,
37 	int32 code, ...);
38 
39 //	These are special codes that we use in the Notify
40 //	function hook.
41 enum {
42 	B_WILL_START = 1,		//	performance_time
43 	B_WILL_STOP,			//	performance_time immediate
44 	B_WILL_SEEK,			//	performance_time media_time
45 	B_WILL_TIMEWARP,		//	real_time performance_time
46 	B_CONNECTED,			//	name (char*)
47 	B_DISCONNECTED,			//
48 	B_FORMAT_CHANGED,		//	media_raw_audio_format*
49 	B_NODE_DIES,			//	node will die!
50 	B_HOOKS_CHANGED,		//
51 	B_OP_TIMED_OUT,			//	timeout that expired -- Consumer only
52 	B_PRODUCER_DATA_STATUS,	//	status performance_time -- Consumer only
53 	B_LATE_NOTICE			//	how_much performance_time -- Producer only
54 };
55 
56 #endif /* _SoundUtils_h */
57