簡體   English   中英

降低ExtAudioFileRead的輸出幅度

[英]Reducing amplitude of output from ExtAudioFileRead

我希望減小ExtAudioFileRead輸出的幅度,然后再將其保存到文件中。 這是我的原始代碼:

    AudioBufferList convertedData;
    convertedData.mNumberBuffers=1;
    convertedData.mBuffers[0].mNumberChannels=mySettings->outputFormat.mChannelsPerFrame;
    convertedData.mBuffers[0].mDataByteSize=outputBufferSize;
    convertedData.mBuffers[0].mData=outputBuffer;
    frameCount=packetsPerBuffer;
    CheckError(ExtAudioFileRead(mySettings->inputFile,
                                &frameCount,
                                &convertedData)

我曾想遍歷convertedData.mBuffers [0] .mData,將每個樣本乘以一個分數,但是它的類型是“ void”。 任何想法都會很棒,感謝您的閱讀!

編輯:

這是我現在要走的路:

UInt8 *littleBuffer=(UInt8*)malloc(sizeof(UInt8)*outputBufferSize);
Float32 *signalData=(Float32*)convertedData.mBuffers[0].mData;
for (int i=0;i<outputBufferSize;i++){
  Float32 frameData=signalData[i];
  littleBuffer[i]=0.5*(UInt8)frameData;
}

輸出文件絕對不是輸入的縮放版本,但是我認為這可能是由於上面錯誤的變量選擇所致。

得到它了。 通過替換littleBuffer[i]=0.5*(UInt8)frameData; 使用下面的代碼,音頻將按預期縮放。

float frameData=signalData[i];
if (frameData>127){
    frameData=255-frameData;
    frameData*=scaleFactor;
    frameData=255-frameData;
}else{
    frameData*=scaleFactor;
}
littleBuffer[i]=(int)frameData;

不可否認,縮放后會有一些噪聲—我的最佳猜測是與低比特率有關的量化噪聲。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM