/* PROJECT: ReactOS sndrec32 * LICENSE: GPL - See COPYING in the top level directory * FILE: base/applications/sndrec32/audio_format.hpp * PURPOSE: Audio format abstraction * PROGRAMMERS: Marco Pagliaricci (irc: rendar) */ #ifndef _AUDIOFORMAT__H_ #define _AUDIOFORMAT__H_ #include "audio_def.hpp" _AUDIO_NAMESPACE_START_ class audio_format { protected: unsigned int samples_psec; unsigned short int bits_psample; unsigned short int chan; public: // // Ctors // audio_format( unsigned int samples_per_second, unsigned short int bits_per_sample, unsigned short int channels ) : samples_psec( samples_per_second ), bits_psample( bits_per_sample ), chan( channels ) { } // // Dtor // virtual ~audio_format( void ) { } // // Operators // bool operator==( audio_format & eq ) const { // // The same audio format is when samples per second, // bit per sample, and channels mono/stereo are equal. // return (( samples_psec == eq.samples_psec ) && ( bits_psample == eq.bits_psample ) && ( chan == eq.chan )); } // // Public Functions // unsigned int sample_rate( void ) const { return samples_psec; } unsigned short int bits( void ) const { return bits_psample; } unsigned short int channels( void ) const { return chan; } unsigned int byte_rate( void ) const { return ( samples_psec * chan * ( bits_psample / 8 )); } unsigned int block_align( void ) const { return ( chan * ( bits_psample / 8 )); } unsigned int samples_in_seconds( float seconds ) const { return ( unsigned int ) ((( float )samples_psec * ( float ) chan ) * seconds ); } unsigned int samples_in_bytes ( unsigned int bytes ) const { return ( bytes / (( bits_psample / 8 ) * chan )); } unsigned int bytes_in_samples( unsigned int samples ) const { return ( samples * (( bits_psample / 8 ) * chan )); } }; extern audio_format UNKNOWN_FORMAT; extern audio_format A44100_16BIT_STEREO; extern audio_format A44100_16BIT_MONO; _AUDIO_NAMESPACE_END_ #endif //ifdef _AUDIOFORMAT__H_