1 #ifndef LIBRARIES_AC97MIXER_H
    2 #define LIBRARIES_AC97MIXER_H
    3 
    4 /*
    5 	ac97mixer library definitions
    6 
    7 	Copyright © 2003-2010 The MorphOS Development Team, All Rights Reserved.
    8 */
    9 
   10 #ifndef EXEC_TYPES_H
   11 #include <exec/types.h>
   12 #endif
   13 
   14 #define	MIN_MIXERVERSION	(51UL)
   15 
   16 #define AC97MA_OUTPUTS		0x84340001	/* (ULONG *) */
   17 #define AC97MA_INPUTS		0x84340002	/* (ULONG *) */
   18 #define AC97MA_S3DCAPABLE	0x84340003	/* (ULONG *) */
   19 #define AC97MA_SPDIFOUTCAPABLE	0x84340004	/* (ULONG *) */
   20 #define AC97MA_S3DLEVEL		0x84340005	/* (ULONG) */
   21 #define AC97MA_SPDIFOUTENABLE	0x84340006	/* (ULONG) */
   22 #define AC97MA_NAME		0x87650007	/* (char **) */
   23 #define AC97MA_VOLUMEHOOK	0x84340008	/* (struct Hook *) */
   24 
   25 #define AC97MIA_MAXVOLUME	0x85630001	/* 32bit data word containing 2 signed 16bit words */
   26 						/* in 15.1 fractional format (upper is left, lower word is right (or mono) */
   27 						/* unit is db in 0.5db steps */
   28 
   29 #define AC97MIA_MINVOLUME	0x85630002	/* 32bit data word containing 2 signed 16bit words */
   30 						/* in 15.1 fractional format (upper is left, lower word is right (or mono) */
   31 						/* unit is db in 0.5db steps */
   32 
   33 #define AC97MIA_NAME		0x85630003	/* (char **) */
   34 #define AC97MIA_CHANNELS	0x85630004	/* (ULONG *) */
   35 #define AC97MIA_VOLUME		0x85630005	/* 32bit data word containing 2 signed 16bit words */
   36 						/* in 15.1 fractional format (upper is left, lower word is right (or mono) */
   37 						/* unit is db in 0.5db steps */
   38 #define AC97MIA_MUTE		0x87650007	/* (ULONG) */
   39 #define AC97MIA_HASBOOST	0x87650008	/* (ULONG *) */
   40 #define AC97MIA_BOOST		0x87650009	/* (ULONG) */
   41 
   42 
   43 
   44 #define AC97MOA_MAXVOLUME	0x87650001	/* 32bit data word containing 2 signed 16bit words */
   45 						/* in 15.1 fractional format (upper is left, lower word is right (or mono) */
   46 						/* unit is db in 0.5db steps */
   47 
   48 #define AC97MOA_MINVOLUME	0x87650002	/* 32bit data word containing 2 signed 16bit words */
   49 						/* in 15.1 fractional format (upper is left, lower word is right (or mono) */
   50 						/* unit is db in 0.5db steps */
   51 
   52 #define AC97MOA_NAME		0x87650003	/* (char **) */
   53 #define AC97MOA_CHANNELS	0x87650004	/* (ULONG *) */
   54 #define AC97MOA_VOLUME		0x87650005	/* 32bit data word containing 2 signed 16bit words */
   55 						/* in 15.1 fractional format (upper is left, lower word is right (or mono) */
   56 						/* unit is db in 0.5db steps */
   57 #define AC97MOA_MUTE		0x87650007	/* (ULONG) */
   58 
   59 
   60 enum
   61 {
   62 	AC97TAG_CodecName = 0x88770000,
   63 	AC97TAG_UserData,
   64 	AC97TAG_SetMixerAttrFunc,
   65 	AC97TAG_GetMixerAttrFunc,
   66 	AC97TAG_SetInputAttrFunc,
   67 	AC97TAG_GetInputAttrFunc,
   68 	AC97TAG_SetOutputAttrFunc,
   69 	AC97TAG_GetOutputAttrFunc,
   70 	AC97TAG_RegWriteFunc,
   71 	AC97TAG_RegReadFunc,
   72 	AC97TAG_SoftVolume
   73 };
   74 
   75 struct	AC97MixerMsg
   76 {
   77 	ULONG	msg_id;
   78 	ULONG	index;
   79 	ULONG	attr;
   80 	ULONG	value;
   81 };
   82 
   83 enum
   84 {
   85 	AC97MMSG_SETINPUT = 1,
   86 	AC97MMSG_SETOUTPUT = 2,
   87 	AC97MMSG_SETMIXER = 3,
   88 	AC97MMSG_REMOVED = 4
   89 };
   90 
   91 
   92 struct	AC97VolAdjMsg
   93 {
   94 	void	*buffer;
   95 	ULONG	samples;
   96 	ULONG	format;
   97 };
   98 
   99 #pragma pack()
  100 
  101 #endif /* LIBRARIES_AC97MIXER_H */