ios - Trying to understand why mDataByteSize property of AudioBuffer is changing -


i have following code i'm using read contents of wav file sint16 array:

audiobufferlist *buffers; uint32 ablsize = offsetof(audiobufferlist, mbuffers) +      (sizeof(audiobuffer) * 1); buffers = malloc(ablsize);  buffers->mnumberbuffers = 1; buffers->mbuffers[0].mnumberchannels = 1; buffers->mbuffers[0].mdatabytesize = databytesize;  uint32 datasize = (uint32)filelengthframes * sizeof(sint16);  self.extractedsamples = malloc(datasize); self.extractedbytecount = databytesize;   uint32 totalframesread = 0; {     uint32 framesread = (uint32)filelengthframes - totalframesread;     buffers->mbuffers[0].mdata = self.extractedsamples +          (totalframesread * sizeof(sint16));     extaudiofileread(eaf, &framesread, buffers);     totalframesread += framesread;  } while (totalframesread < filelengthframes);  free(buffers); 

this working fine files of < 0.5 seconds duration. longer file i'm testing, app crashes bad access error inside do loop. file, databytesize 60472, , @ start of loop buffer->mbuffers[0].mdatabytesize 60472. when crash occurs, see buffer->mbuffers[0].mdatabytesize has changed 57300, presumably why crash occurring.

anybody know how/why value changing in middle of loop? 1 guess have i'm not retaining audiobufferlist , memory space mdatabytesize somehow getting overwritten.

edit: when code run on simulator same file, works fine.

mdatabytesize should set framesread * sizeof(sint16) * channelcount before each call extaudiofileread


Comments

Popular posts from this blog

IF statement in MySQL trigger -

c++ - What does MSC in "// appease MSC" comments mean? -

javascript - Blogger related post gadget image Resize s72-c [ Need Expert Help ] -