iOS 5.0 falla al leer datos de una AVAssetReaderOutput

Tengo este fragment de código utilizado para leer datos de un AVAssetReaderOutput , el método funciona bien en iOS 4.0, sin embargo, en 5.0 se bloquea hacia el final con un mal acceso, no estoy seguro de por qué, ¿alguien tiene alguna input?

 AVAssetReaderOutput *output=[myOutputs objectAtIndex:0]; int totalBuff=0; while(TRUE) { CMSampleBufferRef ref=[output copyNextSampleBuffer]; if(ref==NULL) break; //copy data to file //read next one AudioBufferList audioBufferList; NSMutableData *data=[[NSMutableData alloc] init]; CMBlockBufferRef blockBuffer; CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(ref, NULL, &audioBufferList, sizeof(audioBufferList), NULL, NULL, 0, &blockBuffer); for( int y=0; y<audioBufferList.mNumberBuffers; y++ ) { AudioBuffer audioBuffer = audioBufferList.mBuffers[y]; Float32 *frame = audioBuffer.mData; NSLog(@"Gonna write %d", audioBuffer.mDataByteSize); //crashes here [data appendBytes:frame length:audioBuffer.mDataByteSize]; } totalBuff++; CFRelease(blockBuffer); CFRelease(ref); [fileHandle writeData:data]; [data release]; } 

Gracias

Daniel

De hecho, arreglé esto comprobando que blockBuffer era nulo y continuando si lo era, el problema era que la reference no era nula, pero el blockBuffer era así que este código solucionó mi problema

 -(void)doExportSong:(NSURL*)url toFileUrl:(NSString*)fileURL { AVURLAsset *asset=[[[AVURLAsset alloc] initWithURL:url options:nil] autorelease]; AVAssetReader *reader=[[[AVAssetReader alloc] initWithAsset:asset error:nil] autorelease]; [reader setTimeRange:CMTimeRangeMake(kCMTimeZero, kCMTimePositiveInfinity)]; NSMutableArray *myOutputs =[[NSMutableArray alloc] init]; for(id track in [asset tracks]) { AVAssetReaderTrackOutput *ot=[AVAssetReaderTrackOutput assetReaderTrackOutputWithTrack:track outputSettings:nil]; [myOutputs addObject:ot]; [reader addOutput:ot]; } [reader startReading]; NSFileHandle *fileHandle ; NSFileManager *fm=[NSFileManager defaultManager]; if(![fm fileExistsAtPath:fileURL]) { [fm createFileAtPath:fileURL contents:[[[NSData alloc] init] autorelease] attributes:nil]; } fileHandle=[NSFileHandle fileHandleForUpdatingAtPath:fileURL]; [fileHandle seekToEndOfFile]; AVAssetReaderOutput *output=[myOutputs objectAtIndex:0]; int totalBuff=0; BOOL one=TRUE; while(TRUE) { CMSampleBufferRef ref=[output copyNextSampleBuffer]; // NSLog(@"%@",ref); if(ref==NULL) break; //copy data to file //read next one AudioBufferList audioBufferList; NSMutableData *data=[[NSMutableData alloc] init]; CMBlockBufferRef blockBuffer; CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(ref, NULL, &audioBufferList, sizeof(audioBufferList), NULL, NULL, 0, &blockBuffer); // NSLog(@"%@",blockBuffer); if(blockBuffer==NULL) { [data release]; continue; } if(&audioBufferList==NULL) { [data release]; continue; } for( int y=0; y<audioBufferList.mNumberBuffers; y++ ) { AudioBuffer audioBuffer = audioBufferList.mBuffers[y]; Float32 *frame = (Float32*)audioBuffer.mData; [data appendBytes:frame length:audioBuffer.mDataByteSize]; } totalBuff++; CFRelease(blockBuffer); CFRelease(ref); ref=NULL; blockBuffer=NULL; [fileHandle writeData:data]; [data release]; } [fileHandle closeFile]; [myOutputs release]; }