All pastes #161500 Raw Edit

Stuff

public cpp v1 · immutable
·published 2006-09-05 14:26 UTC
rendered paste body
/****************************************************************************Copyright 2006 Virginia Polytechnic Institute and State UniversityThis file is part of the OSSIE AudioPlayback.OSSIE AudioPlayback is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2 of the License, or(at your option) any later version.OSSIE AudioPlayback is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with OSSIE AudioPlayback; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA****************************************************************************/#include <iostream>#include "AudioPlayback.h"#include "ossie/cf.h"//#include "port_impl.h"AudioPlayback_i::AudioPlayback_i(const char *uuid, omni_condition *con) : Resource_impl(uuid){    soundIn_port = new standardInterfaces_i::complexShort_p("soundIn");    soundOut_port = new standardInterfaces_i::complexShort_u("soundOut");         component_running = con;    //inPort0_servant = new dataIn_complexShort_i(this);    //inPort0_var = inPort0_servant->_this();    //outPort0_servant = new dataOut_complexShort_i(this);    //outPort0_var = outPort0_servant->_this();    //outPort0_active = false;    component_alive = true;    //----------------------    // set mutexes    process_input.acquire();    wait_for_input.release();    // start the thread    processing_thread = new omni_thread(run_audioplayback, (void*) this);    processing_thread->start();}AudioPlayback_i::~AudioPlayback_i(void){    //delete inPort0_servant;    //delete outPort0_servant;}CORBA::Object_ptr AudioPlayback_i::getPort( const char*  portName) throw (CORBA::SystemException, CF::PortSupplier::UnknownPort){    std::cout << "AudioPlayback_i::getPort() invoked: portName=" << portName << std::endl;        CORBA::Object_var p;    p = soundIn_port->getPort(portName);    if (!CORBA::is_nil(p))	    return p._retn();    p = soundOut_port->getPort(portName);    if (!CORBA::is_nil(p))	    return p._retn();    throw CF::PortSupplier::UnknownPort();        /*    if (strcmp(_id,"AudioIn") == 0) {        return inPort0_var;    }    if (strcmp(_id,"AudioOut") == 0) {        outPort0_active = true;        return CF::Port::_duplicate(outPort0_var);    }    return NULL;    */}void AudioPlayback_i::start() throw (CORBA::SystemException, CF::Resource::StartError){     std::cout << "AudioPlayback_i::start() invoked" << std::endl;}void AudioPlayback_i::stop() throw (CORBA::SystemException, CF::Resource::StopError) {    std::cout << "AudioPlayback_i::stop() invoked" << std::endl;}void AudioPlayback_i::releaseObject() throw (CORBA::SystemException, CF::LifeCycle::ReleaseError){    // Clear the component running condition so main shuts down everything    component_alive = false;    component_running->signal();}void AudioPlayback_i::initialize() throw (CF::LifeCycle::InitializeError, CORBA::SystemException){}void AudioPlayback_i::configure(const CF::Properties& props) throw (CORBA::SystemException, CF::PropertySet::InvalidConfiguration, CF::PropertySet::PartialConfiguration){    std::cout << "AudioPlayback_i::configure() invoked" << std::endl;        //TODO: read sampling frequency from properties file    sampling_frequency = 16000;}void run_audioplayback (void *data){    AudioPlayback_i * mem = (AudioPlayback_i *) data;    std::cout << "run_audioplayback invoked" << std::endl;    //std::vector <dataOut_complexShort_i::PortInfo> outPorts;        PortTypes::ShortSequence *I_in(NULL), *Q_in(NULL);        unsigned int len, i;    while (1) {        // process data        // get data from port        //mem->process_input.acquire();        mem->soundIn_port->getData(I_in, Q_in);        len = I_in->length();        mem->I_out.length(len);        mem->Q_out.length(len);        for (i=0; i<len; i++) {            //std::cout << "AudioPlayback: " << mem->I_in[i] << "    " << mem->Q_in[i] << std::endl;            //mem->I_out[i] = I_in[i];            //mem->Q_out[i] = Q_in[i];        }        // empty input buffer		//mem->inPort0_var->bufferEmptied();				/*	    std::cout << "pushing packet..." << std::endl;        // Port vectors are finicky        outPorts = mem->outPort0_servant->get_ports();        if (!CORBA::is_nil(outPorts[0].port_var))             outPorts[0].port_var->pushPacket(mem->I_out, mem->Q_out);        */        mem->soundIn_port->bufferEmptied();        mem->soundOut_port->pushPacket(*I_in, *Q_in);     }}