diff --git a/qml/QmlAV/QuickFilter.h b/qml/QmlAV/QuickFilter.h index 128dd0f9a..3b110a536 100644 --- a/qml/QmlAV/QuickFilter.h +++ b/qml/QmlAV/QuickFilter.h @@ -76,9 +76,18 @@ class QuickAudioFilter : public AudioFilter Q_PROPERTY(QString avfilter READ avfilter WRITE setAVFilter NOTIFY avfilterChanged) Q_PROPERTY(QStringList supportedAVFilters READ supportedAVFilters) Q_PROPERTY(AudioFilter* userFilter READ userFilter WRITE setUserFilter NOTIFY userFilterChanged) + Q_PROPERTY(FilterType type READ type WRITE setType NOTIFY typeChanged) + Q_ENUMS(FilterType) public: + enum FilterType { + AVFilter, + UserFilter + }; QuickAudioFilter(QObject* parent = 0); + FilterType type() const; + void setType(FilterType value); + QStringList supportedAVFilters() const; QString avfilter() const; void setAVFilter(const QString& options); @@ -88,6 +97,7 @@ class QuickAudioFilter : public AudioFilter Q_SIGNALS: void avfilterChanged(); void userFilterChanged(); + void typeChanged(); protected: void process(Statistics* statistics, AudioFrame* frame = 0) Q_DECL_OVERRIDE; }; diff --git a/qml/QuickFilter.cpp b/qml/QuickFilter.cpp index c5d23dfff..1ea29d605 100644 --- a/qml/QuickFilter.cpp +++ b/qml/QuickFilter.cpp @@ -114,11 +114,13 @@ class QuickAudioFilterPrivate : public AudioFilterPrivate { public: QuickAudioFilterPrivate() : AudioFilterPrivate() + , type(QuickAudioFilter::AVFilter) , avfilter(new LibAVFilterAudio()) { filter = avfilter.data(); } + QuickAudioFilter::FilterType type; AudioFilter *filter; QScopedPointer user_filter; QScopedPointer avfilter; @@ -131,6 +133,24 @@ QuickAudioFilter::QuickAudioFilter(QObject *parent) connect(d.avfilter.data(), SIGNAL(optionsChanged()), this, SIGNAL(avfilterChanged())); } +QuickAudioFilter::FilterType QuickAudioFilter::type() const +{ + return d_func().type; +} + +void QuickAudioFilter::setType(FilterType value) +{ + DPTR_D(QuickAudioFilter); + if (d.type == value) + return; + d.type = value; + if (value == AVFilter) + d.filter = d.avfilter.data(); + else + d.filter = d.user_filter.data(); + Q_EMIT typeChanged(); +} + QStringList QuickAudioFilter::supportedAVFilters() const { return d_func().avfilter->filters(); diff --git a/qml/Video.qml b/qml/Video.qml index 6a0c51232..bb9d259c1 100644 --- a/qml/Video.qml +++ b/qml/Video.qml @@ -1,6 +1,6 @@ import QtQuick 2.0 -import QtAV 1.5 +import QtAV 1.11 /*! \qmltype Video @@ -62,6 +62,9 @@ import QtAV 1.5 Item { id: video + property alias videoFiltersGPU: videoOut.filters + property alias audioFilters: player.audioFilters + property alias videoFilters: player.videoFilters property alias backgroundColor: videoOut.backgroundColor property alias frameSize: videoOut.frameSize property alias sourceAspectRatio: videoOut.sourceAspectRatio diff --git a/qml/plugins.qmltypes b/qml/plugins.qmltypes index 570a3c3a0..b4cb9c263 100644 --- a/qml/plugins.qmltypes +++ b/qml/plugins.qmltypes @@ -395,9 +395,17 @@ Module { prototype: "QtAV::AudioFilter" exports: ["QtAV/AudioFilter 1.11"] exportMetaObjectRevisions: [0] + Enum { + name: "FilterType" + values: { + "AVFilter": 0, + "UserFilter": 1 + } + } Property { name: "avfilter"; type: "string" } Property { name: "supportedAVFilters"; type: "QStringList"; isReadonly: true } Property { name: "userFilter"; type: "AudioFilter"; isPointer: true } + Property { name: "type"; type: "FilterType" } } Component { name: "QuickSubtitle"