Browse Source

Added support for getting metadata from .caf files in the CoreAudioFormat class

tags/2021-05-28
jules 9 years ago
parent
commit
bb1b362162
1 changed files with 18 additions and 9 deletions
  1. +18
    -9
      modules/juce_audio_formats/codecs/juce_CoreAudioFormat.cpp

+ 18
- 9
modules/juce_audio_formats/codecs/juce_CoreAudioFormat.cpp View File

@@ -112,19 +112,28 @@ struct CoreAudioFormatMetatdata
};
//==============================================================================
struct UserDefinedChunk
static StringPairArray parseUserDefinedChunk (InputStream& input, int64 size)
{
UserDefinedChunk (InputStream& input, int64 size)
StringPairArray infoStrings;
const int64 originalPosition = input.getPosition();
uint8 uuid[16];
input.read (uuid, sizeof (uuid));
if (memcmp (uuid, "\x29\x81\x92\x73\xB5\xBF\x4A\xEF\xB7\x8D\x62\xD1\xEF\x90\xBB\x2C", 16) == 0)
{
// a user defined chunk contains 16 bytes of a UUID first
uuid[1] = input.readInt64BigEndian();
uuid[0] = input.readInt64BigEndian();
const uint32 numEntries = (uint32) input.readIntBigEndian();
input.skipNextBytes (size - 16);
for (uint32 i = 0; i < numEntries && input.getPosition() < originalPosition + size; ++i)
{
String keyName = input.readString();
infoStrings.set (keyName, input.readString());
}
}
int64 uuid[2];
};
input.setPosition (originalPosition + size);
return infoStrings;
}
//==============================================================================
static StringPairArray parseMidiChunk (InputStream& input, int64 size)
@@ -288,7 +297,7 @@ struct CoreAudioFormatMetatdata
}
else if (chunkHeader.chunkType == chunkName ("uuid"))
{
UserDefinedChunk userDefinedChunk (input, chunkHeader.chunkSize);
metadataValues.addArray (parseUserDefinedChunk (input, chunkHeader.chunkSize));
}
else if (chunkHeader.chunkType == chunkName ("data"))
{


Loading…
Cancel
Save