Mercurial > pidgin
view plugins/crazychat/camdata.c @ 12903:2bb4dc533a31
[gaim-migrate @ 15256]
redpen686 posted modified sounds to gaim-devel:
"The tones were sampled at 44.1 KHz (with a range of up to 22.05 KHz),
which is fine, but since the tones are only up to ~3 to 4 KHz, a lot of
space could be saved by downsampling.
I went to 11,025 Hz, since it is already enough for these frequencies,
and it's also the lowest common denominator for soundcards (rather than
8 or 16 KHz, for example).
The 'alert' sound needed a lowpass filter, but only because of the
high-pitched attack, which people won't notice anyway.
All are still 16-bit, and in stereo (except for the 'alert' sound, which
didn't need it), and so should sound virtually identical."
These are significantly smaller files and I didn't notice a difference in
the sound (of course, my speakers suck). They're also louder, which is good.
I'm committing these so people can try them out.
committer: Tailor Script <tailor@pidgin.im>
| author | Richard Laager <rlaager@wiktel.com> |
|---|---|
| date | Tue, 17 Jan 2006 02:49:32 +0000 |
| parents | ed017b9c532d |
| children |
line wrap: on
line source
/* * camdata.c * basecame * * Created by CS194 on Mon Apr 26 2004. * Copyright (c) 2004 __MyCompanyName__. All rights reserved. * */ #include "camdata.h" //#include "AppBlit_Component.h" #include "QTUtilities.h" #include "Utilities.h" #define BailNULL(n) if (!n) goto bail; #define BailError(n) if (n) goto bail; #define BailNil(n) if (!n) goto bail; #define BailErr(x) {if (x != noErr) goto bail;} #define bitdepth 32 mungDataPtr myMungData = NULL; long mWorlds[20]; UInt32 mRedCount[256], mGreenCound[256], mBlueCount[256]; static void DecompressSequencePreflight(GWorldPtr srcGWorld, ImageSequence *imageSeq, GWorldPtr destGWorld, Rect *srcRect); //static void DrawRGBHistogram(mungDataRecord *theMungData); //static void CreateEffectDescription(mungDataRecord *theMungData); //static void CreateEffectDecompSequence(mungDataRecord *theMungData); //static void AddGWorldDataSourceToEffectDecompSeq(mungDataRecord *theMungData); //static void MakeEffectTimeBaseForEffect(mungDataRecord *theMungData); //static void DrawUsingEffect(mungDataRecord *theMungData); OSErr InitializeMungData(Rect bounds) { OSErr err = noErr; if(myMungData) { DisposeMungData(); } myMungData = (mungDataPtr)NewPtrClear(sizeof(mungDataRecord)); if (myMungData == nil) { err = MemError(); goto bail; } myMungData->effect = 0; // always BailErr(QTNewGWorld(&(myMungData->gw),bitdepth,&bounds,0,0,0)); LockPixels(GetGWorldPixMap(myMungData->gw)); SetMungDataColorDefaults(); myMungData->selectedIndex = 0; myMungData->overlay = NULL; SetCurrentClamp(-1); myMungData->bounds = bounds; SetRect(&bounds, 0, 0, 256*2+4, 128*3 + 20); BailErr(QTNewGWorld(&(myMungData->histoWorld),bitdepth,&bounds,0,0,0)); LockPixels(GetGWorldPixMap(myMungData->histoWorld)); bail: return err; } OSErr DisposeMungData(void) { // check this out OSErr err = noErr; if(myMungData) { //if(myMungData->drawSeq) //{ // CDSequenceEnd(myMungData->drawSeq); //} if(myMungData->gw) { DisposeGWorld(myMungData->gw); myMungData->gw = nil; } if(myMungData->overlay) { DisposeGWorld(myMungData->overlay); myMungData->overlay = nil; } if(myMungData->histoWorld) { DisposeGWorld(myMungData->histoWorld); myMungData->histoWorld = nil; } if (myMungData->effectTimeBase) { DisposeTimeBase(myMungData->effectTimeBase); } if (myMungData->effectParams) { QTDisposeAtomContainer(myMungData->effectParams); } if (myMungData->effectDesc) { DisposeHandle((Handle)myMungData->effectDesc); } DisposePtr((Ptr)myMungData); myMungData = nil; } return err; } static void DecompressSequencePreflight(GWorldPtr srcGWorld, ImageSequence *imageSeq, GWorldPtr destGWorld, Rect *srcRect) // might not need this one { ImageDescriptionHandle imageDesc = nil; BailErr(MakeImageDescriptionForPixMap (GetGWorldPixMap(srcGWorld), &imageDesc)); // use our built-in decompressor to draw // (**imageDesc).cType = kCustomDecompressorType; // *********** MIGHT BE MAKING A BIG MISTAKE ****************** // pass a compressed sample so a codec can perform preflighting before the first DecompressSequenceFrameWhen call BailErr(DecompressSequenceBegin(imageSeq, imageDesc, destGWorld, 0, srcRect, nil, srcCopy, nil, 0, codecNormalQuality, bestSpeedCodec)); bail: if (imageDesc) { DisposeHandle((Handle)imageDesc); } } ImageSequence GetMungDataDrawSeq() { return myMungData->drawSeq; } void SetMungDataColorDefaults() { if(myMungData) { myMungData->redMin = 2; myMungData->redMax = 254; myMungData->greenMin = 2; myMungData->greenMax = 254; myMungData->blueMin = 2; myMungData->blueMax = 254; } } void GetMungDataBoundsRect(Rect *boundsRect) // might not need this one { MacSetRect (boundsRect, myMungData->bounds.left, myMungData->bounds.top, myMungData->bounds.right, myMungData->bounds.bottom ); } void SetCurrentClamp(short index) // :crazy:20040426 { myMungData->selectedIndex = index; } GWorldPtr GetMungDataOffscreen() { return (myMungData->gw); } void SetMungDataDrawSeq(ImageSequence theDrawSeq) { myMungData->drawSeq = theDrawSeq; } CGrafPtr GetMungDataWindowPort() { return GetWindowPort(myMungData->window); }
