Class: Wavify::Core::SampleBuffer::MutableFloatWorkspace
- Inherits:
-
Object
- Object
- Wavify::Core::SampleBuffer::MutableFloatWorkspace
- Defined in:
- lib/wavify/core/sample_buffer.rb
Overview
Internal mutable processing workspace whose final Array ownership is transferred to an immutable SampleBuffer without another Array copy.
Instance Attribute Summary collapse
-
#format ⇒ Object
readonly
:nodoc:.
-
#samples ⇒ Object
readonly
:nodoc:.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(samples, format:) ⇒ MutableFloatWorkspace
constructor
A new instance of MutableFloatWorkspace.
- #replace!(samples) ⇒ Object
- #to_sample_buffer ⇒ Object
Constructor Details
#initialize(samples, format:) ⇒ MutableFloatWorkspace
Returns a new instance of MutableFloatWorkspace.
213 214 215 216 217 218 219 220 221 222 |
# File 'lib/wavify/core/sample_buffer.rb', line 213 def initialize(samples, format:) unless format.is_a?(Format) && format.sample_format == :float raise InvalidParameterError, "workspace format must be a floating-point Core::Format" end raise InvalidParameterError, "workspace samples must be an Array" unless samples.is_a?(Array) @samples = samples @format = format @consumed = false end |
Instance Attribute Details
#format ⇒ Object (readonly)
:nodoc:
204 205 206 |
# File 'lib/wavify/core/sample_buffer.rb', line 204 def format @format end |
#samples ⇒ Object (readonly)
:nodoc:
204 205 206 |
# File 'lib/wavify/core/sample_buffer.rb', line 204 def samples @samples end |
Class Method Details
.from_buffer(buffer, format:) ⇒ Object
206 207 208 209 210 211 |
# File 'lib/wavify/core/sample_buffer.rb', line 206 def self.from_buffer(buffer, format:) raise InvalidParameterError, "buffer must be Core::SampleBuffer" unless buffer.is_a?(SampleBuffer) converted = buffer.format == format ? buffer : buffer.convert(format) new(converted.samples.dup, format: format) end |
Instance Method Details
#replace!(samples) ⇒ Object
224 225 226 227 228 229 230 |
# File 'lib/wavify/core/sample_buffer.rb', line 224 def replace!(samples) raise InvalidParameterError, "workspace samples must be an Array" unless samples.is_a?(Array) raise InvalidParameterError, "workspace has already been consumed" if @consumed @samples = samples self end |
#to_sample_buffer ⇒ Object
232 233 234 235 236 237 |
# File 'lib/wavify/core/sample_buffer.rb', line 232 def to_sample_buffer raise InvalidParameterError, "workspace has already been consumed" if @consumed @consumed = true SampleBuffer.send(:adopt_mutable_float_samples!, @samples, @format) end |