
Untitled
By: a guest on
May 1st, 2012 | syntax:
None | size: 1.31 KB | hits: 26 | expires: Never
Get tags from M4A file
AudioFileID fileID = nil;
OSStatus err = noErr;
err = AudioFileOpenURL( (CFURLRef) fileURL, kAudioFileReadPermission, 0, &fileID );
if( err != noErr ) {
NSLog( @"AudioFileOpenURL failed" );
return nil;
}
UInt32 id3DataSize = 0;
char * rawID3Tag = NULL;
err = AudioFileGetPropertyInfo( fileID, kAudioFilePropertyID3Tag, &id3DataSize, NULL );
if( err != noErr ) {
NSLog( @"AudioFileGetPropertyInfo failed for ID3 tag" );
return nil;
}
//NSLog( @"id3 data size is %d bytes", id3DataSize );
rawID3Tag = (char *) malloc( id3DataSize );
if( rawID3Tag == NULL ) {
NSLog( @"could not allocate %d bytes of memory for ID3 tag", id3DataSize );
return nil;
}
err = AudioFileGetProperty( fileID, kAudioFilePropertyID3Tag, &id3DataSize, rawID3Tag );
if( err != noErr ) {
NSLog( @"AudioFileGetProperty failed for ID3 tag" );
return nil;
}
CFDictionaryRef piDict = nil;
UInt32 piDataSize = sizeof( piDict );
err = AudioFileGetProperty( fileID, kAudioFilePropertyInfoDictionary, &piDataSize, &piDict );
if( err != noErr ) {
NSLog( @"AudioFileGetProperty failed for property info dictionary" );
return nil;
}
return (NSDictionary*)piDict;