您的位置:首页 > 编程语言 > C语言/C++

C++数据类型的熟悉

2015-07-26 23:36 288 查看
******************************************

typedef signed char int8_t;

typedef signed short int16_t;

typedef signed int int32_t;

typedef __int64 int64_t;

typedef unsigned char uint8_t;

typedef unsigned short uint16_t;

typedef unsigned int uint32_t;

typedef unsigned __int64 uint64_t;

******************************************

short : C语言中,short是定义一种整型变量家族的一种。例如short i;表示定义一个短整型的变量i。

__int64:64位整型的定义方式有long long和__int64两种(VC还支持_int64)

// iLbc_test.cpp : 定义控制台应用程序的入口点。

//

#include "stdafx.h"

#include <string.h>

#include <Windows.h>

#include <ilbc.h>

#define BLOCKL_MAX 240

#define ILBCNOOFWORDS_MAX 25

int _tmain(int argc, _TCHAR* argv[])

{

FILE *ifileid,*efileid,*ofileid, *cfileid; //定义四个文件

int16_t data[BLOCKL_MAX]; //signed short data[240]

int16_t encoded_data[ILBCNOOFWORDS_MAX], decoded_data[BLOCKL_MAX]; //signed short data[25], //signed short data[240]

int len;

short pli, mode;

int blockcount = 0;

int packetlosscount = 0;

int frameLen;

int16_t speechType;

iLBC_encinst_t *Enc_Inst;//编码结构体指针

iLBC_decinst_t *Dec_Inst;//解码结构体指针

//输入文件,PCM格式

char* cpInput ="audio_src.pcm";

if ( (ifileid=fopen(cpInput ,"rb")) == NULL)

{

printf("Cannot open input file %s\n", cpInput);

}

//编码输出

char* cpOutput ="audio_src_en.ilbc";

if ( (efileid=fopen(cpOutput,"wb")) == NULL)

{

printf("Cannot open encoded file file %s\n",cpOutput);

}

//解码输出

char* cpDeout ="audio_src-de.pcm";

if ( (ofileid=fopen(cpDeout,"wb")) == NULL)

{

printf("Cannot open decoded file %s\n",cpDeout);

}

// /* Create structs */

WebRtcIlbcfix_EncoderCreate(&Enc_Inst); //构造结构体

WebRtcIlbcfix_DecoderCreate(&Dec_Inst);

/* Initialization */

mode = 20; //(20ms或者30ms)

WebRtcIlbcfix_EncoderInit(Enc_Inst, mode); //初始化

WebRtcIlbcfix_DecoderInit(Dec_Inst, mode);

frameLen = mode*8;

/* loop over input blocks */ //循环编解码处理

//数据格式流向:File->signed short数组中,->signed short数组

// ifileid-> data encoded_data

while (((int16_t)fread(data,sizeof(int16_t),frameLen,ifileid))==frameLen) //fread(signed short*,int,int,File *);

{

blockcount++; //int

/* encoding */

fprintf(stderr, "--- Encoding block %i --- ",blockcount);

len=WebRtcIlbcfix_Encode(Enc_Inst, data, (int16_t)frameLen, encoded_data);

fprintf(stderr, "\r");

/* write byte file */

if (fwrite(encoded_data, sizeof(int16_t),

((len+1)/sizeof(int16_t)), efileid) !=

(size_t)(((len+1)/sizeof(int16_t)))) {

return -1;

}

/* get channel data if provided */

if (argc==6) {

if (fread(&pli, sizeof(int16_t), 1, cfileid)) {

if ((pli!=0)&&(pli!=1)) {

fprintf(stderr, "Error in channel file\n");

return 0;

}

if (pli==0) {

/* Packet loss -> remove info from frame */

memset(encoded_data, 0,sizeof(int16_t)*ILBCNOOFWORDS_MAX);

packetlosscount++;

}

} else {

fprintf(stderr, "Error. Channel file too short\n");

return 0;

}

} else {

pli=1;

}

/* decoding */

//数据格式流向:File->signed short数组中,->signed short数组->signed short数组

// ifileid-> data encoded_data ->decoded_data

fprintf(stderr, "--- Decoding block %i --- ",blockcount);

if (pli==1)

{

len=WebRtcIlbcfix_Decode(Dec_Inst, encoded_data,

(int16_t)len, decoded_data,&speechType);

} else {

len=WebRtcIlbcfix_DecodePlc(Dec_Inst, decoded_data, 1);

}

fprintf(stderr, "\r");

/* write output file */

if (fwrite(decoded_data, sizeof(int16_t), len,

ofileid) != (size_t)len) {

return -1;

}

}

/* close files */

fclose(ifileid);

fclose(efileid);

fclose(ofileid);

if (argc==6) {

fclose(cfileid);

}

/* Free structs */

WebRtcIlbcfix_EncoderFree(Enc_Inst);

WebRtcIlbcfix_DecoderFree(Dec_Inst);

printf("\nDone with simulation\n\n");

getchar();

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: