Странный вывод кодировки libfaac
Я пытаюсь закодировать 16-битный файл RAW PCM в MAIN AAC-файл MPEG-4, используя libfaac в моей программе на C. Я не знаю, что я делаю неправильно, поэтому я получаю файл в 2 раза длиннее и дерзко, когда я запись тишины это выглядит так _ | _ | _ | _ | _ когда сырой файл выглядит следующим образом _ _ _ _ _ _
Не могли бы вы сказать мне, что я делаю не так? Вот мой код
static void encodeAac( const char *infilename,const char *filename)
{
faacEncHandle codec;
faacEncConfigurationPtr conf;
SAMPLE* samples;
uint8_t* outbuf;
unsigned long* one;
unsigned long* two;
int outsize;
one=new unsigned long;
two = new unsigned long;
codec=faacEncOpen(SAMPLE_RATE,NUM_CHANNELS,one,two);
if(!codec){
error("Something went wrong");
return;
}
conf=faacEncGetCurrentConfiguration(codec);
conf->mpegVersion=MPEG4;
conf->aacObjectType=MAIN;
faacEncSetConfiguration(codec,conf);
FILE *f = fopen(filename, "wb");
FILE *fin=fopen(infilename,"rb");
if (!fin) {
error("could not open temporary file");
}
if (!f) {
error("could not open output file");
}
samples = new SAMPLE[*one];
outbuf = new uint8_t[*two];
while(fread(samples,sizeof(SAMPLE),*one,fin)){
outsize=faacEncEncode(codec,(int*)samples,*one,outbuf,*two);
fwrite(outbuf,sizeof(uint8_t),outsize,f);
}
while(outsize != 0){
outsize=faacEncEncode(codec,NULL,NULL,outbuf,*two);
fwrite(outbuf,sizeof(uint8_t),outsize,f);
}
fclose(f);
fclose(fin);
delete outbuf;
delete samples;
faacEncClose(codec);
}