Retired Document
Important: This sample code may not represent best practices for current development. The project may use deprecated symbols and illustrate technologies and techniques that are no longer recommended.
Relevant replacement documents include:
uLawCodec.r
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
// defines needed before including headers |
// use the platform info array in the 'thng' resource for 68k and PowerPC, or Windows |
#define thng_RezTemplateVersion 1 |
#define DLOG_RezTemplateVersion 1 |
#include "MacTypes.r" |
#include "Components.r" |
#include "Sound.r" |
#include "Icons.r" |
#include "Dialogs.r" |
#include "Appearance.r" |
#include "uLawCodec.h" |
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
// µLaw decompressor |
resource 'thng' (kSoundDecompressorResID, ULawDecompressorName, purgeable) { |
kSoundDecompressor, kCodecFormat, kSoundComponentManufacturer, |
k16BitIn|kStereoIn | k8BitRawOut|k16BitOut|kStereoOut, 0, |
kSoundComponentType, kSoundDecompressorResID, |
'STR ', kSoundCodecNameStringResID, |
'STR ', kSoundCodecInfoStringResID, |
'ICON', kSoundComponentIconResID, |
kSoundDecompressorVersion, |
componentDoAutoVersion|componentHasMultiplePlatforms, 0, |
{ |
#if TARGET_OS_MAC |
k16BitIn|kStereoIn | k8BitRawOut|k16BitOut|kStereoOut, |
kSoundComponentType, kSoundDecompressorResID, platform68k; |
k16BitIn|kStereoIn | k8BitRawOut|k16BitOut|kStereoOut, |
kSoundComponentPPCType, kSoundDecompressorResID, platformPowerPC |
#else |
k16BitIn|kStereoIn | k8BitRawOut|k16BitOut|kStereoOut, |
'dlle', kSoundDecompressorResID, platformWin32 |
#endif |
} |
}; |
// name and info string are shared by the compressor and decompressor |
resource 'STR ' (kSoundCodecNameStringResID, ULawDecompressorName, purgeable) { |
"Example µLaw 2:1" |
}; |
resource 'STR ' (kSoundCodecInfoStringResID, ULawDecompressorName, purgeable) { |
"µLaw (CCITT Recommendation G.711) compression with a 2 to 1 ratio." |
}; |
resource 'ICON' (kSoundComponentIconResID, ULawDecompressorName, purgeable) { |
$"00000000000000000000000000000000" |
$"00000000003FC00001C0380002040400" |
$"022A840003915F80027FE44002000720" |
$"020004A0020004A0020004A0020004A0" |
$"020004A0020007200200044002000780" |
$"0200040001C03800003FC00000001000" |
$"00888000002020000085400000100000" |
$"0042" |
}; |
#if !TARGET_OS_MAC |
resource 'dlle' (kSoundDecompressorResID, ULawDecompressorName) { |
"__uLawDecompComponentDispatch" |
}; |
#endif |
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
// µLaw compressor |
resource 'thng' (kSoundCompressorResID, ULawCompressorName, purgeable) { |
kSoundCompressor, kCodecFormat, kSoundComponentManufacturer, |
k16BitIn|kStereoIn | k8BitRawOut|k16BitOut|kStereoOut, 0, |
kSoundComponentType, kSoundCompressorResID, |
'STR ', kSoundCodecNameStringResID, |
'STR ', kSoundCodecInfoStringResID, |
'ICON', kSoundComponentIconResID, |
kSoundCompressorVersion, |
componentDoAutoVersion|componentHasMultiplePlatforms, 0, |
{ |
#if TARGET_OS_MAC |
k16BitIn|kStereoIn | k8BitRawOut|k16BitOut|kStereoOut, |
kSoundComponentType, kSoundCompressorResID, platform68k; |
k16BitIn|kStereoIn | k8BitRawOut|k16BitOut|kStereoOut, |
kSoundComponentPPCType, kSoundCompressorResID, platformPowerPC |
#else |
k16BitIn|kStereoIn | k8BitRawOut|k16BitOut|kStereoOut, |
'dlle', kSoundCompressorResID, platformWin32 |
#endif |
} |
}; |
#if !TARGET_OS_MAC |
resource 'dlle' (kSoundCompressorResID, ULawCompressorName) { |
"__uLawCompComponentDispatch" |
}; |
#endif |
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
// µLaw decompressor table |
type k16BitTableResType { |
array { |
integer; // array of 16 bit integers |
}; |
}; |
// make the resource locked since it's always locked while in use, |
// marking it locked helps memory management: Resource Mgr will load it lower in heap |
resource k16BitTableResType (kSoundDecompressorResID, ULawDecompressorName, locked) { |
{ |
-32124, -31100, -30076, -29052, -28028, -27004, -25980, -24956, |
-23932, -22908, -21884, -20860, -19836, -18812, -17788, -16764, |
-15996, -15484, -14972, -14460, -13948, -13436, -12924, -12412, |
-11900, -11388, -10876, -10364, -9852, -9340, -8828, -8316, |
-7932, -7676, -7420, -7164, -6908, -6652, -6396, -6140, |
-5884, -5628, -5372, -5116, -4860, -4604, -4348, -4092, |
-3900, -3772, -3644, -3516, -3388, -3260, -3132, -3004, |
-2876, -2748, -2620, -2492, -2364, -2236, -2108, -1980, |
-1884, -1820, -1756, -1692, -1628, -1564, -1500, -1436, |
-1372, -1308, -1244, -1180, -1116, -1052, -988, -924, |
-876, -844, -812, -780, -748, -716, -684, -652, |
-620, -588, -556, -524, -492, -460, -428, -396, |
-372, -356, -340, -324, -308, -292, -276, -260, |
-244, -228, -212, -196, -180, -164, -148, -132, |
-120, -112, -104, -96, -88, -80, -72, -64, |
-56, -48, -40, -32, -24, -16, -8, 0, |
32124, 31100, 30076, 29052, 28028, 27004, 25980, 24956, |
23932, 22908, 21884, 20860, 19836, 18812, 17788, 16764, |
15996, 15484, 14972, 14460, 13948, 13436, 12924, 12412, |
11900, 11388, 10876, 10364, 9852, 9340, 8828, 8316, |
7932, 7676, 7420, 7164, 6908, 6652, 6396, 6140, |
5884, 5628, 5372, 5116, 4860, 4604, 4348, 4092, |
3900, 3772, 3644, 3516, 3388, 3260, 3132, 3004, |
2876, 2748, 2620, 2492, 2364, 2236, 2108, 1980, |
1884, 1820, 1756, 1692, 1628, 1564, 1500, 1436, |
1372, 1308, 1244, 1180, 1116, 1052, 988, 924, |
876, 844, 812, 780, 748, 716, 684, 652, |
620, 588, 556, 524, 492, 460, 428, 396, |
372, 356, 340, 324, 308, 292, 276, 260, |
244, 228, 212, 196, 180, 164, 148, 132, |
120, 112, 104, 96, 88, 80, 72, 64, |
56, 48, 40, 32, 24, 16, 8, 0, |
} |
}; |
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
// µLaw compressor exponent table |
type k8BitTableResType { |
array { |
byte; // array of bytes |
}; |
}; |
// make the resource locked since it's always locked while in use, |
// marking it locked helps memory management: Resource Mgr will load it lower in heap |
resource k8BitTableResType (kSoundCompressorResID, ULawCompressorName, locked) { |
{ |
0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, |
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, |
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, |
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, |
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, |
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, |
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, |
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, |
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, |
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, |
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, |
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, |
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, |
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, |
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, |
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, |
} |
}; |
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
// options dialog resources |
resource 'DLOG' (kSoundCompressorResID, ULawCompressorName, purgeable) { |
{0, 0, 150+13, 214+13}, |
#if TARGET_OS_MAC |
dBoxProc, |
#else |
movableDBoxProc, |
#endif |
invisible, noGoAway, 0, kSoundCompressorResID, ULawCompressorName, alertPositionParentWindow |
}; |
resource 'DITL' (kSoundCompressorResID, ULawCompressorName, purgeable) { |
{ |
/* [1] */ {130, 156, 150, 214}, Button {enabled, "OK"}, |
/* [2] */ {130, 78, 150, 136}, Button {enabled, "Cancel"}, |
/* [3] */ {13, 13, 45, 45}, Icon {disabled, kSoundComponentIconResID}, |
/* [4] */ {26, 65, 44, 216}, CheckBox {enabled, "I like this Icon"}, |
/* [5] */ {52, 13, 114, 217}, StaticText {disabled, "Example Sound Codec\n© 1998 Apple Computer Inc." |
} |
} |
}; |
resource 'dlgx' (kSoundCompressorResID, ULawCompressorName, purgeable) { |
versionZero /* sometimes the headers have this as latestVersion */ |
{kDialogFlagsUseThemeBackground | kDialogFlagsUseControlHierarchy | kDialogFlagsUseThemeControls} |
}; |
Copyright © 2003 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2003-01-14