aboutsummaryrefslogtreecommitdiff
path: root/Src/libvp6/corelibs/include/toolvox.h
blob: bdb83086f62c752570936178122845e2d7c4d1d2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
/*****************************************************************************

    Module      ToolVox.H
                The defines and prototypes for the Voxware voice compression
                system.


        Version 1.1.8.192
        For MacOS, Windows 3.1, Windows95, and Solaris


		Voxware Inc.
		305 College Road East
		Princeton, New Jersey  08540
		http://www.voxware.com


		Voxware Proprietary Material
		Copyright 1996, Voxware, Inc.
		All Rights Resrved

		DISTRIBUTION PROHIBITED without written authorization from Voxware

*****************************************************************************/



/*
    !!! All reserved, padding, and optional fields should be set to zero if
    !!! you are not using them.  Please memset() all structures before using
    !!! them.
*/



/*
    You must "#define VOXWARE_xxx" for the environment you
    are generating code for.

    Valid types are:
        VOXWARE_WIN16       <-- Windows 3.x
        VOXWARE_WIN32       <-- Windows 95 or Windows NT
        VOXWARE_DOS         <-- MS-DOS
        VOXWARE_MAC         <-- MacOS
        VOXWARE_SUN         <-- SunOS/Solaris
		VOXWARE_HP          <-- HPUX (Version 9.xx)
		VOXWARE_AIX			<-- IBM's AIX
*/




#ifndef __TOOLVOX_H_
#define __TOOLVOX_H_

