[vlmc-devel] [PATCH 8/8] Remove TrackHandler
Hugo Beauzée-Luyssen
hugo at beauzee.fr
Fri May 13 11:16:09 CEST 2016
On 05/03/2016 07:24 AM, Yikai Lu wrote:
> ---
> src/Workflow/TrackHandler.cpp | 249 ------------------------------------------
> src/Workflow/TrackHandler.h | 114 -------------------
> 2 files changed, 363 deletions(-)
> delete mode 100644 src/Workflow/TrackHandler.cpp
> delete mode 100644 src/Workflow/TrackHandler.h
>
> diff --git a/src/Workflow/TrackHandler.cpp b/src/Workflow/TrackHandler.cpp
> deleted file mode 100644
> index 819d984..0000000
> --- a/src/Workflow/TrackHandler.cpp
> +++ /dev/null
> @@ -1,249 +0,0 @@
> -/*****************************************************************************
> - * TrackHandler.cpp : Handle multiple track of a kind (audio or video)
> - *****************************************************************************
> - * Copyright (C) 2008-2016 VideoLAN
> - *
> - * Authors: Hugo Beauzée-Luyssen <hugo at beauzee.fr>
> - *
> - * This program is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU 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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
> - *****************************************************************************/
> -
> -#include "TrackHandler.h"
> -#include "TrackWorkflow.h"
> -#include "Workflow/Types.h"
> -
> -#include <QVariant>
> -
> -TrackHandler::TrackHandler( unsigned int nbTracks, Workflow::TrackType trackType ) :
> - m_trackCount( nbTracks ),
> - m_trackType( trackType ),
> - m_length( 0 )
> -{
> - m_tracks = new Toggleable<TrackWorkflow*>[nbTracks];
> - for ( unsigned int i = 0; i < nbTracks; ++i )
> - {
> - m_tracks[i].setPtr( new TrackWorkflow( trackType, i ) );
> - connect( m_tracks[i], SIGNAL( lengthChanged( qint64 ) ),
> - this, SLOT( lengthUpdated(qint64) ) );
> - }
> -}
> -
> -TrackHandler::~TrackHandler()
> -{
> - for (unsigned int i = 0; i < m_trackCount; ++i)
> - delete m_tracks[i];
> - delete[] m_tracks;
> -}
> -
> -void
> -TrackHandler::startRender( quint32 width, quint32 height )
> -{
> - m_endReached = false;
> - if ( m_length == 0 )
> - m_endReached = true;
> - else
> - {
> - for ( unsigned int i = 0; i < m_trackCount; ++i )
> - {
> - m_tracks[i]->initRender( width, height );
> - }
> - }
> -}
> -
> -qint64
> -TrackHandler::getLength() const
> -{
> - return m_length;
> -}
> -
> -Workflow::OutputBuffer*
> -TrackHandler::getOutput( qint64 currentFrame, qint64 subFrame, bool paused )
> -{
> - bool validTrack = false;
> -
> - for ( int i = m_trackCount - 1; i >= 0; --i )
> - {
> - if ( m_tracks[i].activated() == false || m_tracks[i]->hasNoMoreFrameToRender( currentFrame ) )
> - continue ;
> - validTrack = true;
> - Workflow::OutputBuffer *ret = m_tracks[i]->getOutput( currentFrame, subFrame, paused );
> - if ( ret == nullptr )
> - continue ;
> - else
> - return ret;
> - }
> - if ( validTrack == false )
> - allTracksEnded();
> - return nullptr;
> -}
> -
> -qint64
> -TrackHandler::getClipPosition( const QUuid &uuid, unsigned int trackId ) const
> -{
> - Q_ASSERT( trackId < m_trackCount );
> -
> - return m_tracks[trackId]->getClipPosition( uuid );
> -}
> -
> -void
> -TrackHandler::stop()
> -{
> - for (unsigned int i = 0; i < m_trackCount; ++i)
> - m_tracks[i]->stop();
> -}
> -
> -void
> -TrackHandler::muteTrack( unsigned int trackId )
> -{
> - m_tracks[trackId].deactivate();
> -}
> -
> -void
> -TrackHandler::unmuteTrack( unsigned int trackId )
> -{
> - m_tracks[trackId].activate();
> -}
> -
> -ClipHelper*
> -TrackHandler::getClipHelper( const QUuid& uuid, unsigned int trackId )
> -{
> - Q_ASSERT( trackId < m_trackCount );
> -
> - return m_tracks[trackId]->getClipHelper( uuid );
> -}
> -
> -void
> -TrackHandler::clear()
> -{
> - for ( unsigned int i = 0; i < m_trackCount; ++i )
> - {
> - m_tracks[i]->clear();
> - }
> - m_length = 0;
> -}
> -
> -bool
> -TrackHandler::endIsReached() const
> -{
> - return m_endReached;
> -}
> -
> -void
> -TrackHandler::allTracksEnded()
> -{
> - m_endReached = true;
> - emit tracksEndReached();
> -}
> -
> -unsigned int
> -TrackHandler::getTrackCount() const
> -{
> - return m_trackCount;
> -}
> -
> -QVariant
> -TrackHandler::toVariant() const
> -{
> - QVariantList l;
> - for ( unsigned int i = 0; i < m_trackCount; ++i)
> - {
> - if ( m_tracks[i]->getLength() > 0 || m_tracks[i]->count( Effect::Filter ) > 0 )
> - {
> - l << QVariantHash{
> - { "id", i },
> - { "track", m_tracks[i]->toVariant() }
> - };
> - }
> - }
> - return QVariant( l );
> -}
> -
> -void
> -TrackHandler::loadFromVariant( const QVariant &variant )
> -{
> - for ( const auto& var : variant.toList() )
> - {
> - quint32 id = var.toMap()["id"].toUInt();
> - m_tracks[ id ]->loadFromVariant( var.toMap()["track"]);
> - }
> -}
> -
> -void
> -TrackHandler::renderOneFrame()
> -{
> - for ( unsigned int i = 0; i < m_trackCount; ++i)
> - {
> - if ( m_tracks[i].activated() == true )
> - m_tracks[i]->renderOneFrame();
> - }
> -}
> -
> -void
> -TrackHandler::setFullSpeedRender( bool val )
> -{
> - for ( unsigned int i = 0; i < m_trackCount; ++i)
> - m_tracks[i]->setFullSpeedRender( val );
> -}
> -
> -void
> -TrackHandler::muteClip( const QUuid &uuid, quint32 trackId )
> -{
> - m_tracks[trackId]->muteClip( uuid );
> -}
> -
> -void
> -TrackHandler::unmuteClip( const QUuid &uuid, quint32 trackId )
> -{
> - m_tracks[trackId]->unmuteClip( uuid );
> -}
> -
> -bool
> -TrackHandler::contains( const QUuid &uuid ) const
> -{
> - for ( unsigned int i = 0; i < m_trackCount; ++i )
> - if ( m_tracks[i]->contains( uuid ) == true )
> - return true;
> - return false;
> -}
> -
> -void
> -TrackHandler::stopFrameComputing()
> -{
> - for ( unsigned int i = 0; i < m_trackCount; ++i )
> - m_tracks[i]->stopFrameComputing();
> -}
> -
> -void
> -TrackHandler::lengthUpdated( qint64 )
> -{
> - qint64 maxLength = 0;
> -
> - for ( unsigned int i = 0; i < m_trackCount; ++i )
> - {
> - if ( m_tracks[i]->getLength() > maxLength )
> - maxLength = m_tracks[i]->getLength();
> - }
> - if ( maxLength != m_length )
> - {
> - m_length = maxLength;
> - emit lengthChanged( m_length );
> - }
> -}
> -
> -TrackWorkflow*
> -TrackHandler::track( quint32 trackId )
> -{
> - return m_tracks[trackId];
> -}
> diff --git a/src/Workflow/TrackHandler.h b/src/Workflow/TrackHandler.h
> deleted file mode 100644
> index 22f6921..0000000
> --- a/src/Workflow/TrackHandler.h
> +++ /dev/null
> @@ -1,114 +0,0 @@
> -/*****************************************************************************
> - * TrackHandler.h : Handle multiple track of a kind (audio or video)
> - *****************************************************************************
> - * Copyright (C) 2008-2016 VideoLAN
> - *
> - * Authors: Hugo Beauzée-Luyssen <hugo at beauzee.fr>
> - *
> - * This program is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU 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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
> - *****************************************************************************/
> -
> -#ifndef TRACKHANDLER_H
> -#define TRACKHANDLER_H
> -
> -#include <QObject>
> -#include <QXmlStreamWriter>
> -#include "Tools/Toggleable.hpp"
> -#include "MainWorkflow.h"
> -
> -class ClipHelper;
> -class TrackWorkflow;
> -
> -class TrackHandler : public QObject
> -{
> - Q_OBJECT
> - public:
> - TrackHandler( unsigned int nbTracks, Workflow::TrackType trackType );
> - ~TrackHandler();
> -
> - /**
> - * Returns the number of tracks in this handler
> - */
> - unsigned int getTrackCount() const;
> - qint64 getLength() const;
> - void startRender( quint32 width, quint32 height );
> - /**
> - * \param currentFrame The current rendering frame (ie the video frame, in all case)
> - * \param subFrame The type-dependent frame. IE, for a video track,
> - * it's the same as currentFrame, but for an audio
> - * track, it will be different.
> - * \param paused The renderer paused state
> - */
> - Workflow::OutputBuffer *getOutput( qint64 currentFrame, qint64 subFrame,
> - bool paused );
> - qint64 getClipPosition( const QUuid& uuid, unsigned int trackId ) const;
> - void stop();
> - void muteTrack( unsigned int trackId );
> - void unmuteTrack( unsigned int trackId );
> - ClipHelper *getClipHelper( const QUuid& uuid, unsigned int trackId );
> - void clear();
> -
> - bool endIsReached() const;
> -
> - QVariant toVariant() const;
> - void loadFromVariant( const QVariant& var );
> -
> - /**
> - * \brief Will configure the track workflow so they render only one frame
> - *
> - * \sa MainWorkflow::renderOneFrame()
> - */
> - void renderOneFrame();
> -
> - /**
> - * \sa MainWorkflow::setFullSpeedRender();
> - */
> - void setFullSpeedRender( bool val );
> -
> - /**
> - * \brief Will mute a clip in the given track.
> - *
> - * \param uuid The uuid of the clip to mute.
> - * \param trackId The id of the track holding the clip.
> - */
> - void muteClip( const QUuid& uuid, quint32 trackId );
> - void unmuteClip( const QUuid& uuid, quint32 trackId );
> -
> - bool contains( const QUuid& uuid ) const;
> -
> - void stopFrameComputing();
> -
> - TrackWorkflow *track( quint32 trackId );
> -
> - private:
> - void allTracksEnded();
> -
> - private:
> - Toggleable<TrackWorkflow*>* m_tracks;
> - unsigned int m_trackCount;
> - Workflow::TrackType m_trackType;
> - qint64 m_length;
> - unsigned int m_highestTrackNumber;
> - bool m_endReached;
> -
> - private slots:
> - void lengthUpdated( qint64 newLength );
> -
> - signals:
> - void tracksEndReached();
> - void lengthChanged( qint64 );
> -};
> -
> -#endif // TRACKHANDLER_H
>
Nice :)
More information about the Vlmc-devel
mailing list