[vlmc-devel] [PATCH 02/10] Remove TrackWorkflow::type()
yikei lu
luyikei.qmltu at gmail.com
Thu May 19 01:01:08 CEST 2016
No. TackWorkflow::type() was intended to be used to know TrackType for
a temporary use. Though if we don't use the insertMulti( that Audio
and Video can simultaneously be played in single track ) solution, we
need to use it.
2016-05-19 4:29 GMT+09:00 Hugo Beauzée-Luyssen <hugo at beauzee.fr>:
> On 05/04/2016 04:18 PM, Yikai Lu wrote:
>> ---
>> src/Commands/Commands.cpp | 2 --
>> src/Gui/timeline/TracksView.cpp | 77 +++++++++++++++++++++--------------------
>> src/Workflow/TrackWorkflow.cpp | 7 ----
>> src/Workflow/TrackWorkflow.h | 2 --
>> 4 files changed, 40 insertions(+), 48 deletions(-)
>>
>> diff --git a/src/Commands/Commands.cpp b/src/Commands/Commands.cpp
>> index b3ecb90..7fbd72a 100644
>> --- a/src/Commands/Commands.cpp
>> +++ b/src/Commands/Commands.cpp
>> @@ -117,8 +117,6 @@ Commands::Clip::Move::Move( TrackWorkflow *oldTrack, TrackWorkflow *newTrack,
>> m_newPos( newPos )
>>
>> {
>> - Q_ASSERT( oldTrack->type() == newTrack->type() );
>> -
>> m_oldPos = oldTrack->getClipPosition( clipHelper->uuid() );
>> connect( clipHelper->clip(), SIGNAL( destroyed() ), this, SLOT( invalidate() ) );
>> retranslate();
>> diff --git a/src/Gui/timeline/TracksView.cpp b/src/Gui/timeline/TracksView.cpp
>> index 514eb2c..b30c9b3 100644
>> --- a/src/Gui/timeline/TracksView.cpp
>> +++ b/src/Gui/timeline/TracksView.cpp
>> @@ -248,64 +248,64 @@ TracksView::addItem( TrackWorkflow *tw, Workflow::Helper *helper, qint64 start )
>> if ( m_itemsLoaded.contains( helper->uuid() ) )
>> return ;
>> qint32 track = tw->trackId();
>> - Workflow::TrackType trackType = tw->type();
>> -
>> - // If there is not enough tracks to insert
>> - // the clip do it now.
>> - if ( trackType == Workflow::VideoTrack )
>> - {
>> - if ( track + 1 >= m_numVideoTrack )
>> - {
>> - int nbTrackToAdd = ( track + 2 ) - m_numVideoTrack;
>> - for ( int i = 0; i < nbTrackToAdd; ++i )
>> - addTrack( Workflow::VideoTrack );
>> - }
>> - }
>> - else if ( trackType == Workflow::AudioTrack )
>> - {
>> - if ( track + 1 >= m_numAudioTrack )
>> - {
>> - int nbTrackToAdd = ( track + 2 ) - m_numAudioTrack;
>> - for ( int i = 0; i < nbTrackToAdd; ++i )
>> - addTrack( Workflow::AudioTrack );
>> - }
>> - }
>>
>> AbstractGraphicsItem *item = nullptr;
>> ClipHelper *clipHelper = qobject_cast<ClipHelper*>( helper );
>> if ( clipHelper != nullptr )
>> {
>> AbstractGraphicsMediaItem *mediaItem = nullptr;
>> - if ( trackType == Workflow::VideoTrack )
>> +
>> + bool hasVideo = clipHelper->formats() & ClipHelper::Video;
>> + bool hasAudio = clipHelper->formats() & ClipHelper::Audio;
>> +
>> + // If there is not enough tracks to insert
>> + // the clip do it now.
>> + if ( hasVideo )
>> {
>> + if ( track + 1 >= m_numVideoTrack )
>> + {
>> + int nbTrackToAdd = ( track + 2 ) - m_numVideoTrack;
>> + for ( int i = 0; i < nbTrackToAdd; ++i )
>> + addTrack( Workflow::VideoTrack );
>> + }
>> mediaItem = new GraphicsMovieItem( clipHelper );
>> connect( mediaItem, SIGNAL( split(AbstractGraphicsMediaItem*,qint64) ),
>> this, SLOT( split(AbstractGraphicsMediaItem*,qint64) ) );
>> }
>> - else if ( trackType == Workflow::AudioTrack )
>> + else if ( hasAudio )
>> {
>> + if ( track + 1 >= m_numAudioTrack )
>> + {
>> + int nbTrackToAdd = ( track + 2 ) - m_numAudioTrack;
>> + for ( int i = 0; i < nbTrackToAdd; ++i )
>> + addTrack( Workflow::AudioTrack );
>> + }
>> mediaItem = new GraphicsAudioItem( clipHelper );
>> connect( mediaItem, SIGNAL( split(AbstractGraphicsMediaItem*,qint64) ),
>> this, SLOT( split(AbstractGraphicsMediaItem*,qint64) ) );
>> }
>> +
>> item = mediaItem;
>> m_itemsLoaded.insert( helper->uuid() );
>> item->m_tracksView = this;
>> item->setHeight( item->itemHeight() );
>> - item->setTrack( getTrack( trackType, track ) );
>> + if ( hasVideo )
>> + item->setTrack( getTrack( Workflow::VideoTrack, track ) );
>> + else if ( hasAudio )
>> + item->setTrack( getTrack( Workflow::AudioTrack, track ) );
>> item->setStartPos( start );
>> item->m_oldTrack = tw;
>> moveItem( item, track, start );
>> //If the item has some effects:
>> foreach ( EffectHelper *effectHelper, clipHelper->clipWorkflow()->effects( Effect::Filter ) )
>> {
>> - addEffectItem( effectHelper, trackType, track, start );
>> + addEffectItem( effectHelper, Workflow::VideoTrack, track, start );
>> }
>> }
>> else
>> {
>> EffectHelper *effectHelper = qobject_cast<EffectHelper*>( helper );
>> - addEffectItem( effectHelper, trackType, track, start );
>> + addEffectItem( effectHelper, Workflow::VideoTrack, track, start );
>> }
>> updateDuration();
>> }
>> @@ -743,18 +743,21 @@ TracksView::findPosition( AbstractGraphicsItem *item, qint32 track, qint64 time
>> void
>> TracksView::removeItem( TrackWorkflow *tw, const QUuid &uuid )
>> {
>> - GraphicsTrack *track = getTrack( tw->type(), tw->trackId() );
>> + for ( int i = 0; i < Workflow::NbTrackType; ++i )
>> + {
>> + GraphicsTrack *track = getTrack( (Workflow::TrackType)i, tw->trackId() );
>>
>> - if ( track == nullptr )
>> - return ;
>> - QList<QGraphicsItem*> trackItems = track->childItems();;
>> + if ( track == nullptr )
>> + return ;
>> + QList<QGraphicsItem*> trackItems = track->childItems();;
>>
>> - for ( int i = 0; i < trackItems.size(); ++i )
>> - {
>> - AbstractGraphicsItem *item = dynamic_cast<AbstractGraphicsItem*>( trackItems.at( i ) );
>> - if ( !item || item->uuid() != uuid )
>> - continue;
>> - removeItem( item );
>> + for ( int i = 0; i < trackItems.size(); ++i )
>> + {
>> + AbstractGraphicsItem *item = dynamic_cast<AbstractGraphicsItem*>( trackItems.at( i ) );
>> + if ( !item || item->uuid() != uuid )
>> + continue;
>> + removeItem( item );
>> + }
>> }
>> }
>>
>> diff --git a/src/Workflow/TrackWorkflow.cpp b/src/Workflow/TrackWorkflow.cpp
>> index e126e09..f40ed4c 100644
>> --- a/src/Workflow/TrackWorkflow.cpp
>> +++ b/src/Workflow/TrackWorkflow.cpp
>> @@ -46,7 +46,6 @@
>>
>> TrackWorkflow::TrackWorkflow( quint32 trackId ) :
>> m_length( 0 ),
>> - m_trackType( Workflow::NbTrackType ),
>> m_trackId( trackId )
>> {
>> m_clipsLock = new QReadWriteLock;
>> @@ -675,12 +674,6 @@ TrackWorkflow::trackId() const
>> return m_trackId;
>> }
>>
>> -Workflow::TrackType
>> -TrackWorkflow::type() const
>> -{
>> - return m_trackType;
>> -}
>> -
>> EffectsEngine::EffectList*
>> TrackWorkflow::filters()
>> {
>> diff --git a/src/Workflow/TrackWorkflow.h b/src/Workflow/TrackWorkflow.h
>> index 6625068..d9369d2 100644
>> --- a/src/Workflow/TrackWorkflow.h
>> +++ b/src/Workflow/TrackWorkflow.h
>> @@ -94,7 +94,6 @@ class TrackWorkflow : public EffectUser
>> void stopFrameComputing();
>> bool hasNoMoreFrameToRender( qint64 currentFrame ) const;
>> quint32 trackId() const;
>> - Workflow::TrackType type() const;
>> //FIXME: this is not thread safe if the list gets modified (but it can't be const, as it is intended to be modified...)
>> EffectsEngine::EffectList *filters();
>> EffectsEngine::EffectList *mixers();
>> @@ -123,7 +122,6 @@ class TrackWorkflow : public EffectUser
>>
>> QReadWriteLock* m_clipsLock;
>>
>> - const Workflow::TrackType m_trackType;
>> qint64 m_lastFrame[Workflow::NbTrackType];
>> Workflow::Frame *m_mixerBuffer;
>> const quint32 m_trackId;
>>
>
> Is there a specific reason why?
>
> --
> Hugo Beauzée-Luyssen
> www.beauzee.fr
> _______________________________________________
> Vlmc-devel mailing list
> Vlmc-devel at videolan.org
> https://mailman.videolan.org/listinfo/vlmc-devel
More information about the Vlmc-devel
mailing list