#ifdef __cplusplus
extern "C" {
#endif



#ifndef VOXWARE_SUN
    #ifdef VOXWARE_MAC
        #include <ConditionalMacros.h>
    #endif
    #if PRAGMA_ALIGN_SUPPORTED
        #pragma options align=mac68k
    #elif VOXWARE_HP
        #pragma HP_ALIGN HPUX_WORD
    #else
        #pragma pack(2)
    #endif
#endif



// DAVE:  THIS SHOULD PROBABLY BE IN THIS FILE INSTEAD OF ITS OWN HDR. -GEO
#include "voxchunk.h"

/* Value returned from a ToolVox function call.  See ToolVox manual for a   */
/* list of specific return codes for each function.                         */
typedef unsigned short    VOXWARE_RETCODE;



/* We support VOXWARE_WIN for backwards compatibility.  Use VOXWARE_WIN16.  */
#if defined (VOXWARE_WIN)
    #define VOXWARE_WIN16
#endif

#if defined (VOXWARE_WIN16)
    #define VOX_FAR             __far
    #define VOX_EXPORT          __export
    #define VOX_PASCAL          __pascal
    #define VOXAPI              VOX_FAR VOX_PASCAL

    #ifdef __cplusplus
        #define VOXAPI_CALLBACK VOX_FAR __pascal
    #else
        #define VOXAPI_CALLBACK VOX_FAR __pascal __loadds
    #endif


#elif defined(VOXWARE_WIN32)
    #define VOX_FAR
    #define VOX_EXPORT
    #define VOX_PASCAL      __stdcall
    #define VOXAPI          VOX_PASCAL
    #define VOXAPI_CALLBACK  __stdcall


#elif defined(VOXWARE_MAC)
    #define VOX_FAR
    #define VOX_EXPORT
    #define VOX_PASCAL          pascal
    #define VOXAPI              VOX_PASCAL
    #define VOXAPI_CALLBACK     VOX_PASCAL


#elif defined(VOXWARE_SUN)
#if defined(VOXWARE_SGI)  || defined(VOXWARE_DEC)
    #define VOX_FAR
    #define VOX_EXPORT
    #define VOX_PASCAL
    #define VOXAPI      
    #define VOXAPI_CALLBACK        short
#else
    #define VOX_FAR
    #define VOX_EXPORT
    #define VOX_PASCAL
    #define VOXAPI      
    #define VOXAPI_CALLBACK
#endif

#elif defined(VOXWARE_DOS)
    #define VOX_FAR             __far
    #define VOX_EXPORT
    #define VOX_PASCAL          pascal
    #define VOXAPI              VOX_PASCAL
    #define VOXAPI_CALLBACK     VOX_PASCAL

#else
    #pragma message ("TOOLVOX.H: Platform indicator #define not setup.")
    #pragma message ("TOOLVOX.H: One of the following must be initialized:")
    #pragma message ("TOOLVOX.H:      #define VOXWARE_WIN16")
    #pragma message ("TOOLVOX.H:      #define VOXWARE_WIN32")
    #pragma message ("TOOLVOX.H:      #define VOXWARE_MAC")
    #pragma message ("TOOLVOX.H:      #define VOXWARE_SUN")
    #pragma message ("TOOLVOX.H:      #define VOXWARE_DOS")
    #pragma message ("TOOLVOX.H: Check the Voxware manual for more information.")

#endif



/*****************************************************************************
**                                                                          **
**  The data structures that will be passed to the ToolVox functions.       **
**                                                                          **
*****************************************************************************/



typedef struct tagVOX_ENVIRONMENT
{
    unsigned short  wSizeofVoxEnvironment;  /* --> Fill this in for us      */
    unsigned short  wCompatibility;         /* <-- versioning               */
    unsigned long   dwAPIVersionNumber;     /* <-- Version of API           */
    unsigned long   dwAPIMaintanceNumber;   /* <-- Maint Rel of API         */
    unsigned short  wNumCodecs;             /* <-- Number of CODECS avail.  */
    unsigned short  wNumVoiceFonts;         /* <-- Number of VoiceFonts     */
    char            szAPIName[32];          /* <-- ToolVox For MacOS 1.1.5  */
} VOX_ENVIRONMENT;

typedef VOX_ENVIRONMENT  VOX_FAR * LPVOX_ENVIRONMENT;





typedef struct tagVOXWARE_DATA
{
    unsigned short    wSizeOfVoxwareData;   /* The size of this structure   */

    unsigned short    wUserData;            /* Application dependent data   */
                                            /* ...(16 bit).                 */
    unsigned long     dwUserData;           /* Application dependent data   */
                                            /* (32 bit).                    */

    /* Buffer information required for (de)compressing between buffers <->  */
    /* disk.                                                                */
    unsigned long     dwInputType;          /* What is stored in the        */
                                            /* ...'lpInputLocation' field.  */
    void VOX_FAR      *lpInputLocation;     /* Pointer to a filename or     */
                                            /* ...buffer.                   */

    unsigned long     dwInputSize;          /* Inform Voxware about the     */
                                            /* ...buffer size.              */
    unsigned long     dwInputPosition;      /* Input data offset info.      */

    unsigned long     dwInputSamplingRate;  /* Number of samples per second.*/
    unsigned short    wInputBytesPerSample; /* Number of bytes per sample.  */


    unsigned long     dwOutputType;         /* What is stored in the        */
                                            /* ...'lpOutputLocation' field. */
    void VOX_FAR      *lpOutputLocation;    /* Pointer to filename, buffer, */
                                            /* ...or empty for playback.    */
    
    unsigned long     dwOutputSize;         /* Inform Voxware about the     */
                                            /* ...buffer size.              */
    unsigned long     dwOutputPosition;     /* Output data offset info.     */

    unsigned long     dwOutputSamplingRate; /* Number of samples per second.*/
    unsigned short    wOutputBytesPerSample;/* Number of bytes per sample.  */


    /* The decompression routines will use the following for voice effects: */
    unsigned short    bUseAbsolutePitchFlag;/* TRUE if fPitchChange is to   */
                                            /* ...be used; FALSE is for     */
                                            /* ...fPitchShift usage.        */
    float             fRelativePitch;       /* Relative PitchShift factor.  */
    float             fAbsolutePitch;       /* Absolute PitchShift value.   */
    float             fWarpedLengthFactor;  /* Warping factor               */
                                            /* ...0.2<factor<5.0 (a value   */
                                            /* ...of 1.0 = normal time)     */
    void VOX_FAR      *lpVoiceFont;         /* VoiceFont used for playback. */

    unsigned long     dwVoiceFontEnum;      /* Data used for enumeration of */
                                            /* ...VoiceFonts.               */

    /* This is a more detailed value that can help track down errors.       */
    signed long       dwSecondaryReturnCode;

    unsigned long     dwDataLeft;           /* Amount of data to process.   */

    /* A callback function that the effects routines will call.             */
    void VOX_FAR      *lpCallbackFunc;

    void VOX_FAR      *lpvControlBlock;     /* Private control block used   */
                                            /*  ...by Voxware.              */

    /* New fields for ToolVox version 1.1.0.                                */ 

    unsigned long     dwCompressionSettings;/* Choose the compression codec.*/ 

    unsigned long     dwStatus;             /*  Status of ToolVox engine.   */

    unsigned short    wVoiceFontType;       /* Unused.  Set to zero.        */

    unsigned short    bUseAbsoluteGainFlag; /* true if fGainControl is used */
    float             fRelativeGain;        /* decompression only           */
                                            /* Multimedia Codecs Only       */
                                            /* 1.0 is normal                */
                                            /* greater than 1 is louder     */
                                            /* less than 1 is softer        */
    float             fAbsoluteGain;        /* decompression only           */
    signed short      wCurrentEnergyLevel;  /* 0..255; > 200 = clipping     */

    unsigned short    padding3;             /* Unused.  Set to zero.        */

    void VOX_FAR      *lpReservedFunction;  /* reserved 1                   */
    void VOX_FAR      *lpReservedVars;      /* reserved 2                   */

    void VOX_FAR      *lpMarkerRecord;      /* reserved                     */

//###GTT - Added support for communication of info chunks - 5/30/96
    VOX_CHUNK_INFO VOX_FAR  *lpInfoChunks;
    short               wNumInfoChunks;
    short               bV1Compatible;
    
    unsigned short      wVoiceFontID;       /* Used to activate a VoiceFont */

	void VOX_FAR *		lpPlaybackWindow;

    unsigned short      wNumBitsPerFrame;

}   VOXWARE_DATA;

typedef VOXWARE_DATA  VOX_FAR * LPVOXWARE_DATA;





typedef struct tagVOX_VERSION
{
    /* The version and internal name for the ToolVox Compression DLL.       */
    unsigned char   szCompressVersion[64];
    unsigned char   szCompressInternal[32];

    /* The version and maintenance for the ToolVox Compression DLL.         */
    /* For example: 1.30.46.01                                              */
    unsigned long   dwCompressVersion;       /* e.g. 0x00010030 = "01.30"   */
    unsigned long   dwCompressMaint;         /* e.g. 0x00460001 = "46.01"   */


    /* The version and internal name for the ToolVox Decompression DLL.     */
    unsigned char   szDecompressVersion[64];
    unsigned char   szDecompressInternal[32];

    /* The version and maintenance for the ToolVox Decompression DLL.       */
    /* For example: 1.30.46.01                                              */
    unsigned long   dwDecompressVersion;     /* e.g. 0x00010030 = "01.30"   */
    unsigned long   dwDecompressMaint;       /* e.g. 0x00460001 = "46.01"   */


    /* The version and internal name for the ToolVox VoiceFont DLL.         */
    unsigned char   szVoiceFontVersion[64];
    unsigned char   szVoiceFontInternal[32];

    /* The version and maintenance for the ToolVox VoiceFont DLL.           */
    /* For example: 1.30.46.01                                              */
    unsigned long   dwVoiceFontVersion;      /* e.g. 0x00010030 = "01.30"   */
    unsigned long   dwVoiceFontMaint;        /* e.g. 0x00460001 = "46.01"   */


    /* The version and internal name for the ToolVox Utility DLL.           */
    unsigned char   szUtilityVersion[64];
    unsigned char   szUtilityInternal[32];

    /* The version and maintenance for the ToolVox Utility DLL.             */
    /* For example: 1.30.46.01                                              */
    unsigned long   dwUtilityVersion;        /* e.g. 0x00010030 = "01.30"   */
    unsigned long   dwUtilityMaint;          /* e.g. 0x00460001 = "46.01"   */


    /* The version and internal name for the ToolVox RT24 Compression DLL.  */
    unsigned char   szRT24CompressVersion[64];
    unsigned char   szRT24CompressInternal[32];

    /* The version and maintenance for the ToolVox RT24 Compression DLL.    */
    /* For example: 1.30.46.01                                              */
    unsigned long   dwRT24CompressVersion;   /* e.g. 0x00010030 = "01.30"   */
    unsigned long   dwRT24CompressMaint;     /* e.g. 0x00460001 = "46.01"   */


    /* The version and internal name for the ToolVox RT24 Decompression DLL.*/
    unsigned char   szRT24DecompressVersion[64];
    unsigned char   szRT24DecompressInternal[32];

    /* The version and maintenance for the ToolVox RT24 Decompression DLL.  */
    /* For example: 1.30.46.01                                              */
    unsigned long   dwRT24DecompressVersion; /* e.g. 0x00010030 = "01.30"   */
    unsigned long   dwRT24DecompressMaint;   /* e.g. 0x00460001 = "46.01"   */

}   VOX_VERSION;

typedef VOX_VERSION VOX_FAR * LPVOX_VERSION;



typedef struct tagVOX_FILE_INFO
{
    /* Some standard WAV, AIFF, and VOX file data.                          */
    unsigned short  wFormatTag;         /* WAVE_FORMAT_VOXWARE for com-     */
                                        /* ...pressed or WAVE_FORMAT_PCM    */
                                        /* ...for standard files.           */
    unsigned short  nChannels;          /* Set to the value                 */
                                        /* ...VOXWARE_WAVE_FILE_MONO or     */
                                        /* ...VOXWARE_WAVE_FILE_STEREO.     */
    unsigned long   nAvgBitsPerSec;     /* The bit rate of this file.       */
    unsigned long   dwSamplingRate;
    unsigned short  wBytesPerSample;
    unsigned long   dwNumSamplesInFile; /* The total number of samples in   */
                                        /* ...the file.                     */

    float           fMeanPitch;         /* Weighted average pitch of the    */
                                        /* ...Vox file.                     */
    float           fMinPitch;          /* Lowest pitch value of the file.  */
    float           fMaxPitch;          /* Highest pitch value of the file. */

//###lee - split this out into a new structure:
    unsigned long   dwCompressedSize;   /* One is estimated, and the other  */
    unsigned long   dwDecompressedSize; /* ...is the current size.          */

    unsigned short  bVariableRate;      /* TRUE if codec is variable rate.  */

}   VOX_FILE_INFO;

typedef VOX_FILE_INFO  VOX_FAR * LPVOX_FILE_INFO;



typedef struct tagVFONT_IDENTIFIER
{
    /* Used for vfontEnumerate calls. */
    char szFontName[32];
    char szFontFile[128];

}   VFONT_IDENTIFIER;

typedef VFONT_IDENTIFIER  VOX_FAR * LPVFONT_IDENTIFIER;



typedef struct tagCODEC_DESCRIPTION
{
    unsigned long   dwCodecID;
    char            szCodecInternalName[44];
    char            szCodecListBoxName[44];
    char            szCodecDescription[256];
}   CODEC_DESCRIPTION;

typedef CODEC_DESCRIPTION  VOX_FAR * LPCODEC_DESCRIPTION;



typedef struct tagVOICE_FONT_DESCRIPTION
{
    unsigned short  wFontID;
    char            szFontFamily[44];
    char            szFontName[44];
    char            szFontDescription[256];
    unsigned short  bHasDecodeEffect;
    unsigned short  wSizeofDecodeChunk;
}   VOICE_FONT_DESCRIPTION;

typedef VOICE_FONT_DESCRIPTION  VOX_FAR * LPVOICE_FONT_DESCRIPTION;



typedef struct tagVOX_FUNCTION_VARS
{
    unsigned short    wSizeOfFunctionVars;  /* The size of this structure   */

    void VOX_FAR      *lpBuffer;            /* Pointer to a the data buffer.*/
    unsigned long     dwBufferSize;         /* The size of the buffer.      */

    unsigned long     dwUserData;           /* Application dependent data   */
                                            /* (32 bit).                    */

    LPVOXWARE_DATA    lpVoxwareData;        /* The original VoxawareData    */
                                            /* used to start processing.    */

}   VOX_FUNCTION_VARS;


typedef VOX_FUNCTION_VARS VOX_FAR * LPVOX_FUNCTION_VARS;


/*
    For use with BitStreams
*/

typedef struct tagVOX_STREAM_HEADER
{
    unsigned long       dwHeaderID;
    unsigned short      wSizeOfVoxStreamHeader;
    unsigned char       voxStreamHeaderData[1]; // variable length
} VOX_STREAM_HEADER;

typedef VOX_STREAM_HEADER VOX_FAR * LPVOX_STREAM_HEADER;



typedef struct tagFIRST_BITSTREAM_BUFFER
{
    unsigned short      wSizeOfFirstBitStreamStruct;
    unsigned short      wNumBitsPerFrame;
    unsigned short      wNumSamplesPerFrame;
    unsigned short      wPadding;
    VOX_STREAM_HEADER   voxStreamHeader;        /* Send this to the decoder */
} FIRST_BITSTREAM_BUFFER;


typedef FIRST_BITSTREAM_BUFFER VOX_FAR * LPFIRST_BITSTREAM_BUFFER;



/*
    VOX_CALLBACK is a typedef for the user function that is called by the
    ToolVox compression and decompression routines.

    Special Note for Macintosh Developers:
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        Do >> NOT << give us a Universal Procedure Pointer.
        We make our own so you don't have to... (your welcome)
        Sooo just give us the functions name:
            yourVoxData->lpCallbackFunc = myCallbackProc;
*/
#ifdef VOXWARE_MAC
    typedef VOXAPI_CALLBACK VOXWARE_RETCODE (* VOX_CALLBACK)
                            (unsigned short wVox, unsigned short wMessage,
                            LPVOXWARE_DATA lpVoxData);
#else
#if defined(VOXWARE_SGI) || defined(VOXWARE_DEC)
    typedef VOXWARE_RETCODE ( * VOX_CALLBACK) (unsigned short , unsigned short , LPVOXWARE_DATA );

#else
    typedef VOXWARE_RETCODE (VOXAPI_CALLBACK * VOX_CALLBACK) 
                            (unsigned short wVox, unsigned short wMessage, 
                            LPVOXWARE_DATA lpVoxData);
#endif
#endif


typedef struct tagVOX_COMMAND
{
    unsigned long   dwAttribute;        /* Attribute to act on?             */
    float           fFloatParam;        /* Use this for float attributes.   */
    unsigned long   dwLongParam;        /* Use this for long attributes.    */

} VOX_COMMAND;

typedef  VOX_COMMAND VOX_FAR * LPVOX_COMMAND;


#define ATTRIBUTE_WARPED_LENGTH_FACTOR      1L          // get and set
#define ATTRIBUTE_RELATIVE_PITCH            2L          // get and set
#define ATTRIBUTE_ABSOLUTE_PITCH            3L          // get and set
#define ATTRIBUTE_PLAY_TIME                 5L          // not yet supported
#define ATTRIBUTE_VOICE_FONT                6L          // set only
#define ATTRIBUTE_GAIN_CONTROL              7L          // get and set
#define ATTRIBUTE_BITS_PER_SECOND           8L          // not yet supported
#define ATTRIBUTE_FIXED_RATE_CODEC          9L          // not yet supported



#define ATTRIBUTE_DUMP_BUFFERS          0x80000 + 1L    // RESERVED: bit bit offset is param
#define ATTRIBUTE_SILENT_WINDOW         0x80000 + 2L    // RESERVED: get set            dwLongParam = WORD ms
#define ATTRIBUTE_INDICATE_LOST_FRAME   0x80000 + 3L    // RESERVED:     set            dwLongParam = BOOL
#define ATTRIBUTE_VOICE_LEVEL           0x80000 + 4L    // RESERVED: get set            dwLongParam = WORD Value
#define ATTRIBUTE_VOICE_STATE           0x80000 + 5L    // RESERVED: get                dwLongParam = int Value
//#define ATTRIBUTE_VOICE_FONT_II       0x80000 + 6L    // RESERVED:     set            dwLongParam = short EffectSelection - fFloatParam = short SliderValue
//#define ATTRIBUTE_VOICE_EFFECT        0x80000 + 7L    // RESERVED:     set            dwLongParam = short EffectSelection - fFloatParam = short SliderValue
#define ATTRIBUTE_BIT_OFFSET          	0x80000 + 8L   	// RESERVED:	 set
#define ATTRIBUTE_GAIN_CONTROL_ADJUST   0x80000 + 6L    // RESERVED: get                dwLongParam = signed short Value
#define ATTRIBUTE_AGC_REFERENCE_LEVEL   0x80000 + 7L    // RESERVED: set                dwLongParam = unsigned short Value






/***************************************************************************** 
**
**  lpVoxwareData->dwCompressionSettings = VOXWARE_CODEC_xxx
**
**  Not filling in the dwCompressionSettings field, or setting it to default
**  tells ToolVox to compress what you gave it using the best codec for the
**  job.  If you give us a 11k-16k file, we will chose the MM_11k codec, if
**  you give us a 22k or better file, we will choose the MM_22k codec, etc...
**
**  If you assign one of the values below to the dwCompressionSettings field,
**  then we will send your file through the codec you asked us to.
**
**  Refer to page ###Maija: of the manual for more.
**
*****************************************************************************/ 
 
#define VOXWARE_CODEC_RT_8K                 0x01000001
#define VOXWARE_CODEC_RT_8K_HQ29            0x01000010

#define VOXWARE_CODEC_RT_8K_HQ24            0x01000004  // Do not use - unavailable for this release.
#define VOXWARE_CODEC_RT_8K_VR12            0x01000008  // Do not use - unavailable for this release.
#define VOXWARE_CODEC_RT_8K_VR15            0x01000009  // Do not use - unavailable for this release.
#define VOXWARE_CODEC_RT_8K_UQ              0x0100000C  // Do not use - unavailable for this release.
#define VOXWARE_CODEC_MM_11K                0x02000002  // Do not use - unavailable for this release.
#define VOXWARE_CODEC_MM_22K                0x04000002  // Do not use - unavailable for this release.

#define VOXWARE_CODEC_DEFAULT               0x00000000
#define VOXWARE_CODEC_RT24                  VOXWARE_CODEC_RT_8K     // obs spelling

/*Add for AUDIO codec*/
#define VOXWARE_CODEC_AC_8K                 0X08000001
#define VOXWARE_CODEC_AC_11K                0X08000002
#define VOXWARE_CODEC_AC_16K                0X08000003
#define VOXWARE_CODEC_AC_22K                0X08000004

/* These are provided for backwards compatibility The #define's above should be used. */
#define VOXWARE_AUDIO_CODEC_08              VOXWARE_CODEC_AC_8K
#define VOXWARE_AUDIO_CODEC_11              VOXWARE_CODEC_AC_11K
#define VOXWARE_AUDIO_CODEC_16              VOXWARE_CODEC_AC_16K
#define VOXWARE_AUDIO_CODEC_22              VOXWARE_CODEC_AC_22K

/*****************************************************************************
**
**  These are used to define the input and output types.  They should be ORed
**  together to create the type that is needed.  For example compressing
**  a Windows Wave file would use VOXTYPE_FORMAT_WAVE|VOXTYPE_LOCATION_FILE.
**  To specify the compressed output Wave file, use: VOXTYPE_FORMAT_WAVE|
**  VOXTYPE_LOCATION_FILE|VOXTYPE_QUALIFIER_VOX.
**
*****************************************************************************/

//#define VOXTYPE_FORMAT_IRRELEVENT     (unsigned long)(0x00000000L)
#define VOXTYPE_FORMAT_WAVE             (unsigned long)(0x00010000L)
#define VOXTYPE_FORMAT_RAW              (unsigned long)(0x00020000L)
#define VOXTYPE_FORMAT_AIFF             (unsigned long)(0x00030000L)
#define VOXTYPE_FORMAT_VFONT            (unsigned long)(0x00040000L)
#define VOXTYPE_FORMAT_PITCH            (unsigned long)(0x00050000L)

#define VOXTYPE_LOCATION_FILE           (unsigned long)(0x00000100L)
#define VOXTYPE_LOCATION_BUFFER         (unsigned long)(0x00000200L)
#define VOXTYPE_LOCATION_FSSPEC         (unsigned long)(0x00000300L)
#define VOXTYPE_LOCATION_SOUND          (unsigned long)(0x00000400L)
#define VOXTYPE_LOCATION_FUNCTION       (unsigned long)(0x00000800L)
#define VOXTYPE_LOCATION_STRING         (unsigned long)(0x00001000L)
#define VOXTYPE_LOCATION_BITSTREAM      (unsigned long)(0x00001100L)
#define VOXTYPE_LOCATION_VOICE_FONT_ID  (unsigned long)(0x00001200L)

#define VOXTYPE_QUALIFIER_PCM           (unsigned long)(0x00000000L)
#define VOXTYPE_QUALIFIER_VOX           (unsigned long)(0x00000001L)
#define VOXTYPE_QUALIFIER_PITCH         (unsigned long)(0x00000002L)
//#define VOXTYPE_QUALIFIER_ASYNC       (unsigned long)(0x00000004L)

#define VOXTYPE_CONST_FILE_INFO         (unsigned long)(0x10000000L)
#define VOXTYPE_CONST_VERSION           (unsigned long)(0x20000000L)
#define VOXTYPE_CONST_BENCHMARK         (unsigned long)(0x40000000L)

#define VOXTYPE_FORMAT_MASK             (unsigned long)(0x000F0000L)
#define VOXTYPE_LOCATION_MASK           (unsigned long)(0x0000FF00L)

#define VOXTYPE_VFONT_FILENAME          (unsigned long)(VOXTYPE_FORMAT_VFONT|VOXTYPE_LOCATION_FILE)
#define VOXTYPE_VFONT_DESCRIPTION       (unsigned long)(VOXTYPE_FORMAT_VFONT|VOXTYPE_LOCATION_STRING)
#define VOXTYPE_VFONT_IDENTIFIER        (unsigned long)(VOXTYPE_FORMAT_VFONT|VOXTYPE_LOCATION_BUFFER)



/*
    The following constants can be used in the dwOutputType and dwInputType
    fields of the VoxwareData structure instead of ORing the flags above...
*/
#define TYPE_WAVE_PCM_FILE              (unsigned long)(VOXTYPE_FORMAT_WAVE|VOXTYPE_LOCATION_FILE|VOXTYPE_QUALIFIER_PCM)
#define TYPE_AIFF_PCM_FILE              (unsigned long)(VOXTYPE_FORMAT_AIFF|VOXTYPE_LOCATION_FILE|VOXTYPE_QUALIFIER_PCM)
#define TYPE_RAW_PCM_FILE               (unsigned long)(VOXTYPE_FORMAT_RAW|VOXTYPE_LOCATION_FILE|VOXTYPE_QUALIFIER_PCM)

#define TYPE_WAVE_PCM_FSSPEC            (unsigned long)(VOXTYPE_FORMAT_WAVE|VOXTYPE_LOCATION_FSSPEC|VOXTYPE_QUALIFIER_PCM)
#define TYPE_AIFF_PCM_FSSPEC            (unsigned long)(VOXTYPE_FORMAT_AIFF|VOXTYPE_LOCATION_FSSPEC|VOXTYPE_QUALIFIER_PCM)
#define TYPE_RAW_PCM_FSSPEC             (unsigned long)(VOXTYPE_FORMAT_RAW|VOXTYPE_LOCATION_FSSPEC|VOXTYPE_QUALIFIER_PCM)

#define TYPE_WAVE_PCM_BUFFER            (unsigned long)(VOXTYPE_FORMAT_WAVE|VOXTYPE_LOCATION_BUFFER|VOXTYPE_QUALIFIER_PCM)
#define TYPE_AIFF_PCM_BUFFER            (unsigned long)(VOXTYPE_FORMAT_AIFF|VOXTYPE_LOCATION_BUFFER|VOXTYPE_QUALIFIER_PCM)
#define TYPE_RAW_PCM_BUFFER             (unsigned long)(VOXTYPE_FORMAT_RAW|VOXTYPE_LOCATION_BUFFER|VOXTYPE_QUALIFIER_PCM)

#define TYPE_WAVE_PCM_FUNCTION          (unsigned long)(VOXTYPE_FORMAT_WAVE|VOXTYPE_LOCATION_FUNCTION|VOXTYPE_QUALIFIER_PCM)
#define TYPE_AIFF_PCM_FUNCTION          (unsigned long)(VOXTYPE_FORMAT_AIFF|VOXTYPE_LOCATION_FUNCTION|VOXTYPE_QUALIFIER_PCM)
#define TYPE_RAW_PCM_FUNCTION           (unsigned long)(VOXTYPE_FORMAT_RAW|VOXTYPE_LOCATION_FUNCTION|VOXTYPE_QUALIFIER_PCM)


#define TYPE_WAVE_VOX_FILE              (unsigned long)(VOXTYPE_FORMAT_WAVE|VOXTYPE_LOCATION_FILE|VOXTYPE_QUALIFIER_VOX)
//#define TYPE_AIFF_VOX_FILE            (unsigned long)(VOXTYPE_FORMAT_AIFF|VOXTYPE_LOCATION_FILE|VOXTYPE_QUALIFIER_VOX)
#define TYPE_RAW_VOX_FILE               (unsigned long)(VOXTYPE_FORMAT_RAW|VOXTYPE_LOCATION_FILE|VOXTYPE_QUALIFIER_VOX)

#define TYPE_WAVE_VOX_FSSPEC            (unsigned long)(VOXTYPE_FORMAT_WAVE|VOXTYPE_LOCATION_FSSPEC|VOXTYPE_QUALIFIER_VOX)
//#define TYPE_AIFF_VOX_FSSPEC          (unsigned long)(VOXTYPE_FORMAT_AIFF|VOXTYPE_LOCATION_FSSPEC|VOXTYPE_QUALIFIER_VOX)
#define TYPE_RAW_VOX_FSSPEC             (unsigned long)(VOXTYPE_FORMAT_RAW|VOXTYPE_LOCATION_FSSPEC|VOXTYPE_QUALIFIER_VOX)

#define TYPE_WAVE_VOX_BUFFER            (unsigned long)(VOXTYPE_FORMAT_WAVE|VOXTYPE_LOCATION_BUFFER|VOXTYPE_QUALIFIER_VOX)
#define TYPE_AIFF_VOX_BUFFER            (unsigned long)(VOXTYPE_FORMAT_AIFF|VOXTYPE_LOCATION_BUFFER|VOXTYPE_QUALIFIER_VOX)
#define TYPE_RAW_VOX_BUFFER             (unsigned long)(VOXTYPE_FORMAT_RAW|VOXTYPE_LOCATION_BUFFER|VOXTYPE_QUALIFIER_VOX)

#define TYPE_WAVE_VOX_FUNCTION          (unsigned long)(VOXTYPE_FORMAT_WAVE|VOXTYPE_LOCATION_FUNCTION|VOXTYPE_QUALIFIER_VOX)
#define TYPE_AIFF_VOX_FUNCTION          (unsigned long)(VOXTYPE_FORMAT_AIFF|VOXTYPE_LOCATION_FUNCTION|VOXTYPE_QUALIFIER_VOX)
#define TYPE_RAW_VOX_FUNCTION           (unsigned long)(VOXTYPE_FORMAT_RAW|VOXTYPE_LOCATION_FUNCTION|VOXTYPE_QUALIFIER_VOX)

#define TYPE_PLAY_WINMM                 (unsigned long)(VOXTYPE_LOCATION_SOUND|VOXTYPE_QUALIFIER_PCM)
#define TYPE_PLAY_MAC                   (unsigned long)(VOXTYPE_LOCATION_SOUND|VOXTYPE_QUALIFIER_PCM)

#define VOXTYPE_RECORD_PCM              (unsigned long)(VOXTYPE_LOCATION_SOUND|VOXTYPE_QUALIFIER_PCM)       // ###dave 03/25/96: added this

#define TYPE_RAW_VOX_BITSTREAM          (unsigned long)(VOXTYPE_FORMAT_RAW|VOXTYPE_LOCATION_BITSTREAM|VOXTYPE_QUALIFIER_VOX)

#define VOX_VOICE_FONT_PREVIEW_ID       (unsigned long)(VOXTYPE_FORMAT_WAVE|VOXTYPE_LOCATION_VOICE_FONT_ID|VOXTYPE_QUALIFIER_VOX)




/*****************************************************************************
**
**  Some defines that can be used with the ToolVox routines.
**
*****************************************************************************/

/* This is the maximum filename size that can be used with the ToolVox      */
/* routines.  Does not include the space for the NULL.                      */
#define MAX_FILENAMESIZE    255         /* char szFile[MAX_FILENAMESIZE+1]; */

#define WAVE_FORMAT_VOXWARE                 0x0062
// ###dave -lee we need to define _WAVE & _AIFF, and friends... (raw)

#define VOXWARE_WAVE_FILE_MONO              1
#define VOXWARE_WAVE_FILE_STEREO            2

#define VOXWARE_SAMPLING_RATE_8K            8000L
#define VOXWARE_SAMPLING_RATE_11K           11025L
#define VOXWARE_SAMPLING_RATE_11127K        0x2B7745D1L /*11127.27273 khz */
#define VOXWARE_SAMPLING_RATE_16K           16000L
#define VOXWARE_SAMPLING_RATE_22K           22050L
#define VOXWARE_SAMPLING_RATE_22254K        0x56EE8BA3L /*22254.54545 khz */
#define VOXWARE_SAMPLING_RATE_32K           32000L
#define VOXWARE_SAMPLING_RATE_44K           44100L

#define VOXWARE_SAMPLING_INDEX_8K           0
#define VOXWARE_SAMPLING_INDEX_11k          1
#define VOXWARE_SAMPLING_INDEX_16K          2
#define VOXWARE_SAMPLING_INDEX_22K          3
#define VOXWARE_SAMPLING_INDEX_32K          4
#define VOXWARE_SAMPLING_INDEX_44K          5
#define VOXWARE_SAMPLING_INDEX_11127K       6
#define VOXWARE_SAMPLING_INDEX_22254K       7


#define VOXWARE_SAMPLING_INDEX_END          (VOXWARE_SAMPLING_INDEX_22254K+1)
#define VOXWARE_NUM_SAMPLING_RATES          (VOXWARE_SAMPLING_INDEX_22254K+1)

#define VOXWARE_SAMPLING_RATE_ARRAY         {VOXWARE_SAMPLING_RATE_8K,    \
                                             VOXWARE_SAMPLING_RATE_11K,   \
                                             VOXWARE_SAMPLING_RATE_16K,   \
                                             VOXWARE_SAMPLING_RATE_22K,   \
                                             VOXWARE_SAMPLING_RATE_32K,   \
                                             VOXWARE_SAMPLING_RATE_44K,   \
                                             VOXWARE_SAMPLING_RATE_11127K,\
                                             VOXWARE_SAMPLING_RATE_22254K,\
                                             0L}

