⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hvdi.h

📁 由HawK提供的语音压缩软件
💻 H
字号:
/*
  HawkVoice Direct Interface (HVDI) cross platform network voice library
  Copyright (C) 2001-2004 Phil Frisbie, Jr. (phil@hawksoft.com)

  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Library General Public
  License as published by the Free Software Foundation; either
  version 2 of the License, or (at your option) any later version.
  
  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Library General Public License for more details.
    
  You should have received a copy of the GNU Library General Public
  License along with this library; if not, write to the
  Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  Boston, MA  02111-1307, USA.
      
  Or go to http://www.gnu.org/copyleft/lgpl.html
*/

#ifndef HVDI_H
#define HVDI_H

#include "hawklib.h"
#include "hcrypt.h"

#ifdef __cplusplus
extern "C" {
#endif


#define HVDI_MAJOR_VERSION 0
#define HVDI_MINOR_VERSION 91
#define HVDI_VERSION_STRING "HVDI 0.91 beta"


#ifndef NL_INVALID
#define NL_INVALID              (-1)
#define NL_FALSE                (0)
#define NL_TRUE                 (1)
#endif

#ifdef HVDI_OLD_API
#define hvdiCreateEncoderState  hvdiNewEncState
#define hvdiCreateDecoderState  hvdiNewDecState
#define hvdiFreeEncoderState    hvdiDeleteEncState
#define hvdiFreeDecoderState    hvdiDeleteDecState
#define hvdiSetCodec(x, y)      hvdiEncStateSetCodec(y, x)
#define hvdiIsVoicePacket       hvdiPacketIsVoice       
#define hvdiDecodePacket        hvdiPacketDecode
#define hvdiEncodePacket(a, b, c, d, e, f) hvdiPacketEncode(c, b, a, d, e, f)
#endif

/* We will use HVDI or hvdi to prefix all HawkVoiceDI defines and functions */

typedef struct hvdi_vox_st hvdi_vox;
typedef struct hvdi_enc_state_st hvdi_enc_state;
typedef struct hvdi_dec_state_st hvdi_dec_state;
typedef struct hvdi_agc_st hvdi_agc;
typedef struct hvdi_rate_st hvdi_rate;


/* The basic codecs, from hawkvoice.h */
#define HV_2_4K_CODEC       0x0001  /* LPC-10 2.4 Kbps codec */
#define HV_4_8K_CODEC       0x0002  /* LPC 4.8 Kbps codec */
#define HV_13_2K_CODEC      0x0003  /* GSM 13.2 Kbps codec */
#define HV_32K_CODEC        0x0004  /* Intel/DVI ADPCM 32 Kbps codec */
#define HV_64K_CODEC        0x0005  /* G.711 u-law 64 Kbps codec */
#define HV_1_4K_CODEC       0x0006  /* OpenLPC 1.4 Kbps codec */
#define HV_1_8K_CODEC       0x0007  /* OpenLPC 1.8 Kbps codec */
#define HV_4_5K_CODEC       0x0008  /* CELP 4.5 Kbps codec */
#define HV_3_0K_CODEC       0x0009  /* CELP 3.0 Kbps codec */
#define HV_2_3K_CODEC       0x000a  /* CELP 2.3 Kbps codec */
#define HV_VBR_2_4K_CODEC   0x000b  /* Variable Bit Rate LPC-10 2.4 Kbps max codec*/

#define HV_SILENCE_CODEC    0x001f  /* Silence codec, used internally */

/* Alternate codec names */
#define HV_LPC10_CODEC      HV_2_4K_CODEC
#define HV_LPC_CODEC        HV_4_8K_CODEC
#define HV_GSM_CODEC        HV_13_2K_CODEC
#define HV_ADPCM_32_CODEC   HV_32K_CODEC
#define HV_PCM_64_CODEC     HV_64K_CODEC
#define HV_G_711_CODEC      HV_64K_CODEC
#define HV_ULAW_CODEC       HV_64K_CODEC
#define HV_LPC_1_4_CODEC    HV_1_4K_CODEC
#define HV_LPC_1_8_CODEC    HV_1_8K_CODEC
#define HV_CELP_4_5_CODEC   HV_4_5K_CODEC
#define HV_CELP_3_0_CODEC   HV_3_0K_CODEC
#define HV_CELP_2_3_CODEC   HV_2_3K_CODEC
#define HV_VBR_LPC10_CODEC  HV_VBR_2_4K_CODEC

/* VOX options */
/* How many samples of silence to wait after voice stops. */
/* You can use any value, these are just for reference. */
#define HVDI_VOX_FAST       4000    /* 1/2 second */
#define HVDI_VOX_MEDIUM     8000    /* 1 second */
#define HVDI_VOX_SLOW      12000    /* 1 1/2 seconds */

/* hvdiHint options*/
#define HVDI_NORMAL         0x0001  /* Normal encoding/decoding speed, best quality, arg ignored */
#define HVDI_FAST           0x0002  /* Faster encoding/decoding, some loss of quality 
                                       with some codecs, arg ignored */
#define HVDI_FASTEST        0x0003  /* Fastest possible encoding/decoding, more loss of quality,
                                       arg ignored */
#define HVDI_CELP_CODEBOOK  0x0004  /* Directly change the CELP encoding codebook length, arg
                                       valid range 32 to 256 */
#define HVDI_SEQUENCE       0x0005  /* Determines if the sequence number is sent in the packet.
                                       To disable, arg = 0, to enable (default), arg != 0 */
#define HVDI_AUTO_VOX       0x0006  /* Enables automatic VOX processing inside hvdiPacketEncode.
                                       Default VOX setting is 300 unless first set by HVD_VOX_LEVEL */
#define HVDI_VOX_LEVEL      0x0007  /* Sets the threshhold level when using HVDI_AUTO_VOX, arg
                                       valid range 0 to 1000, default 300 */
#define HVDI_VOX_SPEED      0x0008  /* Sets the VOX speed, default HVDI_VOX_FAST */
#define HVDI_COMFORT_NOISE  0x0009  /* Enables sending silence packets by the encoder, and creates
                                       white noise in the decoder */
#define HVDI_NOISE_LEVEL    0x000a  /* Sets the decoder comfort noise level, 0 to 1000, default 100 */

/* HawkVoiceDI API */

HL_EXP hvdi_enc_state* HL_APIENTRY hvdiNewEncState(void);

HL_EXP hvdi_dec_state* HL_APIENTRY hvdiNewDecState(void);

HL_EXP void      HL_APIENTRY hvdiDeleteEncState(hvdi_enc_state *state);

HL_EXP void      HL_APIENTRY hvdiDeleteDecState(hvdi_dec_state *state);

HL_EXP int       HL_APIENTRY hvdiEncStateSetCodec(hvdi_enc_state *state, unsigned char codec);

HL_EXP unsigned char HL_APIENTRY hvdiDecStateGetCodec(hvdi_dec_state *state);

HL_EXP int       HL_APIENTRY hvdiPacketIsVoice(unsigned char *packet, int length);

HL_EXP int       HL_APIENTRY hvdiPacketDecode(unsigned char *packet, int paclen, short *buffer,
                                              int buflen, hcrypt_key *key, hvdi_dec_state *state);

HL_EXP int       HL_APIENTRY hvdiPacketEncode(unsigned char *packet, int buflen, short *buffer,
                                              int paclen, hcrypt_key *key, hvdi_enc_state *state);

HL_EXP hvdi_vox* HL_APIENTRY hvdiNewVOX(int vox_speed, int noisethreshold);

HL_EXP int       HL_APIENTRY hvdiVOX(hvdi_vox *vox, short *buffer, int buflen);

HL_EXP void      HL_APIENTRY hvdiDeleteVOX(hvdi_vox *vox);

HL_EXP hvdi_rate* HL_APIENTRY hvdiNewRate(int inrate, int outrate);

HL_EXP void      HL_APIENTRY hvdiRateFlow(hvdi_rate *rate, short *inbuf, short *outbuf, int *inlen, int *outlen);

HL_EXP void      HL_APIENTRY hvdiDeleteRate(hvdi_rate *rate);

HL_EXP hvdi_agc* HL_APIENTRY hvdiNewAGC(float level);

HL_EXP void      HL_APIENTRY hvdiAGC(hvdi_agc *agc, short *buffer, int len);

HL_EXP void      HL_APIENTRY hvdiDeleteAGC(hvdi_agc *agc);

HL_EXP void      HL_APIENTRY hvdiMix(short *outbuf, short **inbuf, int number, int inlen);

HL_EXP void      HL_APIENTRY hvdiHint(int name, int arg);

#ifdef __cplusplus
}  /* extern "C" */
#endif

#endif /* HVDI_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -