mirror of
https://github.com/wang-bin/QtAV.git
synced 2026-10-28 19:16:48 +08:00
filter.installTo implemention
This commit is contained in:
@@ -23,6 +23,8 @@
|
||||
#include "private/Filter_p.h"
|
||||
#include "QtAV/Statistics.h"
|
||||
#include "QtAV/FilterManager.h"
|
||||
#include "QtAV/AVOutput.h"
|
||||
#include "QtAV/AVPlayer.h"
|
||||
|
||||
namespace QtAV {
|
||||
|
||||
@@ -96,4 +98,21 @@ FilterContext::Type Filter::contextType() const
|
||||
return FilterContext::None;
|
||||
}
|
||||
|
||||
/*TODO: move to AVOutput.cpp to reduce dependency?*/
|
||||
bool Filter::installTo(AVOutput *output)
|
||||
{
|
||||
return output->installFilter(this);
|
||||
}
|
||||
|
||||
/*TODO: move to AVPlayer.cpp to reduce dependency?*/
|
||||
bool Filter::installTo(AVPlayer *player, int thread)
|
||||
{
|
||||
return player->installFilter(this, thread);
|
||||
}
|
||||
|
||||
bool Filter::uninstall()
|
||||
{
|
||||
return FilterManager::instance().uninstallFilter(this);
|
||||
}
|
||||
|
||||
} //namespace QtAV
|
||||
|
||||
@@ -130,7 +130,7 @@ bool FilterManager::uninstallFilter(Filter *filter)
|
||||
* because the filter will never used in old target
|
||||
*/
|
||||
|
||||
d.filter_out_map.erase(it);
|
||||
d.filter_out_map.erase(it); //use unregister()?
|
||||
out->uninstallFilter(filter); //post an uninstall task to active player's AVThread
|
||||
return true;
|
||||
}
|
||||
@@ -142,7 +142,7 @@ bool FilterManager::uninstallFilter(Filter *filter)
|
||||
* because the filter will never used in old target
|
||||
*/
|
||||
|
||||
d.filter_player_map.erase(it2);
|
||||
d.filter_player_map.erase(it2); //use unregister()?
|
||||
player->uninstallFilter(filter); //post an uninstall task to active player's AVThread
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -43,6 +43,7 @@ public:
|
||||
bool unregisterFilter(Filter *filter);
|
||||
// async. release filter until filter is removed from it's target.filters
|
||||
bool releaseFilter(Filter *filter);
|
||||
bool uninstallFilter(Filter *filter);
|
||||
signals:
|
||||
// invoked in UninstallFilterTask in AVThread.
|
||||
void uninstallInTargetDone(Filter *filter);
|
||||
@@ -53,7 +54,6 @@ private slots:
|
||||
|
||||
private:
|
||||
//convenient function to uninstall the filter. used by releaseFilter
|
||||
bool uninstallFilter(Filter *filter);
|
||||
bool releaseFilterNow(Filter *filter);
|
||||
FilterManager();
|
||||
~FilterManager();
|
||||
|
||||
Reference in New Issue
Block a user