#define VOXWARE_SAMPLE_SIZE_8BIT            1
#define VOXWARE_SAMPLE_SIZE_16BIT           2

#define VOXWARE_SAMPLE_INDEX_8BIT           0
#define VOXWARE_SAMPLE_INDEX_16BIT          1

#define VOXWARE_SAMPLE_INDEX_END            (VOXWARE_SAMPLE_INDEX_16BIT+1)
#define VOXWARE_NUM_SAMPLE_SIZES            (VOXWARE_SAMPLE_INDEX_16BIT+1)

#define VOXWARE_SAMPLE_SIZE_ARRAY           {VOXWARE_SAMPLE_SIZE_8BIT,    \
                                             VOXWARE_SAMPLE_SIZE_16BIT,   \
                                             0L}



/*****************************************************************************
**
**  Some consts so you don't hard-coding anything!
**
*****************************************************************************/

#define GAIN_ENERGY_LEVEL_CLIPPING  (char) 200  /* You may be clipping if > */
                                                /* ...this level.           */
#define GAIN_ENERGY_LEVEL_TOO_LOW   (char) 150  /* Speaker should not go    */
                                                /* below this for very long.*/


#define MAX_WARPED_LENGTH_FACTOR     (float) 5.0
#define MIN_WARPED_LENGTH_FACTOR     (float) 0.2
#define DEFAULT_WARPED_LENGTH_FACTOR (float) 1.0


