mirror of
https://github.com/reactos/reactos.git
synced 2024-11-10 16:48:16 +00:00
c424146e2c
svn path=/branches/cmake-bringup/; revision=48236
163 lines
2.5 KiB
C++
163 lines
2.5 KiB
C++
/* 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_
|