[vlmc-devel] TrackWorkflow: Implement a helper to get a track from media format

Yikai Lu git at videolan.org
Mon Jul 4 15:34:16 CEST 2016


vlmc | branch: medialibrary | Yikai Lu <luyikei.qmltu at gmail.com> | Sat Jun 25 20:11:52 2016 +0900| [cff1540eed80498b50b8d76af23148d097f99ebe] | committer: Yikai Lu

TrackWorkflow: Implement a helper to get a track from media format

> https://code.videolan.org/videolan/vlmc/commit/cff1540eed80498b50b8d76af23148d097f99ebe
---

 src/Workflow/TrackWorkflow.cpp | 21 ++++++++++++++-------
 src/Workflow/TrackWorkflow.h   |  5 ++++-
 2 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/src/Workflow/TrackWorkflow.cpp b/src/Workflow/TrackWorkflow.cpp
index 4a18d02..e1a30ad 100644
--- a/src/Workflow/TrackWorkflow.cpp
+++ b/src/Workflow/TrackWorkflow.cpp
@@ -69,13 +69,20 @@ TrackWorkflow::~TrackWorkflow()
     delete m_clipsLock;
 }
 
+Backend::ITrack*
+TrackWorkflow::trackFromFormats( Clip::Formats formats )
+{
+    if ( formats.testFlag( Clip::Audio ) )
+        return m_audioTrack;
+    else if ( formats.testFlag( Clip::Video ) )
+        return m_videoTrack;
+    return nullptr;
+}
+
 void
 TrackWorkflow::addClip( Clip* clip, qint64 start )
 {
-    if ( clip->formats().testFlag( Clip::Audio ) )
-        m_audioTrack->insertAt( *clip->producer(), start );
-    else if ( clip->formats().testFlag( Clip::Video ) )
-        m_videoTrack->insertAt( *clip->producer(), start );
+    trackFromFormats( clip->formats() )->insertAt( *clip->producer(), start );
     m_clips.insertMulti( start, clip );
     emit clipAdded( this, clip, start );
 }
@@ -123,7 +130,7 @@ TrackWorkflow::moveClip( const QUuid& id, qint64 startingFrame )
         if ( it.value()->uuid() == id )
         {
             auto clip = it.value();
-            auto track = ( clip->formats().testFlag( Clip::Audio ) ) ? m_audioTrack : m_videoTrack;
+            auto track = trackFromFormats( it.value()->formats() );
             auto producer = track->clipAt( it.key() );
             track->remove( track->clipIndexAt( it.key() ) );
             track->insertAt( *producer, startingFrame );
@@ -148,7 +155,7 @@ TrackWorkflow::resizeClip( const QUuid &id, qint64 begin, qint64 end )
         auto clip = it.value();
         if ( clip->uuid() == id )
         {
-            auto track = ( clip->formats().testFlag( Clip::Audio ) ) ? m_audioTrack : m_videoTrack;
+            auto track = trackFromFormats( clip->formats() );
             track->resizeClip( track->clipIndexAt( it.key() ), begin, end );
         }
     }
@@ -189,7 +196,7 @@ TrackWorkflow::removeClip( const QUuid& id )
         if ( it.value()->uuid() == id )
         {
             auto    clip = it.value();
-            auto    track = ( clip->formats().testFlag( Clip::Audio ) ) ? m_audioTrack : m_videoTrack;
+            auto    track = trackFromFormats( clip->formats() );
             track->remove( track->clipIndexAt( it.key() ) );
             m_clips.erase( it );
             clip->disconnect( this );
diff --git a/src/Workflow/TrackWorkflow.h b/src/Workflow/TrackWorkflow.h
index e3e6746..66eb2fd 100644
--- a/src/Workflow/TrackWorkflow.h
+++ b/src/Workflow/TrackWorkflow.h
@@ -30,7 +30,8 @@
 #include <QMap>
 #include <QXmlStreamWriter>
 
-class   Clip;
+#include "Media/Clip.h"
+
 class   MainWorkflow;
 
 class   EffectHelper;
@@ -59,6 +60,8 @@ class   TrackWorkflow : public QObject
         TrackWorkflow( quint32 trackId, Backend::ITractor* tractor );
         ~TrackWorkflow();
 
+        Backend::ITrack*                        trackFromFormats( Clip::Formats formats );
+
         void                                    moveClip( const QUuid& id, qint64 startingFrame );
         void                                    resizeClip( const QUuid& id, qint64 begin, qint64 end );
         Clip*                                   removeClip( const QUuid& id );



More information about the Vlmc-devel mailing list