#define USE_ABSOLUTE_PITCH           TRUE
#define USE_RELATIVE_PITCH           FALSE  /* Default for bAbsolutePitchFlag */

#define MAX_RELATIVE_PITCH           (float) +24.0
#define MIN_RELATIVE_PITCH           (float) -24.0
#define DEFAULT_RELATIVE_PITCH       (float) 0.0

#define MAX_ABSOLUTE_PITCH           (float) 400.0
#define MIN_ABSOLUTE_PITCH           (float) 70.0


#define USE_ABSOLUTE_GAIN            TRUE
#define USE_RELATIVE_GAIN            FALSE  /* Default for bUseAbsoluteGainFlag */

#define MAX_RELATIVE_GAIN            (float) +100.0
#define MIN_RELATIVE_GAIN            (float) -100.0
#define DEFAULT_RELATIVE_GAIN        (float) 0.0

#define MAX_ABSOLUTE_GAIN            (float) 255.0
#define MIN_ABSOLUTE_GAIN            (float) 0.0

#define NO_VOICE_FONT                NULL


/* Assign the wVoiceFontType field to one of the following */
#define VOICE_FONT_VERSION_ONE_POINTER      (short) 0
#define VOICE_FONT_BETA_2_STRUCT            (short) 1



/*
    The manual say's that the minimum size buffer you should ever
    pass in is 512 bytes.  (Truth is, we don't need that much,
    but since I haven't called by psychic friend yet... I don't
    know what the future will hold -- :)
*/
#define VOX_MINIMUM_BUFFER_SIZE             (unsigned long) 512



