Domanda

Sto cercando di ridurre l'ampiezza dell'output di ExtaudioFileRead prima di riuscarlo a file.Ecco il mio codice originale:

    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)
.

Avrei pensato di andare in loop attraverso convertitoddata.mbuffer [0] .mdata, moltiplicando ogni campione da una frazione, ma è di tipo "vuoto".Qualsiasi idea sarebbe eccezionale, grazie per la lettura!

Modifica:

Ecco il percorso che sto andando giù ora:

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;
}
.

Il file di output non è sicuramente una versione ridimensionata dell'ingresso, ma penso che questo potrebbe essere dovuto a scelte variabili errate sopra.

È stato utile?

Soluzione

ha capito.Sostituendo littleBuffer[i]=0.5*(UInt8)frameData; con il codice qui sotto, le scale audio come previsto.

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

Allora, c'è un po 'di rumore dopo il ridimensionamento, la mia migliore ipotesi è che è il rumore di quantizzazione relativo alla bit-rass.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top