filter.installTo implemention

This commit is contained in:
wang-bin
2013-09-27 18:49:44 +08:00
parent 3828eb0f35
commit ef16ce0f0f
3 changed files with 22 additions and 3 deletions
+19
View File
@@ -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
+2 -2
View File
@@ -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;
}
+1 -1
View File
@@ -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();