/* Version format: vers.rel.maint.patch - this is version 1.1.8.192           */
#define TOOLVOX_VERSION_NUMBER              0x00010001L
#define TOOLVOX_MAINTENANCE_LEVEL           0x000800C0L

/* The following are obsolete spellings - use the constants #defined above.  */
#define VOXWARE_VERSION                     TOOLVOX_VERSION_NUMBER
#define VOXWARE_MAINT                       TOOLVOX_MAINTENANCE_LEVEL




/*****************************************************************************
**
**  Message values that are passed to the callback & the dwStatus field
**
*****************************************************************************/

#define VOXWARE_PLAYBACKERROR               10
#define VOXWARE_STARTCOMPRESS               11
#define VOXWARE_ENDCOMPRESS                 12
#define VOXWARE_STARTDECOMPRESS             13
#define VOXWARE_ENDDECOMPRESS               14
#define VOXWARE_STARTPLAY                   15
#define VOXWARE_ENDPLAY                     16
//#define VOXWARE_STARTPITCH                17
//#define VOXWARE_ENDPITCH                  18
#define VOXWARE_GETINFO                     19
#define VOXWARE_STARTRECORD                 20      /* Added in Version 1.1 */
#define VOXWARE_ENDRECORD                   21      /* Added in Version 1.1 */
#define VOXWARE_RECORDERROR                 22      /* Added in Version 1.1 */
#define VOXWARE_WAITING_TO_CLEANUP          23      /* Added in Version 1.1 */
#define VOXWARE_PAUSED                      24      /* Added in Version 1.2 */
// ###lee: where is SOUNDOUT ??


