view flattendynamics-ladspa.cpp @ 0:7632b9bf0cff

Initial stub plugin commit
author Chris Cannam
date Thu, 17 Jul 2014 12:16:02 +0100
parents
children f21753c504e1
line wrap: on
line source
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */

#include "flattendynamics-ladspa.h"

#include <alloca.h>
#include <iostream>
#include <cmath>

const char *const
FlattenDynamics::portNames[PortCount] =
{
    "Input",
    "Output",
};

const LADSPA_PortDescriptor 
FlattenDynamics::ports[PortCount] =
{
    LADSPA_PORT_INPUT  | LADSPA_PORT_AUDIO,
    LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO,
};

const LADSPA_PortRangeHint 
FlattenDynamics::hints[PortCount] =
{
    { 0, 0, 0 },
    { 0, 0, 0 },
};

const LADSPA_Properties
FlattenDynamics::properties = LADSPA_PROPERTY_HARD_RT_CAPABLE;

const LADSPA_Descriptor 
FlattenDynamics::ladspaDescriptor =
{
    0xf0b375, // "Unique" ID
    "flattendynamics", // Label
    properties,
    "FlattenDynamics", // Name
    "Queen Mary, University of London", // Maker
    "BSD", // Copyright
    PortCount,
    ports,
    portNames,
    hints,
    0, // Implementation data
    instantiate,
    connectPort,
    activate,
    run,
    0, // Run adding
    0, // Set run adding gain
    deactivate,
    cleanup
};

const LADSPA_Descriptor *
FlattenDynamics::getDescriptor(unsigned long index)
{
    if (index == 0) return &ladspaDescriptor;
    return 0;
}

FlattenDynamics::FlattenDynamics(int sampleRate) :
    m_sampleRate(sampleRate),
    m_input(0),
    m_output(0)
{
    reset();
}

FlattenDynamics::~FlattenDynamics()
{
}
    
LADSPA_Handle
FlattenDynamics::instantiate(const LADSPA_Descriptor *, unsigned long rate)
{
    FlattenDynamics *flatten = new FlattenDynamics(rate);
    return flatten;
}

void
FlattenDynamics::connectPort(LADSPA_Handle handle,
                           unsigned long port, LADSPA_Data *location)
{
    FlattenDynamics *flatten = (FlattenDynamics *)handle;

    float **ports[PortCount] = {
	&flatten->m_input,
	&flatten->m_output,
    };

    *ports[port] = (float *)location;
}

void
FlattenDynamics::activate(LADSPA_Handle handle)
{
    FlattenDynamics *flatten = (FlattenDynamics *)handle;
    flatten->reset();
}

void
FlattenDynamics::run(LADSPA_Handle handle, unsigned long samples)
{
    FlattenDynamics *flatten = (FlattenDynamics *)handle;
    flatten->runImpl(samples);
}

void
FlattenDynamics::deactivate(LADSPA_Handle handle)
{
    activate(handle); // both functions just reset the plugin
}

void
FlattenDynamics::cleanup(LADSPA_Handle handle)
{
    delete (FlattenDynamics *)handle;
}

void
FlattenDynamics::reset()
{
}

void
FlattenDynamics::updateParameters()
{
}

void
FlattenDynamics::runImpl(unsigned long sampleCount)
{
    if (!m_input || !m_output) return;
    updateParameters();

    int ii = 0;
    int oi = 0;
    const int sc = sampleCount;

    while (ii < sc) {
        //!!!
    }
}

const LADSPA_Descriptor *
ladspa_descriptor(unsigned long ix)
{
    return FlattenDynamics::getDescriptor(ix);
}