X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=mlt%2B%2B%2Fsrc%2FMltFilteredConsumer.cpp;fp=mlt%2B%2B%2Fsrc%2FMltFilteredConsumer.cpp;h=0000000000000000000000000000000000000000;hb=17b5a97b9bbe00b442a58a5065498e67b497af09;hp=73ee474951991dc83883bfa04451a78e2a7e9a6a;hpb=f4963a6aa07644399b273b5d2b1f9299c9047414;p=melted diff --git a/mlt++/src/MltFilteredConsumer.cpp b/mlt++/src/MltFilteredConsumer.cpp deleted file mode 100644 index 73ee474..0000000 --- a/mlt++/src/MltFilteredConsumer.cpp +++ /dev/null @@ -1,118 +0,0 @@ -/** - * MltFilteredConsumer.cpp - MLT Wrapper - * Copyright (C) 2004-2005 Charles Yates - * Author: Charles Yates - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#include "MltFilteredConsumer.h" -using namespace Mlt; - -FilteredConsumer::FilteredConsumer( Profile& profile, char *id, char *arg ) : - Consumer( profile, id, arg ) -{ - // Create a reference to the first service - first = new Service( *this ); -} - -FilteredConsumer::FilteredConsumer( Consumer &consumer ) : - Consumer( consumer ) -{ - // Create a reference to the first service - first = new Service( *this ); -} - -FilteredConsumer::~FilteredConsumer( ) -{ - // Delete the reference to the first service - delete first; -} - -int FilteredConsumer::connect( Service &service ) -{ - // All producers must connect to the first service, hence the use of the virtual here - return first->connect_producer( service ); -} - -int FilteredConsumer::attach( Filter &filter ) -{ - int error = 0; - if ( filter.is_valid( ) ) - { - Service *producer = first->producer( ); - error = filter.connect( *producer ); - if ( error == 0 ) - { - first->connect_producer( filter ); - delete first; - first = new Service( filter ); - } - delete producer; - } - else - { - error = 1; - } - return error; -} - -int FilteredConsumer::last( Filter &filter ) -{ - int error = 0; - if ( filter.is_valid( ) ) - { - Service *producer = this->producer( ); - error = filter.connect( *producer ); - if ( error == 0 ) - connect_producer( filter ); - delete producer; - } - else - { - error = 1; - } - return error; -} - -int FilteredConsumer::detach( Filter &filter ) -{ - if ( filter.is_valid( ) ) - { - Service *it = new Service( *first ); - while ( it->is_valid( ) && it->get_service( ) != filter.get_service( ) ) - { - Service *consumer = it->consumer( ); - delete it; - it = consumer; - } - if ( it->get_service( ) == filter.get_service( ) ) - { - Service *producer = it->producer( ); - Service *consumer = it->consumer( ); - consumer->connect_producer( *producer ); - Service dummy( NULL ); - it->connect_producer( dummy ); - if ( first->get_service( ) == it->get_service( ) ) - { - delete first; - first = new Service( *consumer ); - } - } - delete it; - } - return 0; -} -