#define VOXWARE_FUNCTION_INIT               40      /* Added in Version 1.1 */
#define VOXWARE_FUNCTION_READ               41      /* Added in Version 1.1 */
#define VOXWARE_FUNCTION_WRITE              42      /* Added in Version 1.1 */
#define VOXWARE_FUNCTION_CLEANUP            43      /* Added in Version 1.1 */



/*****************************************************************************
**
**  Messages that are sent to the FILTER function
**
*****************************************************************************/

#define VOXWARE_FILTER_INIT                 50
#define VOXWARE_FILTER_PCM                  51
#define VOXWARE_FILTER_CLEANUP              52



/*****************************************************************************
**
**  Messages that are returned from the low level compress and decompress 
**  functions.
**
*****************************************************************************/

#define VOXWARE_NEED_MORE_INPUT_DATA        91
#define VOXWARE_OUTPUT_BUFFER_FULL          92
#define VOXWARE_USER_ABORTED                93
#define VOXWARE_USER_PAUSED                 94



/*****************************************************************************
**
**  Error return values.
**  All the errors are described in more detail in the file: tvgetstr.c
**
*****************************************************************************/

/* This is the return code for successful functions that work.              */
#define VOX_NO_ERROR                        00000

#define obsERR_BITS_PER_SAMPLE              101
#define obsERR_SAMPLE_RATE                  102
#define VOXERR_FORMAT_PCM                   103
#define VOXERR_NOT_MONO                     104
#define VOXERR_VOXWARE_DATA_POINTER_NULL    105
#define VOXERR_VOXWARE_DATA_SIZE            106
#define VOXERR_VOX_FILE_INFO_POINTER_NULL   107
#define VOXERR_VOX_FILE_INFO_SIZE           108
#define VOXERR_VOX_VERSION_POINTER_NULL     109
#define VOXERR_VOX_VERSION_SIZE             110
#define VOXERR_VOX_VOICE_POINTER_NULL       111
#define VOXERR_VOX_VOICE_NAME_NULL          112
#define VOXERR_MORPHIO_POINTER_BAD          113
#define VOXERR_INVALID_INPUT_TYPE           114
#define VOXERR_INVALID_OUTPUT_TYPE          115
#define VOXERR_INPUT_HANDLER                116
#define VOXERR_OUTPUT_HANDLER               117
#define VOXERR_PRIME_TIME                   118
#define VOXERR_WARP_2_BIG                   119
#define VOXERR_WARP_2_SMALL                 120
#define VOXERR_ABS_PITCH_2_BIG              121
#define VOXERR_ABS_PITCH_2_SMALL            122
#define VOXERR_REL_PITCH_2_BIG              123
#define VOXERR_REL_PITCH_2_SMALL            124
#define VOXERR_CODEC_UNKNOWN                125
#define VOXERR_INPUT_BYTES_PER_SAMPLE       126
#define VOXERR_OUTPUT_BYTES_PER_SAMPLE      127
#define VOXERR_FORMAT_VOX                   128
#define VOXERR_UNKNOWN_ATTRIBUTE            129
#define VOXERR_VWD_OR_VCB_IS_NULL           130
#define VOXERR_NO_MARKERS_IN_INPUT_FILE     131
#define VOXERR_BAD_SRC_4_MARKER_INPUT       132
#define VOXERR_UNSUPPORTED_MARKER_CHUNK     133
#define VOXERR_INVALID_MARKER_SELECTOR      134
#define VOXERR_NO_INPUT_SAMPLE_SIZE         135
#define VOXERR_NO_INPUT_SAMPLING_RATE       136
#define VOXERR_BAD_INPUT_SAMPLING_RATE      137
#define VOXERR_BAD_OUTPUT_SAMPLING_RATE     138

/* A spot check of your machine and system software revealed a slight problem. */
/* These are MacOS ONLY errors: */
#define VOXERR_VALIDATE_NO_GESTALT          139
#define VOXERR_VALIDATE_CPU_OLD_AS_DIRT     140
#define VOXERR_VALIDATE_NO_FPU              141
#define VOXERR_VALIDATE_FILE_MGR_TOO_OLD    142
#define VOXERR_VALIDATE_NO_NOTIFICATION_MGR 143
#define VOXERR_VALIDATE_YIKES_NO_SOUND_MGR  144
#define VOXERR_VALIDATE_U_LACK_16BIT_SND    145
#define VOXERR_VALIDATE_SND_MGR_NOT_CURRENT 146

