PublicUtility/CAComponentDescription.h
/* |
Copyright (C) 2016 Apple Inc. All Rights Reserved. |
See LICENSE.txt for this sample’s licensing information |
Abstract: |
Part of CoreAudio Utility Classes |
*/ |
#ifndef __CAComponentDescription_h__ |
#define __CAComponentDescription_h__ |
#if !defined(__COREAUDIO_USE_FLAT_INCLUDES__) |
#include <AudioUnit/AudioUnit.h> |
#else |
#include <ConditionalMacros.h> |
#include <AudioUnit.h> |
#endif |
#include "CACFDictionary.h" |
#include <stdio.h> |
#include <string.h> |
void CAShowComponentDescription(const AudioComponentDescription *desc); |
// ____________________________________________________________________________ |
// |
// CAComponentDescription |
class CAComponentDescription : public AudioComponentDescription { |
public: |
CAComponentDescription() { memset (this, 0, sizeof (AudioComponentDescription)); } |
CAComponentDescription (OSType inType, OSType inSubtype = 0, OSType inManu = 0); |
CAComponentDescription(const AudioComponentDescription& desc) { memcpy (this, &desc, sizeof (AudioComponentDescription)); } |
// _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
// |
// interrogation |
bool IsAU () const; |
bool IsAUFX() const { return componentType == kAudioUnitType_Effect; } |
bool IsAUFM() const { return componentType == kAudioUnitType_MusicEffect; } |
bool IsAUMI() const { return componentType == 'aumi' /*kAudioUnitType_MIDIProcessor*/; } |
bool IsAUAX () const { return componentType == 'auax' /*kAudioUnitType_Auxiliary*/; } |
bool IsEffect () const { return IsAUFX() || IsAUFM() || IsPanner(); } |
bool IsOffline () const { return componentType == 'auol' /*kAudioUnitType_Offline*/; } |
bool IsFConv () const { return componentType == kAudioUnitType_FormatConverter; } |
bool IsPanner () const { return componentType == kAudioUnitType_Panner; } |
bool IsMusicDevice () const { return componentType == kAudioUnitType_MusicDevice; } |
#ifndef MAC_OS_X_VERSION_10_4 |
bool IsGenerator () const { return componentType =='augn'; } |
#else |
bool IsGenerator () const { return componentType ==kAudioUnitType_Generator; } |
#endif |
bool IsOutput () const { return componentType == kAudioUnitType_Output; } |
bool IsSource () const { return IsMusicDevice() || IsGenerator(); } |
OSType Type () const { return componentType; } |
OSType SubType () const { return componentSubType; } |
OSType Manu () const { return componentManufacturer; } |
int Count() const { return AudioComponentCount(const_cast<CAComponentDescription*>(this)); } |
// does a semantic match where "wild card" values for type, subtype, manu will match |
bool Matches (const AudioComponentDescription &desc) const; |
// _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
// |
// other |
void Print(FILE* file = stdout) const { _CAShowComponentDescription (this, file); } |
OSStatus Save (CFPropertyListRef *outData) const; |
OSStatus Restore (CFPropertyListRef &inData); |
private: |
static void _CAShowComponentDescription (const AudioComponentDescription *desc, FILE* file); |
friend void CAShowComponentDescription (const AudioComponentDescription *desc); |
}; |
inline bool operator< (const AudioComponentDescription& x, const AudioComponentDescription& y) |
{ |
return memcmp (&x, &y, offsetof (AudioComponentDescription, componentFlags)) < 0; |
} |
inline bool operator== (const AudioComponentDescription& x, const AudioComponentDescription& y) |
{ |
return !memcmp (&x, &y, offsetof (AudioComponentDescription, componentFlags)); |
} |
inline bool operator!= (const AudioComponentDescription& x, const AudioComponentDescription& y) |
{ |
return !(x == y); |
} |
#endif |
Copyright © 2016 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2016-02-11