我試圖使用OPUS API的基本編碼和解碼功能與本公司主營:解碼與作品API使用opus_decode_float
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <opus/opus.h>
#include <stdio.h>
int main(int argc, char **argv)
{
OpusEncoder *enc;
OpusDecoder *dec;
unsigned char *str;
float frame = 0.32;
int ret = 0;
int error;
float *returned;
if ((str = malloc(4096)) == NULL)
return (-1);
enc = opus_encoder_create (24000, 1, OPUS_APPLICATION_AUDIO, &error);
printf("ret = %d | input = %.2f\n", error, frame);
ret = opus_encode_float(enc, &frame, 480, str, 4096);
printf("ret = %d\n", ret);
dec = opus_decoder_create (24000, 1, &error);
ret = opus_decode_float(dec, str, ret, returned, 480, 0);
printf("ret = %d | res = %.2f\n", ret, returned[0]);
return (0);
}
麻煩的是,我試圖通過0.32浮球使用opus_decoder_float對它進行編碼和解碼,但是當我試圖打印我的結果時,我只能得到0.00,並且找不到使用此特定功能的任何示例。
我沒有得到與RET值的錯誤信息,該程序打印:
ret = 0 | input = 0.32
ret = 3
ret = 480 | res = 0.00
我怎樣才能在返回浮動的0.32?
建議檢查像'enc'和'dec'這樣的返回值。 – chux