#define VOXERR_DONT_GIVE_INPUT_SAMPLE_RATE  147
#define VOXERR_DONT_GIVE_INPUT_SAMPLE_SIZE  148
#define VOXERR_NO_SAMPLE_RATE_FOR_VOX       149
#define VOXERR_NO_SAMPLE_SIZE_FOR_VOX       150
#define VOXERR_EFFECTS_ARE_NOT_SUPPORTED    151
#define VOXERR_FX_R_4_DECOMPRESSION_ONLY    152
#define VOXERR_ONLY_RT_8K_CODEC_AVAILABLE   153
#define VOXERR_INVALID_MARKER_SIZEOF        154
#define VOXERR_INVALID_VCB                  155
#define VOXERR_INVALID_OUTPUT_VARS          156
#define VOXERR_INVALID_INPUT_VARS           157
#define VOXERR_ABS_GAIN_2_BIG               158
#define VOXERR_ABS_GAIN_2_SMALL             159
#define VOXERR_REL_GAIN_2_BIG               160
#define VOXERR_REL_GAIN_2_SMALL             161
#define VOXERR_VOXWARE_ALREADY_INITIALIZED  162
#define VOXERR_MUST_PLAY_TO_LOCATION_SOUND  163 // new, not yet in manual
#define VOXERR_MUST_CALL_DCMP_TOOLVOX_PLAY  164 // new, not yet in manual
#define VOXERR_FPU_DETECT                   165 // new, not yet in manual
#define VOXERR_IDENTIFYING_THE_CPU          166 // new, not yet in manual
#define obsERR_IDENTIFYING_THE_OS           167 // bozo sabotage error... never use this.
#define VOXERR_CODEC_NOT_AVAILABLE          168 // new, not yet in manual
#define obsERR_DONT_GIVE_CODEC              169 // bozo sabotage error... never use this.
#define VOXERR_DONT_GIVE_CMP_SETTINGS       170 // new, not yet in manual
#define VOXERR_LINK_WITH_NATIVE_CODE        171 // mac only: new, not yet in manual


/* File I/O error codes.                                                    */
#define obsERR_DATA_CHUNK_SEEK              201
#define obsERR_FMT_CHUNK_READ               202
#define VOXERR_FMT_CHUNK_SIZE               203
#define VOXERR_RIFF_CHUNK_READ              204
#define VOXERR_VOX_HEADER_FLAG              205
#define VOXERR_VOX_HEADER_SIZE              206
#define obsERR_VOX_INIT_READ                207
#define obsERR_VOX_INIT_WRITE               208
#define obsERR_VOX_OPEN                     209
#define obsERR_VOX_READ                     210
#define obsERR_VOX_WRITE                    211
#define obsERR_WAVE_CKID                    212
#define obsERR_WAVE_INIT_READ               213
#define obsERR_WAVE_INIT_WRITE              214
#define obsERR_WAVE_OPEN                    215
#define obsERR_WAVE_READ                    216
#define obsERR_WAVE_WRITE                   217
#define VOXERR_VFONT_OPEN                   218                                 
#define VOXERR_VFONT_READ                   219
#define VOXERR_VFONT_WRITE                  220
#define VOXERR_ENDOFFILE_REACHED            221
#define VOXERR_READING_FROM_FILE            222
#define VOXERR_WRITING_TO_FILE              223
#define VOXERR_BAD_PATH_TO_FILE             224
#define VOXERR_SET_FPOS                     225
#define VOXERR_OPENING_INPUT_FILE           226
#define VOXERR_OPENING_OUTPUT_FILE          227
#define VOXERR_CLOSING_INPUT_FILE           228
#define VOXERR_CLOSING_OUTPUT_FILE          229
#define VOXERR_READING_MARKER               230
#define VOXERR_SEEKING_TO_MARKER_CHUNK      231
#define VOXERR_MARKER_SEEK_RESET            232
#define VOXERR_FAILED_SEEK_TO_MARKER        233
#define VOXERR_REOPENING_MARKER_LOG         234
#define VOXERR_OPENING_MARKER_LOG           235
#define VOXERR_FAILED_TO_GET_EOF            236
#define VOXERR_SEEKING_PAST_HEADER          237
#define VOXERR_ENDOFBUFFER_REACHED          238


/* Format/Header error codes                                                */
#define WheReIsErOrNuMbErThReEoOnE          301     //###lee
#define VOXERR_UNKNOWN_HEADER_FORMAT        302
#define VOXERR_WE_DONT_SUPPORT_RIFX         303
#define VOXERR_WAVE_DOESNT_START_RIFF       304
#define VOXERR_CANT_SURF_THIS_WAVE          305
#define VOXERR_AIFF_COULDNT_FIND_ALL_CHUNKS 306
#define VOXERR_HDR_MISSING_BITS_OF_DATA     307
#define VOXERR_NOT_A_COMPRESSED_HEADER      308
#define VOXERR_NO_CODECID_FOR_HEADER        309     // new MJ51
#define VOXERR_UNKNOWN_CODECID_IN_HEADER    310     // new MJ67


/* Memory allocation error codes.                                           */
#define VOXERR_PLAYBACK_MEMORY              401
#define VOXERR_VOXSTRUCT_MEMORY             402
#define obsERR_VOX_DATA_MEMORY              403
#define obsERR_WAVE_DATA_MEMORY             404
#define VOXERR_WAVEHDR_MEMORY               405
#define VOXERR_VER_INFO_MEMORY              406
#define VOXERR_MORPHIO_MEMORY               407
#define VOXERR_INPUT_VARS_MEMORY            408
#define VOXERR_OUTPUT_VARS_MEMORY           409
#define VOXERR_RECORD_MEMORY                410
#define VOXERR_MARKERS_MEMORY               411
#define VOXERR_FILELINK_MEMORY              412
#define VOXERR_READ_COMPLETION_MEMORY       413
#define VOXERR_INPUT_DISKIO_MEMORY          414
#define VOXERR_OUTPUT_DISKIO_MEMORY         415
#define VOXERR_FLUSH_BUFFER_MEMORY          416
#define VOXERR_FUNCIN_BUFFER_MEMORY         417
#define VOXERR_FUNCOUT_BUFFER_MEMORY        418
#define VOXERR_DEFERRED_TASK_PROC_MEMORY    419
#define VOXERR_DEFERRED_TASK_MEMORY         420
#define VOXERR_SOUND_CALLBACK_PROC_MEMORY   421
#define VOXERR_NOTIFICATION_REC_MEMORY      422
#define VOXERR_PLAYBACK_VARS_MEMORY         423
#define VOXERR_PLAYBACK_BUFFER_MEMORY       424
#define VOXERR_ORD_MARKERS_MEMORY           425
#define VOXERR_MARKERS_TEMP_CHUNK_MEMORY    426
#define VOXERR_WAVE_MARKER_CHUNK_MEMORY     427
#define VOXERR_GENERIC_MARKERS_MEMORY       428
#define VOXERR_TEMP_INPUT_BUFFER_MEMORY     429


