bool operator==(const AudioStreamBasicDescription& x, const AudioStreamBasicDescription& y) { // the semantics for equality are: // 1) Values must match exactly // 2) wildcard's are ignored in the comparison #define MATCH(name) ((x.name) == 0 || (y.name) == 0 || (x.name) == (y.name)) return // check the sample rate (fiszero(x.mSampleRate) || fiszero(y.mSampleRate) || fequal(x.mSampleRate, y.mSampleRate)) // check the format ids && MATCH(mFormatID) // check the format flags && MatchFormatFlags(x, y) // check the bytes per packet && MATCH(mBytesPerPacket) // check the frames per packet && MATCH(mFramesPerPacket) // check the bytes per frame && MATCH(mBytesPerFrame) // check the channels per frame && MATCH(mChannelsPerFrame) // check the channels per frame && MATCH(mBitsPerChannel) ; }
Boolean FormatIsEqual(AudioStreamBasicDescription x, AudioStreamBasicDescription y) { // the semantics for equality are: // 1) Values must match exactly // 2) wildcard's are ignored in the comparison #define MATCH(name) ((x.name) == 0 || (y.name) == 0 || (x.name) == (y.name)) return ((x.mSampleRate==0.) || (y.mSampleRate==0.) || (x.mSampleRate==y.mSampleRate)) && MATCH(mFormatID) && MatchFormatFlags(x, y) && MATCH(mBytesPerPacket) && MATCH(mFramesPerPacket) && MATCH(mBytesPerFrame) && MATCH(mChannelsPerFrame) && MATCH(mBitsPerChannel) ; }