Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/audaspace/intern/AUD_ChannelMapperReader.h')
-rw-r--r--intern/audaspace/intern/AUD_ChannelMapperReader.h64
1 files changed, 58 insertions, 6 deletions
diff --git a/intern/audaspace/intern/AUD_ChannelMapperReader.h b/intern/audaspace/intern/AUD_ChannelMapperReader.h
index 091ed06db15..af16f2ff49d 100644
--- a/intern/audaspace/intern/AUD_ChannelMapperReader.h
+++ b/intern/audaspace/intern/AUD_ChannelMapperReader.h
@@ -43,44 +43,96 @@ class AUD_ChannelMapperReader : public AUD_EffectReader
{
private:
/**
- * The sound output buffer.
+ * The sound reading buffer.
*/
AUD_Buffer m_buffer;
/**
* The output specification.
*/
- AUD_Specs m_specs;
+ AUD_Channels m_target_channels;
/**
* The channel count of the reader.
*/
- int m_rch;
+ AUD_Channels m_source_channels;
/**
* The mapping specification.
*/
- float **m_mapping;
+ float* m_mapping;
+
+ /**
+ * The size of the mapping.
+ */
+ int m_map_size;
+
+ /**
+ * The mono source angle.
+ */
+ float m_mono_angle;
+
+ static const AUD_Channel MONO_MAP[];
+ static const AUD_Channel STEREO_MAP[];
+ static const AUD_Channel STEREO_LFE_MAP[];
+ static const AUD_Channel SURROUND4_MAP[];
+ static const AUD_Channel SURROUND5_MAP[];
+ static const AUD_Channel SURROUND51_MAP[];
+ static const AUD_Channel SURROUND61_MAP[];
+ static const AUD_Channel SURROUND71_MAP[];
+ static const AUD_Channel* CHANNEL_MAPS[];
+
+ static const float MONO_ANGLES[];
+ static const float STEREO_ANGLES[];
+ static const float STEREO_LFE_ANGLES[];
+ static const float SURROUND4_ANGLES[];
+ static const float SURROUND5_ANGLES[];
+ static const float SURROUND51_ANGLES[];
+ static const float SURROUND61_ANGLES[];
+ static const float SURROUND71_ANGLES[];
+ static const float* CHANNEL_ANGLES[];
// hide copy constructor and operator=
AUD_ChannelMapperReader(const AUD_ChannelMapperReader&);
AUD_ChannelMapperReader& operator=(const AUD_ChannelMapperReader&);
+ /**
+ * Calculates the mapping matrix.
+ */
+ void calculateMapping();
+
+ /**
+ * Calculates the distance between two angles.
+ */
+ float angleDistance(float alpha, float beta);
+
public:
/**
* Creates a channel mapper reader.
* \param reader The reader to map.
* \param mapping The mapping specification as two dimensional float array.
*/
- AUD_ChannelMapperReader(AUD_IReader* reader, float **mapping);
+ AUD_ChannelMapperReader(AUD_Reference<AUD_IReader> reader, AUD_Channels channels);
/**
* Destroys the reader.
*/
~AUD_ChannelMapperReader();
+ /**
+ * Sets the requested channel output count.
+ * \param channels The channel output count.
+ */
+ void setChannels(AUD_Channels channels);
+
+ /**
+ * Sets the angle for mono sources.
+ * \param angle The angle for mono sources.
+ */
+ void setMonoAngle(float angle);
+
virtual AUD_Specs getSpecs() const;
- virtual void read(int & length, sample_t* & buffer);
+ virtual void read(int& length, bool& eos, sample_t* buffer);
};
#endif //AUD_CHANNELMAPPERREADER