Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

wvpcmutils.h

Go to the documentation of this file.
00001 /* -*- Mode: C++ -*- 00002 * Worldvisions Weaver Software: 00003 * Copyright (C) 1997-2002 Net Integration Technologies, Inc. 00004 * 00005 * Provides some support for working with PCM audio. 00006 */ 00007 #ifndef __WVPCMUTILS_H 00008 #define __WVPCMUTILS_H 00009 00010 #include "wvencoder.h" 00011 #include "wvfunctorencoder.h" 00012 00013 struct WvPCMSigned16ToNormFloatFunctor 00014 { 00015 float operator()(signed short int pcm) const 00016 { 00017 return float(pcm) / 32768; 00018 } 00019 }; 00020 struct WvPCMNormFloatToSigned16Functor 00021 { 00022 signed short int operator()(float pcm) const 00023 { 00024 return (pcm < -1.0f) ? -32768 : (pcm >= 1.0f) ? 32767 : 00025 (signed short int)(pcm * 32768); 00026 } 00027 }; 00028 struct WvPCMSigned16ToUnnormFloatFunctor 00029 { 00030 float operator()(signed short int pcm) const 00031 { 00032 return float(pcm); 00033 } 00034 }; 00035 struct WvPCMUnnormFloatToSigned16Functor 00036 { 00037 signed short int operator()(float pcm) const 00038 { 00039 return (pcm < -32768.0f) ? -32768 : (pcm >= 32767.0f) ? 32767 : 00040 (signed short int)(pcm); 00041 } 00042 }; 00043 struct WvPCMSigned16ToNormDoubleFunctor 00044 { 00045 double operator()(signed short int pcm) const 00046 { 00047 return double(pcm) / 32768; 00048 } 00049 }; 00050 struct WvPCMNormDoubleToSigned16Functor 00051 { 00052 signed short int operator()(double pcm) const 00053 { 00054 return (pcm < -1.0) ? -32768 : (pcm >= 1.0f) ? 32767 : 00055 (signed short int)(pcm * 32768); 00056 } 00057 }; 00058 00059 00060 /** 00061 * An encoder that converts PCM audio from normalized 00062 * floats to 16 bit signed short ints. 00063 */ 00064 class WvPCMNormFloatToSigned16Encoder : public WvFunctorEncoder 00065 <float, signed short int, WvPCMNormFloatToSigned16Functor> 00066 { 00067 public: 00068 WvPCMNormFloatToSigned16Encoder() : 00069 WvFunctorEncoder<IType, OType, FType>(FType()) { } 00070 }; 00071 00072 00073 /** 00074 * An encoder that converts PCM audio from 16 bit signed short ints 00075 * to normalized floats. 00076 */ 00077 class WvPCMSigned16ToNormFloatEncoder : public WvFunctorEncoder 00078 <signed short int, float, WvPCMSigned16ToNormFloatFunctor> 00079 { 00080 public: 00081 WvPCMSigned16ToNormFloatEncoder() : 00082 WvFunctorEncoder<IType, OType, FType>(FType()) { } 00083 }; 00084 00085 /** 00086 * An encoder that converts PCM audio from unnormalized 00087 * floats to 16 bit signed short ints. 00088 */ 00089 class WvPCMUnnormFloatToSigned16Encoder : public WvFunctorEncoder 00090 <float, signed short int, WvPCMUnnormFloatToSigned16Functor> 00091 { 00092 public: 00093 WvPCMUnnormFloatToSigned16Encoder() : 00094 WvFunctorEncoder<IType, OType, FType>(FType()) { } 00095 }; 00096 00097 00098 /** 00099 * An encoder that converts PCM audio from 16 bit signed short ints 00100 * to unnormalized floats. 00101 */ 00102 class WvPCMSigned16ToUnnormFloatEncoder : public WvFunctorEncoder 00103 <signed short int, float, WvPCMSigned16ToUnnormFloatFunctor> 00104 { 00105 public: 00106 WvPCMSigned16ToUnnormFloatEncoder() : 00107 WvFunctorEncoder<IType, OType, FType>(FType()) { } 00108 }; 00109 00110 /** 00111 * An encoder that converts PCM audio from normalized 00112 * doubles to 16 bit signed short ints. 00113 */ 00114 class WvPCMNormDoubleToSigned16Encoder : public WvFunctorEncoder 00115 <double, signed short int, WvPCMNormDoubleToSigned16Functor> 00116 { 00117 public: 00118 WvPCMNormDoubleToSigned16Encoder() : 00119 WvFunctorEncoder<IType, OType, FType>(FType()) { } 00120 }; 00121 00122 00123 /** 00124 * An encoder that converts PCM audio from 16 bit signed short ints 00125 * to normalized doubles. 00126 */ 00127 class WvPCMSigned16ToNormDoubleEncoder : public WvFunctorEncoder 00128 <signed short int, double, WvPCMSigned16ToNormDoubleFunctor> 00129 { 00130 public: 00131 WvPCMSigned16ToNormDoubleEncoder() : 00132 WvFunctorEncoder<IType, OType, FType>(FType()) { } 00133 }; 00134 00135 #endif // __WVPCMUTILS_H

Generated on Tue Oct 5 01:09:20 2004 for WvStreams by doxygen 1.3.7