summaryrefslogtreecommitdiffstats
path: root/src/engine/AudioBuffer.hpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-11-18 01:20:52 +0000
committerDavid Robillard <d@drobilla.net>2009-11-18 01:20:52 +0000
commit58807f5840592959c31b415f7e2d64967594b5ee (patch)
tree6f666a1051f96b243c21a8195c549cd68d4d8f85 /src/engine/AudioBuffer.hpp
parent0487fd4a549d9eb9b04dbd19eecb1e3101311034 (diff)
downloadingen-58807f5840592959c31b415f7e2d64967594b5ee.tar.gz
ingen-58807f5840592959c31b415f7e2d64967594b5ee.tar.bz2
ingen-58807f5840592959c31b415f7e2d64967594b5ee.zip
Less reliance on Buffer::type() (which doesn't really make sense, since buffer type != port type...).
AudioBuffer copy improvements. Remove redundant AudioBuffer::_port_type (same as Buffer::_type). git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@2275 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/engine/AudioBuffer.hpp')
-rw-r--r--src/engine/AudioBuffer.hpp29
1 files changed, 8 insertions, 21 deletions
diff --git a/src/engine/AudioBuffer.hpp b/src/engine/AudioBuffer.hpp
index 25cfd15c..f7d036ff 100644
--- a/src/engine/AudioBuffer.hpp
+++ b/src/engine/AudioBuffer.hpp
@@ -43,30 +43,18 @@ public:
void copy(Context& context, const Buffer* src);
void mix(Context& context, const Buffer* src);
+ bool is_control() const { return _type.symbol() == Shared::PortType::CONTROL; }
+
inline Sample* data() const {
- switch (_port_type.symbol()) {
- case Shared::PortType::CONTROL:
- return (Sample*)object()->body;
- case Shared::PortType::AUDIO:
- return (Sample*)(object()->body + sizeof(LV2_Vector_Body));
- default:
- return NULL;
- }
+ return (is_control())
+ ? (Sample*)object()->body
+ : (Sample*)(object()->body + sizeof(LV2_Vector_Body));
}
inline SampleCount nframes() const {
- SampleCount ret = 0;
- switch (_port_type.symbol()) {
- case Shared::PortType::CONTROL:
- ret = 1;
- break;
- case Shared::PortType::AUDIO:
- ret = (_size - sizeof(LV2_Object) - sizeof(LV2_Vector_Body)) / sizeof(Sample);
- break;
- default:
- ret = 0;
- }
- return ret;
+ return (is_control())
+ ? 1
+ : (_size - sizeof(LV2_Object) - sizeof(LV2_Vector_Body)) / sizeof(Sample);
}
inline Sample& value_at(size_t offset) const
@@ -82,7 +70,6 @@ private:
LV2_Vector_Body* vector() { return(LV2_Vector_Body*)object()->body; }
- Shared::PortType _port_type; ///< Type of port this buffer is for
State _state; ///< State of buffer for setting values next cycle
Sample _set_value; ///< Value set by set_value (for completing the set next cycle)
FrameTime _set_time; ///< Time _set_value was set (to reset next cycle)