[vlmc-devel] Workflow: Imeplement addEffect

Hugo Beauzée-Luyssen hugo at beauzee.fr
Fri Jul 29 16:44:40 CEST 2016


On 07/28/2016 02:39 PM, Yikai Lu wrote:
> vlmc | branch: master | Yikai Lu <luyikei.qmltu at gmail.com> | Thu Jul 28 18:01:00 2016 +0900| [8b6524ed707025dc7ca4654118addf066ac8f99b] | committer: Yikai Lu
>
> Workflow: Imeplement addEffect
>
>> https://code.videolan.org/videolan/vlmc/commit/8b6524ed707025dc7ca4654118addf066ac8f99b
> ---
>
>  src/Workflow/MainWorkflow.cpp | 27 +++++++++++++++++++++++++++
>  src/Workflow/MainWorkflow.h   |  3 +++
>  2 files changed, 30 insertions(+)
>
> diff --git a/src/Workflow/MainWorkflow.cpp b/src/Workflow/MainWorkflow.cpp
> index 41caab8..88f5a84 100644
> --- a/src/Workflow/MainWorkflow.cpp
> +++ b/src/Workflow/MainWorkflow.cpp
> @@ -30,6 +30,7 @@
>  #include "Backend/MLT/MLTMultiTrack.h"
>  #include "Backend/MLT/MLTTrack.h"
>  #include "Renderer/AbstractRenderer.h"
> +#include "EffectsEngine/EffectHelper.h"
>  #ifdef WITH_GUI
>  #include "Gui/WorkflowFileRendererDialog.h"
>  #endif
> @@ -304,6 +305,32 @@ MainWorkflow::linkClips( const QString& uuidA, const QString& uuidB )
>                  }
>  }
>
> +QString
> +MainWorkflow::addEffect( const QString &clipUuid, const QString &effectId )
> +{
> +    EffectHelper* newEffect = nullptr;
> +
> +    try
> +    {
> +        newEffect = new EffectHelper( effectId );

You should create newEffect as a shared_ptr to begin with, in case no 
clip match the given UUID. With the current code, this would leak newEffect.

> +    }
> +    catch( Backend::InvalidServiceException& e )
> +    {
> +        return QStringLiteral( "" );
> +    }
> +
> +    for ( auto clip : m_clips )
> +        if ( clip->uuid().toString() == clipUuid )
> +        {
> +            Commands::trigger( new Commands::Effect::Add(
> +                                   std::shared_ptr<EffectHelper>( newEffect ), clip->input() )
> +                               );
> +            return newEffect->uuid().toString();
> +        }
> +
> +    return QStringLiteral( "" );
> +}
> +
>  bool
>  MainWorkflow::startRenderToFile( const QString &outputFileName, quint32 width, quint32 height,
>                                   double fps, const QString &ar, quint32 vbitrate, quint32 abitrate,
> diff --git a/src/Workflow/MainWorkflow.h b/src/Workflow/MainWorkflow.h
> index f7a5400..8bc5169 100644
> --- a/src/Workflow/MainWorkflow.h
> +++ b/src/Workflow/MainWorkflow.h
> @@ -161,6 +161,9 @@ class   MainWorkflow : public QObject
>          Q_INVOKABLE
>          void                    linkClips( const QString& uuidA, const QString& uuidB );
>
> +        Q_INVOKABLE
> +        QString                 addEffect( const QString& clipUuid, const QString& effectId );
> +
>          bool                    startRenderToFile( const QString& outputFileName, quint32 width, quint32 height,
>                                                     double fps, const QString& ar, quint32 vbitrate, quint32 abitrate,
>                                                     quint32 nbChannels, quint32 sampleRate );
>
> _______________________________________________
> Vlmc-devel mailing list
> Vlmc-devel at videolan.org
> https://mailman.videolan.org/listinfo/vlmc-devel
>



More information about the Vlmc-devel mailing list