home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional Developers Kit 1992 November / Disc01 / Disc01.mdf / runnable / mmos2 / mmtoolkt / inc / spcb.inc < prev    next >
Encoding:
Text File  |  1992-05-06  |  7.9 KB  |  119 lines

  1. ;***************************************************************************  
  2. ;                                                                             
  3. ;  Module Name: SPCB.H                                                        
  4. ;                                                                             
  5. ;  OS/2 2.0 Multimedia Extensions Sync/Stream Manager Stream Protocol         
  6. ;  Control Block Definitions.                                                 
  7. ;                                                                             
  8. ;  Copyright (c) International Business Machines Corporation 1991, 1992       
  9. ;                         All Rights Reserved                                 
  10. ;                                                                             
  11. ;***************************************************************************  
  12. ;**********************************************
  13. ;*
  14. ;* SPCBKEY - Stream Protocol Key
  15. ;*
  16. ;*********************************************  
  17.  
  18. spcbkey    STRUC
  19. spcbkey_ulDataType    DD    ?
  20. spcbkey_ulDataSubType    DD    ?
  21. spcbkey_ulIntKey    DD    ?                 ;  generated internal key              
  22. spcbkey    ENDS
  23. ;**********************************************
  24. ;*
  25. ;* SPCB - Stream Protocol Control Block
  26. ;*
  27. ;*********************************************  
  28.  
  29. spcb    STRUC
  30. spcb_ulSPCBLen    DD    ?             ;  SPCB struture length                     
  31. spcb_spcbkey    DB    SIZE SPCBKEY DUP (?)
  32. spcb_ulDataFlags    DD    ?           ;  Data type flags                          
  33. spcb_ulNumRec    DD    ?              ;  Max # records/buffer (Only used for Split streams)   
  34. spcb_ulBlockSize    DD    ?           ;  Block alignment in bytes.                     
  35. spcb_ulBufSize    DD    ?             ;  Buffer size (SSM allocated buffers) must be   
  36.                                   ;   a multiple of Block size                     
  37. spcb_ulMinBuf    DD    ?              ;  Minimum number of buffers needed to stream    
  38. spcb_ulMaxBuf    DD    ?              ;  Maximum number of buffers needed to stream    
  39. spcb_ulSrcStart    DD    ?            ;  # of EMPTY buffers required to start Source   
  40. spcb_ulTgtStart    DD    ?            ;  # of FULL buffers required to start Target    
  41. spcb_ulBufFlags    DD    ?            ;  Handler Protocol negotiation flags            
  42. spcb_ulHandFlags    DD    ?           ;  Handler Protocol flags                        
  43. spcb_mmtimeTolerance    DD    ?       ;  Sync tolerance value...Used as check by SSM   
  44.                                   ;   to determine whether to send a sync pulse    
  45.                                   ;   to this specific slave Stream Handler.       
  46.                                   ;   Algorithm:                                   
  47.                                   ;    diff = abs(master time - slave time)        
  48.                                   ;    if  diff >= tolerance                       
  49.                                   ;      then send sync pulse                      
  50.                                   ;  (Valid only for Slave stream handlers)        
  51. spcb_mmtimeSync    DD    ?            ;  Used to save sync pulse generation granularity   
  52.                                   ;   if the master uses the Stream Manager Timer.    
  53.                                   ;   if SpiSetSync passed NULL value for sync gran   
  54.                                   ;    then use this default value. (since hardware   
  55.                                   ;    must have it's own interrupt time interval.    
  56.                                   ;  (Valid only for Master stream handlers)          
  57. spcb_ulBytesPerUnit    DD    ?        ;  Bytes/unit of time. This is used to do seeks     
  58.                                   ;  on linear data that is not compressed or         
  59.                                   ;  of variable length.                              
  60. spcb_mmtimePerUnit    DD    ?         ;  The amount of mmtime each unit represents.       
  61.                                   ;  A unit can be a second, minute or whatever.      
  62. spcb    ENDS
  63. SPCB_MAX_BUF_SIZE    EQU    65536       ;  Largest buffer size in bytes            
  64. ;*******************
  65. ;* SPCB_ulDataFlags:
  66. ;******************  
  67. SPCBDATA_CUETIME    EQU    0002H  ;  This data type can support time cue points  
  68. SPCBDATA_CUEDATA    EQU    0004H  ;  This data type can support data cue points  
  69. SPCBDATA_SEEK    EQU    0000H  ;  Seeks can be performed on this data type.   
  70. SPCBDATA_NOSEEK    EQU    0008H  ;  NO seeks can be performed on this data type.  
  71. ;********************
  72. ;* SPCB_ulBufFlags:
  73. ;*******************  
  74. SPCBBUF_USERPROVIDED    EQU    0001H  ;  User provides buffers for stream          
  75.                                        ;  SSMgr will not allocate buffers,          
  76.                                        ;  but must lock down provided buffers,      
  77.                                        ;  so this will affect performance!!         
  78.                                        ;  (Source Handler only)                     
  79. SPCBBUF_FIXEDBUF    EQU    0002H  ;  Buffer size is fixed for this data type   
  80.                                        ;   in this handler. Can not be used         
  81.                                        ;   with the SPCBBUF_INTERLEAVED or          
  82.                                        ;   SPCBBUF_USERPROVIDED flags.              
  83. SPCBBUF_NONCONTIGUOUS    EQU    0004H  ;  Buffer do not need to be contiguous       
  84.                                        ;   in physical memory.                      
  85. SPCBBUF_INTERLEAVED    EQU    0008H  ;  Stream buffers can be interleaved.        
  86.                                        ;   Can not be use with the                  
  87.                                        ;   SPCBBUF_USERPROVIDED flag.               
  88.                                        ;   (Source Handler only)                    
  89. SPCBBUF_MAXSIZE    EQU    0010H  ;  ulBufSize is the maximum size that        
  90.                                        ;   can be used by this stream handler       
  91. SPCBBUF_16MEG    EQU    0020H  ;  The Stream buffers may be allocated       
  92.                                        ;   above the 16 Meg line. This is used      
  93.                                        ;   by stream handlers that can support      
  94.                                        ;   greater than 16 Megabyte addresses.      
  95. ;*******************
  96. ;* SPCB_ulHandFlags:
  97. ;******************  
  98. SPCBHAND_GENSYNC    EQU    0001H  ;  (INPUT FROM HANDLER ONLY)                 
  99.                                        ;  This handler can generate sync pulses     
  100.                                        ;  if it is the master.                      
  101. SPCBHAND_RCVSYNC    EQU    0002H  ;  (INPUT FROM HANDLER ONLY)                 
  102.                                        ;  This handler can receive sync pulses      
  103.                                        ;  if it is a slave                          
  104. SPCBHAND_TIMER    EQU    0004H  ;  Use Stream Manager Timer for Sync         
  105. SPCBHAND_NONSTREAM    EQU    0008H  ;  Stream Handler is non-streaming           
  106. SPCBHAND_GENTIME    EQU    0010H  ;  This handler contains real                
  107.                                        ;  stream time. The handler that             
  108.                                        ;  supports the SpiGetTime, data/time        
  109.                                        ;  cue point calls for this stream.          
  110. SPCBHAND_NOPREROLL    EQU    0020H  ;  This stream can not be prerolled.         
  111.                                        ;  (i.e. recording streams)                  
  112. SPCBHAND_NOSYNC    EQU    0040H  ;  This stream can be group into a           
  113.                                        ;  sync group, but does not send or          
  114.                                        ;  receive sync pulses.                      
  115. SPCBHAND_PHYS_SEEK    EQU    0080H  ;  This handler does a seek to a physical    
  116.                                        ;  device or memory not just a time adjustment.  
  117.                                        ;  (ssm will always call this handler first on   
  118.                                        ;   an SpiSeekStream call).                      
  119.