summaryrefslogtreecommitdiff
path: root/libs/appleutility/CoreAudio/PublicUtility/CAPersistence.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/appleutility/CoreAudio/PublicUtility/CAPersistence.cpp')
-rw-r--r--libs/appleutility/CoreAudio/PublicUtility/CAPersistence.cpp146
1 files changed, 73 insertions, 73 deletions
diff --git a/libs/appleutility/CoreAudio/PublicUtility/CAPersistence.cpp b/libs/appleutility/CoreAudio/PublicUtility/CAPersistence.cpp
index d3fe008eeb..cabec8b3b7 100644
--- a/libs/appleutility/CoreAudio/PublicUtility/CAPersistence.cpp
+++ b/libs/appleutility/CoreAudio/PublicUtility/CAPersistence.cpp
@@ -2,14 +2,14 @@
File: CAPersistence.cpp
Abstract: CAPersistence.h
Version: 1.1
-
+
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple
Inc. ("Apple") in consideration of your agreement to the following
terms, and your use, installation, modification or redistribution of
this Apple software constitutes acceptance of these terms. If you do
not agree with these terms, please do not use, install, modify or
redistribute this Apple software.
-
+
In consideration of your agreement to abide by the following terms, and
subject to these terms, Apple grants you a personal, non-exclusive
license, under Apple's copyrights in this original Apple software (the
@@ -25,13 +25,13 @@
implied, are granted by Apple herein, including but not limited to any
patent rights that may be infringed by your derivative works or by other
works in which the Apple Software may be incorporated.
-
+
The Apple Software is provided by Apple on an "AS IS" basis. APPLE
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
-
+
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
@@ -40,9 +40,9 @@
AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
-
+
Copyright (C) 2014 Apple Inc. All Rights Reserved.
-
+
*/
#include "CACFArray.h"
#include "CACFDictionary.h"
@@ -80,7 +80,7 @@ OSStatus CAStreamBasicDescription::Save (CFPropertyListRef *outData) const
if (!dict.AddUInt32 (kFrameBytes, mBytesPerFrame)) goto error;
if (!dict.AddUInt32 (kFrameChannels, mChannelsPerFrame)) goto error;
if (!dict.AddUInt32 (kChannelBits, mBitsPerChannel)) goto error;
-
+
*outData = dict.GetDict();
return noErr;
@@ -90,14 +90,14 @@ error:
return paramErr;
}
-
+
// Given a CFData object generated by the save command, this will re-establish
// the CAStreamBasicDescription
OSStatus CAStreamBasicDescription::Restore (CFPropertyListRef& inData)
{
if (CFGetTypeID (inData) != CFDictionaryGetTypeID()) return paramErr;
CACFDictionary dict(static_cast<CFDictionaryRef>(inData), false);
-
+
if (!dict.GetFloat64 (kSampleRate, mSampleRate)) return paramErr;
if (!dict.GetUInt32 (kFormat, mFormatID)) return paramErr;
if (!dict.GetUInt32 (kFormatFlags, mFormatFlags)) return paramErr;
@@ -122,9 +122,9 @@ OSStatus CAComponentDescription::Save (CFPropertyListRef *outData) const
if (!dict.AddUInt32 (kType, componentType)) goto error;
if (!dict.AddUInt32 (kSubType, componentSubType)) goto error;
if (!dict.AddUInt32 (kManu, componentManufacturer)) goto error;
-
+
*outData = dict.GetDict();
-
+
return 0;
error:
dict.ShouldRelease (true);
@@ -135,14 +135,14 @@ OSStatus CAComponentDescription::Restore (CFPropertyListRef &inData)
{
if (CFGetTypeID (inData) != CFDictionaryGetTypeID()) return paramErr;
CACFDictionary dict(static_cast<CFDictionaryRef>(inData), false);
-
+
if (!dict.GetUInt32 (kType, componentType)) return paramErr;
if (!dict.GetUInt32 (kSubType, componentSubType)) return paramErr;
if (!dict.GetUInt32 (kManu, componentManufacturer)) return paramErr;
componentFlags = 0;
componentFlagsMask = 0;
-
+
return 0;
}
@@ -152,13 +152,13 @@ OSStatus CAComponent::Save (CFPropertyListRef *outData) const
{
OSStatus result = mDesc.Save (outData);
if (result) return result;
-
+
//add the name string of the component for a human readable name...
// this name string is *not* restored when restoring the component
CFStringRef name = GetCompName ();
if (name && *outData)
CFDictionarySetValue ((CFMutableDictionaryRef)(*outData), CFSTR("name"), name);
-
+
return noErr;
}
@@ -187,8 +187,8 @@ static const CFStringRef kACLCoords0Key = CFSTR("coords 0");
static const CFStringRef kACLCoords1Key = CFSTR("coords 1");
static const CFStringRef kACLCoords2Key = CFSTR("coords 2");
static const CFStringRef kACLDescsKey = CFSTR("descriptions");
-
-OSStatus CAAudioChannelLayout::Save (CFPropertyListRef *outData) const
+
+OSStatus CAAudioChannelLayout::Save (CFPropertyListRef *outData) const
{
const AudioChannelLayout& layout = Layout();
@@ -197,13 +197,13 @@ OSStatus CAAudioChannelLayout::Save (CFPropertyListRef *outData) const
goto badadd;
if (layout.mChannelBitmap && !dict.AddUInt32 (kACLBitmapKey, layout.mChannelBitmap))
goto badadd;
-
+
if (layout.mNumberChannelDescriptions)
- {
+ {
CFMutableArrayRef descs = CFArrayCreateMutable (NULL, layout.mNumberChannelDescriptions, &kCFTypeArrayCallBacks);
-
+
const AudioChannelDescription *desc = layout.mChannelDescriptions;
- for (unsigned int i = 0; i < layout.mNumberChannelDescriptions; ++i, ++desc)
+ for (unsigned int i = 0; i < layout.mNumberChannelDescriptions; ++i, ++desc)
{
CACFDictionary descDict (true);
if (!descDict.AddUInt32 (kACLLabelKey, desc->mChannelLabel))
@@ -216,41 +216,41 @@ OSStatus CAAudioChannelLayout::Save (CFPropertyListRef *outData) const
{ CFRelease (descs); goto badadd; }
if (!descDict.AddFloat32 (kACLCoords2Key, desc->mCoordinates[2]))
{ CFRelease (descs); goto badadd; }
-
+
CFArrayAppendValue (descs, descDict.AsPropertyList());
}
dict.AddArray (kACLDescsKey, descs);
-
+
CFRelease (descs);
}
-
- *outData = dict.GetDict();
-
+
+ *outData = dict.GetDict();
+
return noErr;
-
+
badadd:
dict.ShouldRelease(true);
return paramErr;
}
-OSStatus CAAudioChannelLayout::Restore (CFPropertyListRef &inData)
+OSStatus CAAudioChannelLayout::Restore (CFPropertyListRef &inData)
{
if (CFGetTypeID (inData) != CFDictionaryGetTypeID()) return paramErr;
CACFDictionary dict(static_cast<CFDictionaryRef>(inData), false);
RefCountedLayout *temp = NULL;
AudioChannelLayout* layout;
-
+
CFArrayRef descs = NULL;
UInt32 numDescs = 0;
if (dict.GetArray (kACLDescsKey, descs)) {
numDescs = static_cast<OSStatus>(CFArrayGetCount (descs));
}
-
+
temp = RefCountedLayout::CreateWithNumberChannelDescriptions(numDescs);
layout = temp->GetLayout();
-
+
if (!dict.GetUInt32 (kACLTagKey, layout->mChannelLayoutTag))
goto badget;
if (dict.HasKey (kACLBitmapKey)) {
@@ -258,17 +258,17 @@ OSStatus CAAudioChannelLayout::Restore (CFPropertyListRef &inData)
goto badget;
} else
layout->mChannelBitmap = 0;
-
+
layout->mNumberChannelDescriptions = numDescs;
-
+
if (numDescs)
{
AudioChannelDescription *desc = layout->mChannelDescriptions;
for (unsigned int i = 0; i < numDescs; ++i, ++desc)
{
- CFDictionaryRef descDict = (CFDictionaryRef)CFArrayGetValueAtIndex (descs, i);
+ CFDictionaryRef descDict = (CFDictionaryRef)CFArrayGetValueAtIndex (descs, i);
CACFDictionary theDesc (descDict, false);
-
+
if (!theDesc.GetUInt32 (kACLLabelKey, desc->mChannelLabel))
goto badget;
if (!theDesc.GetUInt32 (kACLFlagsKey, desc->mChannelFlags))
@@ -285,7 +285,7 @@ OSStatus CAAudioChannelLayout::Restore (CFPropertyListRef &inData)
mLayout->release();
mLayout = temp;
-
+
return noErr;
badget:
@@ -299,9 +299,9 @@ static const CFStringRef kAUScopeStr = CFSTR("scope");
static const CFStringRef kAUElementIDStr = CFSTR("element ID");
static const CFStringRef kAUParameterIDStr = CFSTR("paramID");
-void CAAUParameter::Save (CFPropertyListRef &outData) const
-{
- return CAAUParameter::Save (*this, outData);
+void CAAUParameter::Save (CFPropertyListRef &outData) const
+{
+ return CAAUParameter::Save (*this, outData);
}
// static functions to save/restore AudioUnitParameter
@@ -363,56 +363,56 @@ void CAAUMIDIMap::Save(CFPropertyListRef &outData) const
}
void CAAUMIDIMap::Restore(CFDictionaryRef inData)
-{
+{
CACFDictionary paramDict (inData, false);
- if (!paramDict.GetUInt32 (kLocalScopeStr, mScope)) return;
- if (!paramDict.GetUInt32 (kLocalElementIDStr, mElement)) return;
- if (!paramDict.GetUInt32 (kLocalParameterIDStr, mParameterID)) return;
+ if (!paramDict.GetUInt32 (kLocalScopeStr, mScope)) return;
+ if (!paramDict.GetUInt32 (kLocalElementIDStr, mElement)) return;
+ if (!paramDict.GetUInt32 (kLocalParameterIDStr, mParameterID)) return;
if (!paramDict.GetUInt32 (kMIDIFlagsStr, mFlags)) return;
- if (!paramDict.GetFloat32 (kMIDISubMinStr, mSubRangeMin)) return;
- if (!paramDict.GetFloat32 (kMIDISubMaxStr, mSubRangeMax)) return;
- UInt32 data;
+ if (!paramDict.GetFloat32 (kMIDISubMinStr, mSubRangeMin)) return;
+ if (!paramDict.GetFloat32 (kMIDISubMaxStr, mSubRangeMax)) return;
+ UInt32 data;
if (!paramDict.GetUInt32 (kMIDIStatusStr, data)) return;
mStatus = data;
- if (!paramDict.GetUInt32 (kMIDIDataByteStr, data)) return;
+ if (!paramDict.GetUInt32 (kMIDIDataByteStr, data)) return;
mData1 = data;
}
void CAAUMIDIMap::SaveAsMapPList (AudioUnit inUnit, const AUParameterMIDIMapping* inMappings, UInt32 inNumMappings, CFPropertyListRef &outData, CFStringRef inName)
{
- CACFDictionary mappingDict (false);
+ CACFDictionary mappingDict (false);
CACFArray maps (true);
-
- for (UInt32 i = 0; i< inNumMappings; ++i)
+
+ for (UInt32 i = 0; i< inNumMappings; ++i)
{
CFPropertyListRef data;
CAAUMIDIMap paramMap(inMappings[i]);
paramMap.Save (data);
- if (data)
+ if (data)
{
- maps.AppendCFType (data);
- CFRelease(data);
- }
+ maps.AppendCFType (data);
+ CFRelease(data);
+ }
}
if (maps.GetNumberItems()) {
mappingDict.AddCFType (kParamMIDIStr, maps.GetCFArray());
-
+
// Add the AU info here - where this map came from
CAAudioUnit au (inUnit);
CFPropertyListRef data;
au.Comp().Save (&data);
-
+
mappingDict.AddCFType (kAUStr, data);
CFRelease(data);
-
+
if (!inName) inName = CFSTR("Untitled");
mappingDict.AddString (CFSTR("name"), inName);
-
+
mappingDict.AddUInt32 (CFSTR("version"), 1);
-
+
outData = mappingDict.AsPropertyList();
} else {
mappingDict.ShouldRelease(true);
@@ -423,41 +423,41 @@ void CAAUMIDIMap::SaveAsMapPList (AudioUnit inUnit, const AUParameterMIDIMappin
UInt32 CAAUMIDIMap::NumberOfMaps (const CFDictionaryRef inData)
{
CACFDictionary dict (inData, false);
-
- if (dict.HasKey (kParamMIDIStr))
+
+ if (dict.HasKey (kParamMIDIStr))
{
CFArrayRef cfArray;
- dict.GetArray (kParamMIDIStr, cfArray);
-
+ dict.GetArray (kParamMIDIStr, cfArray);
+
CACFArray array (cfArray, false);
-
+
return array.GetNumberItems();
}
return 0;
}
-
+
void CAAUMIDIMap::RestoreFromMapPList (const CFDictionaryRef inData, AUParameterMIDIMapping* outMappings, UInt32 inNumMappings)
{
CACFDictionary dict (inData, false);
-
- if (dict.HasKey (kParamMIDIStr))
+
+ if (dict.HasKey (kParamMIDIStr))
{
CFArrayRef cfArray;
- dict.GetArray (kParamMIDIStr, cfArray);
-
+ dict.GetArray (kParamMIDIStr, cfArray);
+
CACFArray array (cfArray, false);
-
+
UInt32 count = array.GetNumberItems();
if (count > inNumMappings)
count = inNumMappings;
-
+
for (unsigned int i = 0; i < count; ++i)
{
CFDictionaryRef paramsDictRef;
- if (!array.GetDictionary(i, paramsDictRef))
+ if (!array.GetDictionary(i, paramsDictRef))
return;
-
+
CAAUMIDIMap parameterMap;
parameterMap.Restore(paramsDictRef);
outMappings[i] = parameterMap;