Sha256: 595e06cb3e4e4f965bbd6cef879268d9d0426acee81a1d655c16b85ca180df27

Contents?: true

Size: 1.51 KB

Versions: 13

Compression:

Stored size: 1.51 KB

Contents

// -*- c++ -*-
#pragma once
#ifndef __BEEPS_SRC_PROCESSOR_H__
#define __BEEPS_SRC_PROCESSOR_H__


#include <map>
#include "beeps/processor.h"
#include "signals.h"


namespace Beeps
{


	class ProcessorContext;


	float Processor_get_buffering_seconds (Processor* processor);


	class SignalsBuffer
	{

		public:

			SignalsBuffer (
				uint nsamples_per_block, uint nchannels, double sample_rate);

			void process (
				ProcessorContext* context,
				Processor* processor, Signals* signals, uint* offset);

			operator bool () const;

			bool operator ! () const;

		private:

			Signals buffer;

			uint buffer_offset = 0;

			double last_update_time = 0;

			void buffer_next (
				ProcessorContext* context, Processor* processor, uint offset);

			void clear ();

	};// SignalsBuffer


	class ProcessorContext : public Processor::Context
	{

		public:

			ProcessorContext (
				uint nsamples_per_process, uint nchannels, double sample_rate);

			Signals process_signals (Processor* processor);

			void process (
				Processor* processor, Signals* signals, uint* offset,
				bool ignore_buffer = false);

			//void push_offset (uint offset);

			//uint pop_offset ();

			bool is_finished () const;

			operator bool () const;

			bool operator ! () const;

		private:

			Signals signals;

			uint offset = 0;

			bool finished = false;

			//std::vector<uint> offset_stack;

			std::map<uintptr_t, std::unique_ptr<SignalsBuffer>> buffers;

			SignalsBuffer* get_buffer (Processor* processor);

	};// ProcessorContext


}// Beeps


#endif//EOH

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
beeps-0.3 src/processor.h
beeps-0.2.1 src/processor.h
beeps-0.2 src/processor.h
beeps-0.1.46 src/processor.h
beeps-0.1.45 src/processor.h
beeps-0.1.44 src/processor.h
beeps-0.1.43 src/processor.h
beeps-0.1.42 src/processor.h
beeps-0.1.41 src/processor.h
beeps-0.1.40 src/processor.h
beeps-0.1.39 src/processor.h
beeps-0.1.38 src/processor.h
beeps-0.1.37 src/processor.h