Skip to content

Commit

Permalink
qml: add audio filter types. add filters for Video
Browse files Browse the repository at this point in the history
  • Loading branch information
wang-bin committed Apr 25, 2016
1 parent d3a1def commit a3df1f0
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 1 deletion.
10 changes: 10 additions & 0 deletions qml/QmlAV/QuickFilter.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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;
};
Expand Down
20 changes: 20 additions & 0 deletions qml/QuickFilter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<AudioFilter> user_filter;
QScopedPointer<LibAVFilterAudio> avfilter;
Expand All @@ -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();
Expand Down
5 changes: 4 additions & 1 deletion qml/Video.qml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

import QtQuick 2.0
import QtAV 1.5
import QtAV 1.11

/*!
\qmltype Video
Expand Down Expand Up @@ -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
Expand Down
8 changes: 8 additions & 0 deletions qml/plugins.qmltypes
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down

0 comments on commit a3df1f0

Please sign in to comment.