diff options
author | Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com> | 2012-05-18 10:26:51 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-18 05:28:35 +0200 |
commit | 63db99a8ee1fa6430cf5f6ab3406323bd7c14850 (patch) | |
tree | 90a7e37191ad4de209a5156bdbe60896768c3963 /src/multimedia/recording | |
parent | f965f683d09eebcf5d1d0e8403db402551ac7c50 (diff) |
Added custom parameters to Audio/Video/ImageEncodingSettings
This allows to specify more advanced and system/codec specific settings
Change-Id: Ia0a2e94eaf56df285a219018e0beab895a2e7c2a
Reviewed-by: Ling Hu <ling.hu@nokia.com>
Diffstat (limited to 'src/multimedia/recording')
-rw-r--r-- | src/multimedia/recording/qmediaencodersettings.cpp | 175 | ||||
-rw-r--r-- | src/multimedia/recording/qmediaencodersettings.h | 16 |
2 files changed, 185 insertions, 6 deletions
diff --git a/src/multimedia/recording/qmediaencodersettings.cpp b/src/multimedia/recording/qmediaencodersettings.cpp index 309ddef9b..edb72b511 100644 --- a/src/multimedia/recording/qmediaencodersettings.cpp +++ b/src/multimedia/recording/qmediaencodersettings.cpp @@ -78,7 +78,8 @@ public: bitrate(other.bitrate), sampleRate(other.sampleRate), channels(other.channels), - quality(other.quality) + quality(other.quality), + encodingOptions(other.encodingOptions) { } @@ -89,6 +90,7 @@ public: int sampleRate; int channels; QtMultimedia::EncodingQuality quality; + QVariantMap encodingOptions; private: QAudioEncoderSettingsPrivate& operator=(const QAudioEncoderSettingsPrivate &other); @@ -166,7 +168,8 @@ bool QAudioEncoderSettings::operator==(const QAudioEncoderSettings &other) const d->sampleRate == other.d->sampleRate && d->channels == other.d->channels && d->quality == other.d->quality && - d->codec == other.d->codec); + d->codec == other.d->codec && + d->encodingOptions == other.d->encodingOptions); } /*! @@ -318,6 +321,57 @@ void QAudioEncoderSettings::setQuality(QtMultimedia::EncodingQuality quality) d->quality = quality; } +/*! + Returns the value of encoding \a option. + + \sa setEncodingOption(), encodingOptions() +*/ +QVariant QAudioEncoderSettings::encodingOption(const QString &option) const +{ + return d->encodingOptions.value(option); +} + +/*! + Returns the all the encoding options as QVariantMap. + + \sa encodingOption(), setEncodingOptions() +*/ +QVariantMap QAudioEncoderSettings::encodingOptions() const +{ + return d->encodingOptions; +} + +/*! + Set the encoding \a option \a value. + + The supported set and meaning of encoding options are + system and selected codec specific. + + \sa encodingOption(), setEncodingOptions() +*/ +void QAudioEncoderSettings::setEncodingOption(const QString &option, const QVariant &value) +{ + d->isNull = false; + if (value.isNull()) + d->encodingOptions.remove(option); + else + d->encodingOptions.insert(option, value); +} + +/*! + Replace all the \a encoding options. + + The supported set and meaning of encoding options are + system and selected codec specific. + + \sa encodingOption(), setEncodingOptions() +*/ +void QAudioEncoderSettings::setEncodingOptions(const QVariantMap &options) +{ + d->isNull = false; + d->encodingOptions = options; +} + class QVideoEncoderSettingsPrivate : public QSharedData { public: @@ -338,7 +392,8 @@ public: bitrate(other.bitrate), resolution(other.resolution), frameRate(other.frameRate), - quality(other.quality) + quality(other.quality), + encodingOptions(other.encodingOptions) { } @@ -349,6 +404,7 @@ public: QSize resolution; qreal frameRate; QtMultimedia::EncodingQuality quality; + QVariantMap encodingOptions; private: QVideoEncoderSettingsPrivate& operator=(const QVideoEncoderSettingsPrivate &other); @@ -420,7 +476,8 @@ bool QVideoEncoderSettings::operator==(const QVideoEncoderSettings &other) const d->quality == other.d->quality && d->codec == other.d->codec && d->resolution == other.d->resolution && - qFuzzyCompare(d->frameRate, other.d->frameRate)); + qFuzzyCompare(d->frameRate, other.d->frameRate) && + d->encodingOptions == other.d->encodingOptions); } /*! @@ -592,6 +649,56 @@ void QVideoEncoderSettings::setQuality(QtMultimedia::EncodingQuality quality) d->quality = quality; } +/*! + Returns the value of encoding \a option. + + \sa setEncodingOption(), encodingOptions() +*/ +QVariant QVideoEncoderSettings::encodingOption(const QString &option) const +{ + return d->encodingOptions.value(option); +} + +/*! + Returns the all the encoding options as QVariantMap. + + \sa encodingOption(), setEncodingOptions() +*/ +QVariantMap QVideoEncoderSettings::encodingOptions() const +{ + return d->encodingOptions; +} + +/*! + Set the encoding \a option \a value. + + The supported set and meaning of encoding options are + system and selected codec specific. + + \sa encodingOption(), setEncodingOptions() +*/ +void QVideoEncoderSettings::setEncodingOption(const QString &option, const QVariant &value) +{ + d->isNull = false; + if (value.isNull()) + d->encodingOptions.remove(option); + else + d->encodingOptions.insert(option, value); +} + +/*! + Replace all the \a encoding options. + + The supported set and meaning of encoding options are + system and selected codec specific. + + \sa encodingOption(), setEncodingOptions() +*/ +void QVideoEncoderSettings::setEncodingOptions(const QVariantMap &options) +{ + d->isNull = false; + d->encodingOptions = options; +} class QImageEncoderSettingsPrivate : public QSharedData @@ -608,7 +715,8 @@ public: isNull(other.isNull), codec(other.codec), resolution(other.resolution), - quality(other.quality) + quality(other.quality), + encodingOptions(other.encodingOptions) { } @@ -616,6 +724,7 @@ public: QString codec; QSize resolution; QtMultimedia::EncodingQuality quality; + QVariantMap encodingOptions; private: QImageEncoderSettingsPrivate& operator=(const QImageEncoderSettingsPrivate &other); @@ -687,7 +796,8 @@ bool QImageEncoderSettings::operator==(const QImageEncoderSettings &other) const (d->isNull == other.d->isNull && d->quality == other.d->quality && d->codec == other.d->codec && - d->resolution == other.d->resolution); + d->resolution == other.d->resolution && + d->encodingOptions == other.d->encodingOptions); } @@ -783,5 +893,58 @@ void QImageEncoderSettings::setQuality(QtMultimedia::EncodingQuality quality) d->isNull = false; d->quality = quality; } + +/*! + Returns the value of encoding \a option. + + \sa setEncodingOption(), encodingOptions() +*/ +QVariant QImageEncoderSettings::encodingOption(const QString &option) const +{ + return d->encodingOptions.value(option); +} + +/*! + Returns the all the encoding options as QVariantMap. + + \sa encodingOption(), setEncodingOptions() +*/ +QVariantMap QImageEncoderSettings::encodingOptions() const +{ + return d->encodingOptions; +} + +/*! + Set the encoding \a option \a value. + + The supported set and meaning of encoding options are + system and selected codec specific. + + \sa encodingOption(), setEncodingOptions() +*/ +void QImageEncoderSettings::setEncodingOption(const QString &option, const QVariant &value) +{ + d->isNull = false; + if (value.isNull()) + d->encodingOptions.remove(option); + else + d->encodingOptions.insert(option, value); +} + +/*! + Replace all the \a encoding options. + + The supported set and meaning of encoding options are + system and selected codec specific. + + \sa encodingOption(), setEncodingOptions() +*/ +void QImageEncoderSettings::setEncodingOptions(const QVariantMap &options) +{ + d->isNull = false; + d->encodingOptions = options; +} + + QT_END_NAMESPACE diff --git a/src/multimedia/recording/qmediaencodersettings.h b/src/multimedia/recording/qmediaencodersettings.h index c2f2f1dd8..c7448fee3 100644 --- a/src/multimedia/recording/qmediaencodersettings.h +++ b/src/multimedia/recording/qmediaencodersettings.h @@ -45,6 +45,7 @@ #include <QtCore/qsharedpointer.h> #include <QtCore/qstring.h> #include <QtCore/qsize.h> +#include <QtCore/qvariant.h> #include <qtmultimediadefs.h> #include "qtmedianamespace.h" @@ -89,6 +90,11 @@ public: QtMultimedia::EncodingQuality quality() const; void setQuality(QtMultimedia::EncodingQuality quality); + QVariant encodingOption(const QString &option) const; + QVariantMap encodingOptions() const; + void setEncodingOption(const QString &option, const QVariant &value); + void setEncodingOptions(const QVariantMap &options); + private: QSharedDataPointer<QAudioEncoderSettingsPrivate> d; }; @@ -127,6 +133,11 @@ public: QtMultimedia::EncodingQuality quality() const; void setQuality(QtMultimedia::EncodingQuality quality); + QVariant encodingOption(const QString &option) const; + QVariantMap encodingOptions() const; + void setEncodingOption(const QString &option, const QVariant &value); + void setEncodingOptions(const QVariantMap &options); + private: QSharedDataPointer<QVideoEncoderSettingsPrivate> d; }; @@ -156,6 +167,11 @@ public: QtMultimedia::EncodingQuality quality() const; void setQuality(QtMultimedia::EncodingQuality quality); + QVariant encodingOption(const QString &option) const; + QVariantMap encodingOptions() const; + void setEncodingOption(const QString &option, const QVariant &value); + void setEncodingOptions(const QVariantMap &options); + private: QSharedDataPointer<QImageEncoderSettingsPrivate> d; }; |