/* General system error codes.                                              */
#define VOXERR_BREW_BLACK_ART               501
#define VOXERR_COMPRESSION                  502
#define VOXERR_CREATE_WINDOW                503
#define VOXERR_DECOMPRESSION                504
#define VOXERR_WAVEOUT_OPEN                 505
#define VOXERR_PREPARE_HDR                  506
#define VOXERR_WAVEOUT_WRITE                507
#define VOXERR_WAVEIN_ADD_BUFFER            508
#define VOXERR_WAVEIN_OPEN                  509
#define VOXERR_WAVEIN_START                 510
#define VOXERR_FUNCTION_EXPIRED             511
#define VOXERR_NOT_ENOUGH_DATA_TO_COMPRESS  512
#define VOXERR_COMPRESS_BUFFER              513
#define VOXERR_PROCESSING_ABORTED           514 // new, not yet in manual
#define VOXERR_PAUSING                      515 // new MJ44 -- not yet in manual
#define VOXERR_RESUMING                     516 // new MJ44 -- not yet in manual
#define VOXERR_FLUSHCMD                     517 // new MJ44 -- not yet in manual
#define VOXERR_QUIETCMD                     518 // new MJ44 -- not yet in manual
#define VOXERR_BUFFERCMD                    519 // new MJ44 -- not yet in manual
#define VOXERR_CALLBACKCMD                  520 // new MJ44 -- not yet in manual
#define VOXERR_DTINSTALL_FAILED             521 // new MJ44 -- not yet in manual


/* Errors that occur using the VoiceFonts API.                              */
#define VOXERR_VFONT_FILE_NOT_FOUND         601
#define VOXERR_VFONT_WRONGNAME              602
#define VOXERR_VFONT_DELETE                 603
#define VOXERR_VFONT_FILE_FORMAT            604
#define VOXERR_MORPHIO_HANDLE_INVALID       605
#define VOXERR_VFII_UNKNOWN_VOICE_FONT      606 // new MJ50 -- not yet in manual
#define VOXERR_VFII_UNKNOWN_VF_CHUNK_SIZE   607 // new MJ50 -- not yet in manual







/*****************************************************************************
**
**  Header routines to convert from digitized speech to VOX data.  They all 
**  take PCM data as input and output compressed VOX data.
**
*****************************************************************************/


/* New calls that have the properties of all of the other calls.  The routine
** use the dwInputType and dwOutputType fields to tell how to process the data.
** This makes the older calls obsolete (yet still supported).
*/
VOXWARE_RETCODE VOXAPI cmpToolVoxRecord(LPVOXWARE_DATA lpVoxwareData);
VOXWARE_RETCODE VOXAPI cmpToolVoxCompress(LPVOXWARE_DATA lpVoxwareData);


/* These routines are used for low-level compression.                       */ 
VOXWARE_RETCODE VOXAPI cmpVoxInit(LPVOXWARE_DATA lpVoxwareData);
VOXWARE_RETCODE VOXAPI cmpVoxConvert(LPVOXWARE_DATA lpVoxwareData);
VOXWARE_RETCODE VOXAPI cmpVoxFree(LPVOXWARE_DATA lpVoxwareData);


/* Older functions that are only here for backwards compatibility. */
VOXWARE_RETCODE VOXAPI cmpFileToVoxFile(LPVOXWARE_DATA lpVoxwareData);
VOXWARE_RETCODE VOXAPI cmpFileToVoxBuffer(LPVOXWARE_DATA lpVoxwareData);
VOXWARE_RETCODE VOXAPI cmpBufferToVoxFile(LPVOXWARE_DATA lpVoxwareData);




/*****************************************************************************
**
**  Header routines to convert from VOX data to digitized speech.  They all 
**  take VOX data as input (either as VOX file or a buffer of VOX data) and 
**  output decompressed PCM data.  There is also a routine to play VOX or PCM
**  data.
**
*****************************************************************************/

VOXWARE_RETCODE VOXAPI dcmpToolVoxPlay(LPVOXWARE_DATA lpVoxwareData);
VOXWARE_RETCODE VOXAPI dcmpToolVoxDecompress(LPVOXWARE_DATA lpVoxwareData);
VOXWARE_RETCODE VOXAPI dcmpToolVoxStop(LPVOXWARE_DATA lpVoxwareData);           		// MacOS only
VOXWARE_RETCODE VOXAPI dcmpToolVoxPause(LPVOXWARE_DATA lpVoxwareData);                  // Hidden API don't use.
VOXWARE_RETCODE VOXAPI dcmpToolVoxResume(LPVOXWARE_DATA lpVoxwareData);                 // Hidden API don't use.
VOXWARE_RETCODE VOXAPI dcmpSetBitOffset(LPVOXWARE_DATA lpVoxwareData, short newOffset); // Hidden API don't use.


/* These routines are used for low-level decompression.                     */ 
VOXWARE_RETCODE VOXAPI dcmpVoxInit(LPVOXWARE_DATA lpVoxwareData);
VOXWARE_RETCODE VOXAPI dcmpVoxConvert(LPVOXWARE_DATA lpVoxwareData);
VOXWARE_RETCODE VOXAPI dcmpVoxFree(LPVOXWARE_DATA lpVoxwareData);


/* Older functions that are only here for backwards compatibility. */
VOXWARE_RETCODE VOXAPI dcmpVoxFileToFile(LPVOXWARE_DATA lpVoxwareData);
VOXWARE_RETCODE VOXAPI dcmpVoxFileToBuffer(LPVOXWARE_DATA lpVoxwareData);
VOXWARE_RETCODE VOXAPI dcmpVoxBufferToFile(LPVOXWARE_DATA lpVoxwareData);
VOXWARE_RETCODE VOXAPI dcmpPlayVoxFile(LPVOXWARE_DATA lpVoxwareData);
VOXWARE_RETCODE VOXAPI dcmpPlayVoxBuffer(LPVOXWARE_DATA lpVoxwareData);




/*****************************************************************************
**
**  These utility routines can be used to get information about the speed of 
**  the ToolVox compression or to get file information about an AIFF or VOX 
**  file.  There are also routines to get and set different attributes of the
**  ToolVox API.             
**
*****************************************************************************/

VOXWARE_RETCODE VOXAPI utilGetFileInfo(LPVOXWARE_DATA lpVoxwareData);
VOXWARE_RETCODE VOXAPI utilGetVersionInfo(LPVOXWARE_DATA lpVoxwareData);
VOXWARE_RETCODE VOXAPI utilToolVoxGetAttribute(
                            LPVOXWARE_DATA lpVoxwareData,
                            LPVOX_COMMAND lpCommand);
VOXWARE_RETCODE VOXAPI utilToolVoxSetAttribute(
                            LPVOXWARE_DATA lpVoxwareData,
                            LPVOX_COMMAND lpCommand);




/*****************************************************************************
**
**  This prototype is for the callback function that can be passed to ToolVox 
**  in the VOXWARE_DATA structure.  If you create this function, it must be
**  in a FIXED/Locked segment!
**
*****************************************************************************/

VOXAPI_CALLBACK VoxFunc(
                    unsigned short wVox, 
                    unsigned short wMessage, 
                    LPVOXWARE_DATA lpVoxwareData);




#ifndef VOXWARE_SUN
    #if PRAGMA_ALIGN_SUPPORTED
        #pragma options align=reset
    #elif VOXWARE_HP
        #pragma HP_ALIGN HPUX_NATURAL
    #else
        #pragma pack()
    #endif
#endif



#ifdef __cplusplus
}
#endif



#endif /*__TOOLVOX_H_*/