Mercurial > hg > ambi-plugin
view Source/Decoder.h @ 13:989865d55c73 tip
Commit.
author | martinm_home <martin.morrell@eecs.qmul.ac.uk> |
---|---|
date | Thu, 27 Sep 2012 23:30:29 +0100 |
parents | 87dc3d84c120 |
children |
line wrap: on
line source
/* * Decoder.h * ClassicAmbiDec * * Created by Martin Morrell on 14/06/2012. * Copyright 2012 Queen Mary University of London. All rights reserved. * */ class Decoder { friend class MyEditor; public: Decoder(); //Transforms & Zoom double Rotate; //+/-180 degrees double Tilt; //+/-180 degrees double Tumble; //+/-180 degrees double Zoom; //+/-100 int ZoomMethod; //4 positions //Decoder Speaker Layout int decoderMode; //Decoder mode int channelOrder; //Natural or 5.1 ordering int mode5x; //Hidden mode for 5.x decoders accessed by programs //Front Stereo Speaker Decoding & Reverb double Width; //0-90 degrees double Pattern; //0-1 Omni amount int Mode; //0 or 1 for xy or ms double RearVerb; //0-24dB double HiVerb; //0-24dB //Centre Speaker Decoding double centrePattern; //Centre mic pattern double centreGain; //Centre mic gain //Subwoofer Signal double subGain; //Subwoofer gain //Surround Speaker Decoding int surMode; //Rear mics mode double surPattern; //Rear mics pattern double surWidth; //Rear mics width double surGain; //Rear mics gain //Filter Code int Fs; //Sample Rate int Fc; //Crossover Frequency void clearFilter(); //Clears the previous filter values void filterCoefs(); //Calculates the filter coefficients //Overall Decoding Functions double output[6]; //Final Output int processDecoder(double &w, double &x, double &y, double &z); //Called fucntion to do the decoding private: //Conversion Functions double degRad(double angle); //Convert degreesto radians double radDeg(double angle); //Convert radians to degrees //Sound Field Rotations void rotateField(double &x, double &y); void tiltField(double &x, double &y); void tumbleField(double &x, double &y); //Zoom Methods void dominanceZoom(double &w, double &x, double &y, double &z); void pressZoom(double &w, double &x, double &y, double &z); void pushZoom(double &w, double &x, double &y, double &z); void focusZoom(double &w, double &x, double &y, double &z); //Stereo Decoders void xyDecode(double &w, double &x, double &y, double &z); void msDecode(double &w, double &x, double &y, double &z); //Reverbs void rearVerb(double &w, double &x, double &y, double &z); void hiVerb(double &w, double &x, double &y, double &z); //Surround void centreMic(double &w, double &x); void xySurDecode(double &w, double &x, double &y, double &z); void msSurDecode(double &w, double &x, double &y, double &z); //Filter Code void filterLF(double &w); void filterHF(double &w, double &x, double &y, double &z); double bLF[3]; //b Coefficients for Lower Frequency Band double bHF[3]; //b Coefficients for Higher Frequency Band double a[3]; //a Coefficients double prevInS[2]; //Previous Input LF Samples double prevOutS[2]; //Previous Output LF Samples double prevInw[2]; //Previous Input w Samples double prevOutw[2]; //Previous Output w Samples double prevInx[2]; //Previous Input x Samples double prevOutx[2]; //Previous Output x Samples double prevIny[2]; //Previous Input y Samples double prevOuty[2]; //Previous Output y Samples double prevInz[2]; //Previous Input z Samples double prevOutz[2]; //Previous Output z Samples //Decoder Types void monoDecoder(double &w, double &x, double &y, double &z); //Decode to mono, implemented but not used void stereoDecoder(double &w, double &x, double &y, double &z); //Decode to stereo void twoOneDecoder(double &w, double &x, double &y, double &z); //Decode to stereo void quadDecoder(double &w, double &x, double &y, double &z); //Decode to LRCS void fiveDecoder(double &w, double &x, double &y, double &z); //Decode to 5.0 void fiveOneDecoder(double &w, double &x, double &y, double &z); //Decode to 5.1 void heller1(double &w, double &x, double &y, double &z); void heller2(double &w, double &x, double &y, double &z); double outputL; //Left output double outputR; //Right output double outputC; //Centre output double outputS; //Subwoofer output double outputSL; //Surround Left output double outputSR; //Surround Right output };