;***************************************************************************  
;                                                                             
;  Module Name: ACB.H                                                         
;                                                                             
;  OS/2 2.0 Multimedia Extensions Sync/Stream Manager Associate               
;  Control Block Definitions.                                                 
;                                                                             
;  Copyright (c) International Business Machines Corporation 1991, 1992       
;                         All Rights Reserved                                 
;                                                                             
;***************************************************************************  
MAX_PORT_NAME	EQU	40            ;  Max port name length           
MAX_PORTS	EQU	16            ;  Max number ports               
;**********************************************
;*
;* ACB - Associate Control Block
;*
;*       Each stream handler must define the
;*       ACB for each data object type that
;*       expect ACB's from the application.
;*
;*********************************************  

ACB	STRUC
acb_ulACBLen	DD	?              ;  length of structure                     
acb_ulObjType	DD	?
acb_ulParm1	DD	?
acb_ulParm2	DD	?
ACB	ENDS
;******************************************************
;* FSSH - File system stream handler MMIO Object ACB
;*****************************************************  
ACBTYPE_MMIO	EQU	0001H   ;  MMIO object                        

ACB_MMIO	STRUC
acbmmio_ulACBLen	DD	?              ;  length of structure                     
acbmmio_ulObjType	DD	?             ;  ACBTYPE_MMIO                            
acbmmio_hmmio	DD	?                 ;  Handle of media element mgr obj         
ACB_MMIO	ENDS
;******************************************************
;* MSH - Memory stream handler Playlist Object ACB
;*****************************************************  
ACBTYPE_MEM_PLAYL	EQU	0003H   ;  Memory playlist object             

ACB_MEM_PLAYL	STRUC
acbplyl_ulACBLen	DD	?              ;  length of structure                     
acbplyl_ulObjType	DD	?             ;  ACBTYPE_MEM_PLAYL                       
acbplyl_pMemoryAddr	DD	?           ;  Starting address of memory obj          
ACB_MEM_PLAYL	ENDS
;******************************************************
;* CDDASH - CD DA stream handler Object ACB
;*****************************************************  
ACBTYPE_CDDA	EQU	0004H   ;   Compact disk - digital audio obj  

ACB_CDDA	STRUC
acbcdda_ulACBLen	DD	?              ;  length of structure                     
acbcdda_ulObjType	DD	?             ;  ACBTYPE_CDDA                            
acbcdda_bCDDrive	DB	?              ;  CD drive letter                         
ACB_CDDA	ENDS
;******************************************************
;* MISH - MIDI stream handler port-stream table ACB
;*****************************************************  
ACBTYPE_MISH	EQU	0005H       ;  MIDI port-stream table         

ACB_MISH	STRUC
acbmish_ulACBLen	DD	?                     ;  length of structure            
acbmish_ulObjType	DD	?                    ;  ACBTYPE_MISH                   
acbmish_hstreamDefault	DD	?               ;  Default hstream to use when mapper   
                                           ;  is turned off.                 
acbmish_ulDeviceTypeID	DD	?               ;  device type id                 
acbmish_ulpMapperPorts	DD	?               ;  pointer to mapper port table   
acbmish_ulNumInStreams	DD	?
acbmish_hstreamIn	DD	MAX_PORTS DUP (?)         ;  Array of Input streams         
acbmish_ulNumOutStreams	DD	?
acbmish_hstreamOut	DD	MAX_PORTS DUP (?)        ;  Array of Output streams        
                                           ;  The index into the array is    
                                           ;  the source channel for that    
                                           ;  stream.                        
ACB_MISH	ENDS
;******************************************************
;* MISH - MIDI stream handler SET ACB
;*****************************************************  
ACBTYPE_SET	EQU	0006H       ;  MIDI set function              

ACB_SET	STRUC
acbset_ulACBLen	DD	?                     ;  length of structure            
acbset_ulObjType	DD	?                    ;  ACBTYPE_SET                    
acbset_ulFlags	DD	?                      ;  Set flags                      
acbset_ulReserved	DD	?                   ;  Reserved                       
ACB_SET	ENDS
;  ulFlags defines:                                                          
MIDI_MAP_ON	EQU	0000H       ;  turn mapping function on in MISH     
MIDI_MAP_OFF	EQU	0001H       ;  turn mapping function off in MISH    
;******************************************************
;* NULLSH - Null stream handler user ACB
;*****************************************************  
ACBTYPE_NULLSH	EQU	0007H   ;  User od Null stream handler        

ACB_NULLSH	STRUC
acbnullsh_ulACBLen	DD	?              ;  length of structure                     
acbnullsh_ulObjType	DD	?             ;  ACBTYPE_NULLSH                          
acbnullsh_pfnEntry	DD	?              ;  user callback entry point               
acbnullsh_ulReserved	DD	?            ;  Reserved                                
ACB_NULLSH	ENDS
;******************************************************
;* MTSH - MultiTrack Stream Handler Object ACB
;*****************************************************  
ACBTYPE_MTSH	EQU	0008H   ;  MTSH object                        

ACB_MTSH	STRUC
acbmtsh_ulACBLen	DD	?         ;  length of structure                     
acbmtsh_ulObjType	DD	?        ;  ACBTYPE_MTSH                            
acbmtsh_hmmio	DD	?            ;  Handle of media element mgr obj         
acbmtsh_mmtrackInfo	DB	SIZE MMTRACKINFO DUP (?)      ;  track for this stream                   
acbmtsh_ulFlags	DD	?          ;  flags                                   
ACB_MTSH	ENDS
;  ulFlags defines:                                                          
TRACK_ACTIVATE	EQU	0000H     ;  Activate track in stream handler    
TRACK_DEACTIVATE	EQU	0001H     ;  Deactivate track in stream handler    
;******************************************************
;* CSH - CODEC stream handler Object ACB
;*****************************************************  
ACBTYPE_CODECSH	EQU	0009H       ;  CODEC object                   

ACB_CODECSH	STRUC
acbcodecsh_ulACBLen	DD	?              ;  length of structure            
acbcodecsh_ulObjType	DD	?             ;  ACBTYPE_CODECSH                
acbcodecsh_hstreamToPair	DD	?         ;  2nd stream of pair             
acbcodecsh_pMmioInfo	DD	?             ;  info for IO Proc               
acbcodecsh_ulInfoLength	DD	?          ;  length of MmioInfo             
acbcodecsh_pCodecControl	DD	?         ;  CODEC control info             
acbcodecsh_ulControlLength	DD	?       ;  length of CodecControl         
ACB_CODECSH	ENDS
