1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License").  You may not use this file except in compliance
7 * with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22/*
23 * Copyright 1992-2003 Sun Microsystems, Inc.  All rights reserved.
24 * Use is subject to license terms.
25 */
26
27#ifndef _MULTIMEDIA_LIBAUDIO_H
28#define	_MULTIMEDIA_LIBAUDIO_H
29
30#pragma ident	"%Z%%M%	%I%	%E% SMI"
31
32#include <audio_types.h>
33#include <audio_hdr.h>
34#include <audio_device.h>
35#include <audio_errno.h>
36#include <audio_encode.h>
37#include <audio/au.h>
38#include <aiff.h>
39#include <wav.h>
40
41#ifdef __cplusplus
42extern "C" {
43#endif
44
45/* define various constants for general use */
46
47/* Theoretical maximum length of hh:mm:ss.dd string */
48#define	AUDIO_MAX_TIMEVAL	(32)
49
50/* Theoretical maximum length of encoding information string */
51#define	AUDIO_MAX_ENCODE_INFO	(80)
52
53
54/* Why aren't these stupid values defined in a standard place?! */
55#ifndef TRUE
56#define	TRUE	(1)
57#endif
58#ifndef FALSE
59#define	FALSE	(0)
60#endif
61#ifndef NULL
62#define	NULL	0
63#endif
64
65/* Help for endian-ness */
66#define	SWABI(I)							\
67	I = (((I >> 24) & 0xff) | ((I & 0xff) << 24) |			\
68	((I >> 8) & 0xff00) | ((I & 0xff00) << 8))
69
70/* Defines for the audio file formats we support */
71#define	FILE_ERROR	0
72#define	FILE_AU		1
73#define	FILE_WAV	2
74#define	FILE_AIFF	3
75
76/* Declare libaudio C routines */
77
78/* File Header routines */
79EXTERN_FUNCTION(int audio_write_filehdr, (int, Audio_hdr *, int, char *,
80		    unsigned));
81EXTERN_FUNCTION(int audio_rewrite_filesize, (int, int, unsigned,
82		    unsigned, unsigned));
83EXTERN_FUNCTION(int audio_read_filehdr, (int, Audio_hdr*, int *, char *,
84		    unsigned));
85EXTERN_FUNCTION(int audio_isaudiofile, (char *));
86EXTERN_FUNCTION(int audio_decode_filehdr,
87		    (int, unsigned char *, int *, Audio_hdr *, int *));
88
89extern int audio_write_filehdr(int, Audio_hdr *, int, char *, unsigned);
90extern int audio_rewrite_filesize(int, int, unsigned int, unsigned int,
91	unsigned int);
92
93
94
95/* Audio Header routines */
96EXTERN_FUNCTION(double audio_bytes_to_secs, (Audio_hdr*, unsigned));
97EXTERN_FUNCTION(unsigned audio_secs_to_bytes, (Audio_hdr*, double));
98EXTERN_FUNCTION(double audio_str_to_secs, (char *));
99EXTERN_FUNCTION(char *audio_secs_to_str, (double, char *, int));
100EXTERN_FUNCTION(int audio_cmp_hdr, (Audio_hdr*, Audio_hdr *));
101EXTERN_FUNCTION(int audio_enc_to_str, (Audio_hdr*, char *));
102
103
104/* Device Control routines */
105EXTERN_FUNCTION(int audio_getinfo, (int, Audio_info*));
106EXTERN_FUNCTION(int audio_setinfo, (int, Audio_info*));
107EXTERN_FUNCTION(int audio__setplayhdr, (int, Audio_hdr *, unsigned));
108EXTERN_FUNCTION(int audio__setval, (int, unsigned *, unsigned));
109EXTERN_FUNCTION(int audio__setgain, (int, double *, unsigned));
110EXTERN_FUNCTION(int audio__setpause, (int, unsigned));
111EXTERN_FUNCTION(int audio__flush, (int, unsigned int));
112EXTERN_FUNCTION(int audio_drain, (int, int));
113EXTERN_FUNCTION(int audio_play_eof, (int));
114
115#ifdef __cplusplus
116}
117#endif
118
119#endif /* !_MULTIMEDIA_LIBAUDIO_H */
120