218 lines
8.9 KiB
C
218 lines
8.9 KiB
C
/*
|
|
* @DEC_COPYRIGHT@
|
|
*/
|
|
/*
|
|
* HISTORY
|
|
* $Log: SA.h,v $
|
|
* Revision 1.1.8.4 1996/11/14 21:49:22 Hans_Graves
|
|
* Added SaDecompressEx() for AC3 multichannels.
|
|
* [1996/11/14 21:46:20 Hans_Graves]
|
|
*
|
|
* Revision 1.1.8.3 1996/11/08 21:50:34 Hans_Graves
|
|
* Added AC3 enum types.
|
|
* [1996/11/08 21:16:32 Hans_Graves]
|
|
*
|
|
* Revision 1.1.8.2 1996/07/19 02:11:00 Hans_Graves
|
|
* Added SA_PARAM_DEBUG.
|
|
* [1996/07/19 01:22:50 Hans_Graves]
|
|
*
|
|
* Revision 1.1.6.5 1996/04/23 21:01:39 Hans_Graves
|
|
* Added protos for SaDecompressQuery() and SaCompressQuery()
|
|
* [1996/04/23 20:57:15 Hans_Graves]
|
|
*
|
|
* Revision 1.1.6.4 1996/04/15 14:18:34 Hans_Graves
|
|
* Change proto for SaCompress() - returns bytes processed
|
|
* [1996/04/15 14:10:30 Hans_Graves]
|
|
*
|
|
* Revision 1.1.6.3 1996/04/10 21:47:05 Hans_Graves
|
|
* Added PARAMs. Replaced externs with EXTERN.
|
|
* [1996/04/10 21:22:49 Hans_Graves]
|
|
*
|
|
* Revision 1.1.6.2 1996/03/29 22:20:59 Hans_Graves
|
|
* Changed include <mme/mmsystem.h> to <mmsystem.h>
|
|
* [1996/03/29 22:16:43 Hans_Graves]
|
|
*
|
|
* Revision 1.1.4.3 1996/02/06 22:53:52 Hans_Graves
|
|
* Added PARAM enums
|
|
* [1996/02/06 22:18:04 Hans_Graves]
|
|
*
|
|
* Revision 1.1.4.2 1996/01/15 16:26:21 Hans_Graves
|
|
* Added prototypes for SaSetDataDestination() and SaSetBitrate()
|
|
* [1996/01/15 15:42:41 Hans_Graves]
|
|
*
|
|
* Revision 1.1.2.8 1995/09/14 17:28:10 Bjorn_Engberg
|
|
* Ported to NT
|
|
* [1995/09/14 17:17:18 Bjorn_Engberg]
|
|
*
|
|
* Revision 1.1.2.7 1995/07/21 17:41:00 Hans_Graves
|
|
* Moved Callback related stuff to SC.h
|
|
* [1995/07/21 17:27:29 Hans_Graves]
|
|
*
|
|
* Revision 1.1.2.6 1995/07/17 22:01:30 Hans_Graves
|
|
* Defined SaBufferInfo_t as ScBufferInfo_t.
|
|
* [1995/07/17 21:41:54 Hans_Graves]
|
|
*
|
|
* Revision 1.1.2.5 1995/06/27 17:40:59 Hans_Graves
|
|
* Added include <mme/mmsystem.h>.
|
|
* [1995/06/27 17:39:26 Hans_Graves]
|
|
*
|
|
* Revision 1.1.2.4 1995/06/27 13:54:20 Hans_Graves
|
|
* Added SA_GSM_DECODE and SA_GSM_ENCODE
|
|
* [1995/06/26 21:01:12 Hans_Graves]
|
|
*
|
|
* Revision 1.1.2.3 1995/06/09 18:33:29 Hans_Graves
|
|
* Added SaGetInputBitstream() prototype.
|
|
* [1995/06/09 17:41:59 Hans_Graves]
|
|
*
|
|
* Revision 1.1.2.2 1995/05/31 18:09:17 Hans_Graves
|
|
* Inclusion in new SLIB location.
|
|
* [1995/05/31 15:19:33 Hans_Graves]
|
|
*
|
|
* Revision 1.1.2.3 1995/04/17 18:26:57 Hans_Graves
|
|
* Added ENCODE Codec defs
|
|
* [1995/04/17 18:26:33 Hans_Graves]
|
|
*
|
|
* Revision 1.1.2.2 1995/04/07 19:35:31 Hans_Graves
|
|
* Inclusion in SLIB
|
|
* [1995/04/07 19:22:48 Hans_Graves]
|
|
*
|
|
* $EndLog$
|
|
*/
|
|
/*****************************************************************************
|
|
** Copyright (c) Digital Equipment Corporation, 1995 **
|
|
** **
|
|
** All Rights Reserved. Unpublished rights reserved under the copyright **
|
|
** laws of the United States. **
|
|
** **
|
|
** The software contained on this media is proprietary to and embodies **
|
|
** the confidential technology of Digital Equipment Corporation. **
|
|
** Possession, use, duplication or dissemination of the software and **
|
|
** media is authorized only pursuant to a valid written license from **
|
|
** Digital Equipment Corporation. **
|
|
** **
|
|
** RESTRICTED RIGHTS LEGEND Use, duplication, or disclosure by the U.S. **
|
|
** Government is subject to restrictions as set forth in Subparagraph **
|
|
** (c)(1)(ii) of DFARS 252.227-7013, or in FAR 52.227-19, as applicable. **
|
|
******************************************************************************/
|
|
|
|
|
|
#ifndef _SA_H_
|
|
#define _SA_H_
|
|
|
|
#ifdef WIN32
|
|
#include <windows.h> /* Windows NT */
|
|
#endif
|
|
#include <mmsystem.h> /* needed for WAVEFORMATEX structure def */
|
|
|
|
#include "SC.h"
|
|
|
|
typedef enum {
|
|
SA_MPEG_DECODE = 102,
|
|
SA_MPEG_ENCODE = 103,
|
|
SA_PCM_DECODE = 104,
|
|
SA_PCM_ENCODE = 105,
|
|
SA_GSM_DECODE = 106,
|
|
SA_GSM_ENCODE = 107,
|
|
SA_AC3_DECODE = 108,
|
|
SA_AC3_ENCODE = 109,
|
|
SA_G723_DECODE = 110,
|
|
SA_G723_ENCODE = 111,
|
|
SA_TMP_DECODE = 200, /* temp - used for testing */
|
|
SA_TMP_ENCODE = 201,
|
|
} SaCodecType_e;
|
|
|
|
#define SA_USE_SAME STREAM_USE_SAME
|
|
#define SA_USE_FILE STREAM_USE_FILE
|
|
#define SA_USE_BUFFER_QUEUE STREAM_USE_QUEUE
|
|
#define SA_USE_BUFFER STREAM_USE_BUFFER
|
|
|
|
/*
|
|
** Parameters
|
|
*/
|
|
typedef enum {
|
|
SA_PARAM_NATIVEFORMAT, /* native/preferred decompressed format (FOURCC) */
|
|
SA_PARAM_BITRATE, /* bitrate - bits per second */
|
|
SA_PARAM_CHANNELS, /* channels - 1=mono, 2=stereo, 4/5=surround */
|
|
SA_PARAM_AUDIOLENGTH, /* milliseconds of audio */
|
|
SA_PARAM_SAMPLESPERSEC, /* samples per second (8000, 11025, 22050, etc.)
|
|
SA_PARAM_BITSPERSAMPLE, /* bits per sample (8 or 16) */
|
|
SA_PARAM_TIMECODE, /* audio time code */
|
|
SA_PARAM_MPEG_LAYER, /* MPEG Layer: I, II, or III */
|
|
SA_PARAM_PSY_MODEL, /* Psy Acoustic Model */
|
|
SA_PARAM_ALGFLAGS, /* Algorithm flags */
|
|
SA_PARAM_QUALITY, /* Quality: 0=worst 99>=best */
|
|
SA_PARAM_FASTDECODE, /* Fast decode desired */
|
|
SA_PARAM_FASTENCODE, /* Fast encode desired */
|
|
SA_PARAM_DEBUG, /* Setup debug */
|
|
} SaParameter_t;
|
|
|
|
/*
|
|
** Type definitions
|
|
*/
|
|
typedef int SaStatus_t;
|
|
typedef void *SaHandle_t;
|
|
typedef ScCallbackInfo_t SaCallbackInfo_t;
|
|
|
|
/*
|
|
** Store basic info for user about the codec
|
|
*/
|
|
typedef struct SaInfo_s {
|
|
SaCodecType_e Type; /* Codec Type */
|
|
char Name[20]; /* Codec name (i.e. "MPEG-Decode") */
|
|
char Description[128]; /* Codec description */
|
|
unsigned int Version; /* Codec version number */
|
|
int CodecStarted; /* SaDecompressBegin/End */
|
|
unsigned int MS; /* Number of milliseconds processed */
|
|
unsigned int NumBytesIn; /* Number of bytes input */
|
|
unsigned int NumBytesOut; /* Number of bytes output */
|
|
unsigned int NumFrames; /* Number of ellapsed frames */
|
|
unsigned long TotalFrames; /* Total number of frames */
|
|
unsigned long TotalMS; /* Total number of milliseconds */
|
|
} SaInfo_t;
|
|
|
|
/***************************** Prototypes ********************************/
|
|
EXTERN SaStatus_t SaOpenCodec (SaCodecType_e CodecType, SaHandle_t *Sah);
|
|
EXTERN SaStatus_t SaCloseCodec (SaHandle_t Sah);
|
|
EXTERN SaStatus_t SaRegisterCallback (SaHandle_t Sah,
|
|
int (*Callback)(SaHandle_t, SaCallbackInfo_t *, SaInfo_t *),
|
|
void *UserData);
|
|
EXTERN ScBitstream_t *SaGetInputBitstream (SaHandle_t Sah);
|
|
EXTERN SaStatus_t SaDecompressQuery(SaHandle_t Sah, WAVEFORMATEX *wfIn,
|
|
WAVEFORMATEX *wfOut);
|
|
EXTERN SaStatus_t SaDecompressBegin (SaHandle_t Sah, WAVEFORMATEX *wfIn,
|
|
WAVEFORMATEX *wfOut);
|
|
EXTERN SaStatus_t SaDecompress (SaHandle_t Sah, u_char *CompData,
|
|
unsigned int CompLen,
|
|
u_char *DcmpData, unsigned int *DcmpLen);
|
|
PRIVATE_EXTERN SaStatus_t SaDecompressEx (SaHandle_t Sah, u_char *CompData,
|
|
unsigned int CompLen,
|
|
u_char **DcmpData, unsigned int *DcmpLen);
|
|
EXTERN SaStatus_t SaDecompressEnd (SaHandle_t Sah);
|
|
EXTERN SaStatus_t SaCompressQuery(SaHandle_t Sah, WAVEFORMATEX *wfIn,
|
|
WAVEFORMATEX *wfOut);
|
|
EXTERN SaStatus_t SaCompressBegin (SaHandle_t Sah, WAVEFORMATEX *wfIn,
|
|
WAVEFORMATEX *wfOut);
|
|
EXTERN SaStatus_t SaCompress (SaHandle_t Sah,
|
|
u_char *DcmpData, unsigned int *DcmpLen,
|
|
u_char *CompData, unsigned int *CompLen);
|
|
EXTERN SaStatus_t SaCompressEnd (SaHandle_t Sah);
|
|
EXTERN SaStatus_t SaSetDataSource(SaHandle_t Sah, int Source, int Fd,
|
|
void *Buffer_UserData, int BufSize);
|
|
EXTERN SaStatus_t SaSetDataDestination(SaHandle_t Sah, int Dest, int Fd,
|
|
void *Buffer_UserData, int BufSize);
|
|
EXTERN ScBitstream_t *SaGetDataSource (SaHandle_t Sah);
|
|
EXTERN ScBitstream_t *SaGetDataDestination(SaHandle_t Sah);
|
|
EXTERN SaStatus_t SaAddBuffer (SaHandle_t Sah, SaCallbackInfo_t *BufferInfo);
|
|
#ifdef MPEG_SUPPORT
|
|
EXTERN SaStatus_t sa_GetMpegAudioInfo(int fd, WAVEFORMATEX *wf,
|
|
SaInfo_t *info);
|
|
#endif /* MPEG_SUPPORT */
|
|
EXTERN SaStatus_t SaSetParamBoolean(SaHandle_t Sah, SaParameter_t param,
|
|
ScBoolean_t value);
|
|
EXTERN SaStatus_t SaSetParamInt(SaHandle_t Sah, SaParameter_t param,
|
|
qword value);
|
|
EXTERN ScBoolean_t SaGetParamBoolean(SaHandle_t Sah, SaParameter_t param);
|
|
EXTERN qword SaGetParamInt(SaHandle_t Sah, SaParameter_t param);
|
|
|
|
#endif _SA_H_
|