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;
}
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;
}
相关文章推荐
- C语言程序 数组
- C/C++时间获取及格式化输出汇总
- C语言中EOF与Ctrl+Z
- C++调用c# dll
- C++课程设计——停车场管理系统
- C++中的虚函数表是什么时期建立的?
- c/c++基础
- C++ transform
- C++primer——阅读笔记(非面向对象)
- C++ string的大小写转换
- 我的C++笔记(数据的共享与保护)
- C++位运算详解
- C++实现简单的内存块自动管理
- hihocoder#1040判断矩形
- C++ 获取类成员函数地址方法 浅析
- C++ 中间statickeyword
- C++ 中在进程中的窗口句柄传入线程
- Dev-Cpp/Mingw32 环境介绍
- stm32中的C语言(7.24)
- C/C++ memmove 和 memcpy