// This embarassing hack exists purely because EMACS' electric-c indentation
// mode is too clever by half...
#ifndef BEGIN_EXTERN_C
#ifdef __cplusplus
#define BEGIN_EXTERN_C extern "C" {
#define END_EXTERN_C };
#else
#define BEGIN_EXTERN_C
#define END_EXTERN_C
#endif
#endif
BEGIN_EXTERN_C
class JRingBuffer;
struct soundParams;
/*
* The interface to the Sequence Grabber works like this:
*
*/
OSStatus SequenceGrabberInitialize(void);
/* allocates a sequence grabber plus my own state information. */
void SequenceGrabberIdle(void);
/* calls SGIdle() if necessary */
OSStatus SequenceGrabberTeardown(void);
/* destroys the sequence grabber and state information. */
OSStatus SequenceGrabberOpenRecorder(const char *name, const soundParams *, unsigned long *ref);
/* this creates the audio channel if none exists (and returns an error
* if it already does). currently the name is ignored and you get
* whatever QuickTime's default choice is. It returns (via ref) a
* "handle" on the channel (which is ignored).
*/
OSStatus SequenceGrabberCloseRecorder(unsigned long ref);
/* destroys the audio channel. halts the sequence grabber temporarily or
* permanently, so it may glitch the video stream. you are assumed not
* to care.
*/
OSStatus SequenceGrabberRecorderParams(unsigned long ref, const soundParams *);
/* sets up the audio channel parameters. */
OSStatus SequenceGrabberStartRecorder(unsigned long ref, JRingBuffer *rb);
/* attaches the ringbuffer to the dataproc and starts the dataproc if it
* isn't going. If it is, hope I can set it up atomically.
*/
OSStatus SequenceGrabberStopRecorder(unsigned long ref);
/* calls SGStop() and removes the ringbuffer, disabling audio recording.
* this may glitch the video, you are presumed not to care.
*/
END_EXTERN_C
syntax highlighted by Code2HTML, v. 0.9.1