Je travaille sur une application iOS liée au DSP. Une partie du travail consiste à copier les données audio de outBuffer -> mAudioData vers un tableau spécifié par l'utilisateur pour le traitement des données. La méthode de lecture est la suivante:AudioQueue: Impossible de lire les données brutes dans AudioFileReadPackets
OSStatus result = AudioFileReadPackets(myInfo->mAudioFile, // The audio file from which packets of audio data are to be read.
false, // Set to true to cache the data. Otherwise, set to false.
&numBytes, // On output, a pointer to the number of bytes actually returned.
myInfo->mPacketDescs, // A pointer to an array of packet descriptions that have been allocated.
myInfo->mCurrentPacket, // The packet index of the first packet you want to be returned.
&nPackets, // On input, a pointer to the number of packets to read. On output, the number of packets actually read.
outBuffer->mAudioData); // A pointer to user-allocated memory.
Ce processus est réussi. Mais quand je suis en train de lire les données de outBuffer-> mAudioData, il y a toujours une erreur indiquant que la conversion non valide du « vide * const » à 'SINT16 *:
outBuffer->mAudioDataByteSize = numBytes;
SInt16 *testBuffer = outBuffer->mAudioData; //Read data from buffer... Error!
for (int i=0; i<numBytes; i++)
{
UInt16 currentData = testBuffer[i];
printf("Current data in testbuffer is %d", currentData);
}
Je suis passé par plusieurs questions connexes comme THIS et THIS, semble leur fonctionnent ... J'ai également essayé de remplacer outBuffer-> mAudioData à testBuffer dans AudioFileReadPackets(), mais le testBuffer se révèle être un tableau vide.
Alors, est-ce la bonne approche? Existe-t-il un autre moyen de lire les données brutes dans un tableau int/float?
Ou plus généralement, comment accéder à un pointeur de constante vide et effectuer une opération de lecture/écriture? (Ouais mon C++ est pas forte ...)
Toute aide sera appréciée :-)
Cheers, Manca