Krita Source Code Documentation
Loading...
Searching...
No Matches
KisAndroidMediaEncoderRunnable::Format Class Reference
+ Inheritance diagram for KisAndroidMediaEncoderRunnable::Format:

Classes

struct  Encoder
 

Public Member Functions

QWidget * createPreferencesWidget (const QVariantMap &preferences) const override
 
QString extension () const override
 
 Format (int formatId, const QVector< Encoder > &encoders)
 
int formatId () const
 
int getBitratePreference (const QVariantMap &preferences) const
 
QString getEncoderPreference (const QVariantMap &preferences) const
 
QVariantMap getPreferencesFromWidget (QWidget *widget) const override
 
QString key () const override
 
void resetPreferencesWidget (QWidget *widget) const override
 
QString title () const override
 
Type type () const override
 
- Public Member Functions inherited from KisMediaEncoderFormat
virtual ~KisMediaEncoderFormat ()=default
 

Private Member Functions

void applyPreferencesToWidget (KisAndroidMediaEncoderPreferencesWidget *pw, const QVariantMap &preferences) const
 

Static Private Member Functions

static int defaultBitrateForFormatId (int formatId)
 
static QString extensionForFormatId (int formatId)
 
static QString keyForFormatId (int formatId)
 
static QString titleForFormatId (int formatId)
 

Private Attributes

QVector< Encoderm_encoders
 
int m_formatId
 

Additional Inherited Members

- Public Types inherited from KisMediaEncoderFormat
enum class  Type { AndroidMediaEncoder }
 
- Protected Member Functions inherited from KisMediaEncoderFormat
 KisMediaEncoderFormat ()=default
 

Detailed Description

Definition at line 45 of file KisAndroidMediaEncoderRunnable.cpp.

Constructor & Destructor Documentation

◆ Format()

KisAndroidMediaEncoderRunnable::Format::Format ( int formatId,
const QVector< Encoder > & encoders )
inline

Definition at line 53 of file KisAndroidMediaEncoderRunnable.cpp.

56 {
57 // Prefer software encoders, because hardware encoders are often busted.
58 m_encoders.reserve(encoders.size());
59 for (const Encoder &encoder : encoders) {
60 if (!encoder.hardware) {
61 m_encoders.append(encoder);
62 }
63 }
64 for (const Encoder &encoder : encoders) {
65 if (encoder.hardware) {
66 m_encoders.append(encoder);
67 }
68 }
69 }
KisMediaEncoderFormat()=default
Encoder * encoder(Imf::OutputFile &file, const ExrPaintLayerSaveInfo &info, int width)

References encoder(), KisAndroidMediaEncoderRunnable::Format::Encoder::hardware, and m_encoders.

Member Function Documentation

◆ applyPreferencesToWidget()

void KisAndroidMediaEncoderRunnable::Format::applyPreferencesToWidget ( KisAndroidMediaEncoderPreferencesWidget * pw,
const QVariantMap & preferences ) const
inlineprivate

◆ createPreferencesWidget()

QWidget * KisAndroidMediaEncoderRunnable::Format::createPreferencesWidget ( const QVariantMap & preferences) const
inlineoverridevirtual

Implements KisMediaEncoderFormat.

Definition at line 96 of file KisAndroidMediaEncoderRunnable.cpp.

97 {
99
100 for (const Encoder &encoder : m_encoders) {
101 QString title;
102 if (encoder.hardware) {
103 title = i18n("%1 (hardware)", encoder.name);
104 } else {
105 title = i18n("%1 (software)", encoder.name);
106 }
108 }
109
110 applyPreferencesToWidget(pw, preferences);
111 return pw;
112 }
void addEncoderOption(const QString &title, const QString &key)
void applyPreferencesToWidget(KisAndroidMediaEncoderPreferencesWidget *pw, const QVariantMap &preferences) const

References KisAndroidMediaEncoderPreferencesWidget::addEncoderOption(), applyPreferencesToWidget(), encoder(), KisAndroidMediaEncoderRunnable::Format::Encoder::hardware, m_encoders, KisAndroidMediaEncoderRunnable::Format::Encoder::name, and title().

◆ defaultBitrateForFormatId()

static int KisAndroidMediaEncoderRunnable::Format::defaultBitrateForFormatId ( int formatId)
inlinestaticprivate

Definition at line 196 of file KisAndroidMediaEncoderRunnable.cpp.

197 {
198 switch (formatId) {
199 case FORMAT_MP4_H264:
200 return 6000000;
201 case FORMAT_WEBM_VP8:
202 return 7000000;
203 case FORMAT_MP4_AV1:
204 return 3200000;
205 }
206 return 6000000;
207 }

References KisAndroidMediaEncoderRunnable::FORMAT_MP4_AV1, KisAndroidMediaEncoderRunnable::FORMAT_MP4_H264, KisAndroidMediaEncoderRunnable::FORMAT_WEBM_VP8, and formatId().

◆ extension()

QString KisAndroidMediaEncoderRunnable::Format::extension ( ) const
inlineoverridevirtual

Implements KisMediaEncoderFormat.

Definition at line 91 of file KisAndroidMediaEncoderRunnable.cpp.

92 {
94 }

References extensionForFormatId(), and m_formatId.

◆ extensionForFormatId()

static QString KisAndroidMediaEncoderRunnable::Format::extensionForFormatId ( int formatId)
inlinestaticprivate

Definition at line 184 of file KisAndroidMediaEncoderRunnable.cpp.

185 {
186 switch (formatId) {
187 case FORMAT_MP4_H264:
188 case FORMAT_MP4_AV1:
189 return QStringLiteral("mp4");
190 case FORMAT_WEBM_VP8:
191 return QStringLiteral("webm");
192 }
193 return QString();
194 }

References KisAndroidMediaEncoderRunnable::FORMAT_MP4_AV1, KisAndroidMediaEncoderRunnable::FORMAT_MP4_H264, KisAndroidMediaEncoderRunnable::FORMAT_WEBM_VP8, and formatId().

◆ formatId()

int KisAndroidMediaEncoderRunnable::Format::formatId ( ) const
inline

Definition at line 71 of file KisAndroidMediaEncoderRunnable.cpp.

72 {
73 return m_formatId;
74 }

References m_formatId.

◆ getBitratePreference()

int KisAndroidMediaEncoderRunnable::Format::getBitratePreference ( const QVariantMap & preferences) const
inline

Definition at line 141 of file KisAndroidMediaEncoderRunnable.cpp.

142 {
143 int bitrate = preferences.value(QStringLiteral("bitrate")).toInt();
144 if (bitrate <= 0) {
146 } else {
147 return bitrate;
148 }
149 }
QAction * preferences(const QObject *recvr, const char *slot, QObject *parent)

References defaultBitrateForFormatId(), and m_formatId.

◆ getEncoderPreference()

QString KisAndroidMediaEncoderRunnable::Format::getEncoderPreference ( const QVariantMap & preferences) const
inline

Definition at line 131 of file KisAndroidMediaEncoderRunnable.cpp.

132 {
133 QString encoder = preferences.value(QStringLiteral("encoder")).toString();
134 if (encoder.isEmpty() && !m_encoders.isEmpty()) {
135 return m_encoders.constFirst().name;
136 } else {
137 return encoder;
138 }
139 }

References encoder(), and m_encoders.

◆ getPreferencesFromWidget()

QVariantMap KisAndroidMediaEncoderRunnable::Format::getPreferencesFromWidget ( QWidget * widget) const
inlineoverridevirtual

Implements KisMediaEncoderFormat.

Definition at line 121 of file KisAndroidMediaEncoderRunnable.cpp.

122 {
123 QVariantMap preferences;
124 KisAndroidMediaEncoderPreferencesWidget *pw = qobject_cast<KisAndroidMediaEncoderPreferencesWidget *>(widget);
126 preferences.insert(QStringLiteral("encoder"), pw->encoder());
127 preferences.insert(QStringLiteral("bitrate"), pw->bitrate());
128 return preferences;
129 }
#define KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(cond, val)
Definition kis_assert.h:129

References KisAndroidMediaEncoderPreferencesWidget::bitrate(), KisAndroidMediaEncoderPreferencesWidget::encoder(), and KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE.

◆ key()

QString KisAndroidMediaEncoderRunnable::Format::key ( ) const
inlineoverridevirtual

Implements KisMediaEncoderFormat.

Definition at line 81 of file KisAndroidMediaEncoderRunnable.cpp.

82 {
84 }

References keyForFormatId(), and m_formatId.

◆ keyForFormatId()

static QString KisAndroidMediaEncoderRunnable::Format::keyForFormatId ( int formatId)
inlinestaticprivate

Definition at line 158 of file KisAndroidMediaEncoderRunnable.cpp.

159 {
160 switch (formatId) {
161 case FORMAT_MP4_H264:
162 return QStringLiteral("android:mp4:h264");
163 case FORMAT_WEBM_VP8:
164 return QStringLiteral("android:webm:vp8");
165 case FORMAT_MP4_AV1:
166 return QStringLiteral("android:mp4:av1");
167 }
168 return QString();
169 }

References KisAndroidMediaEncoderRunnable::FORMAT_MP4_AV1, KisAndroidMediaEncoderRunnable::FORMAT_MP4_H264, KisAndroidMediaEncoderRunnable::FORMAT_WEBM_VP8, and formatId().

◆ resetPreferencesWidget()

void KisAndroidMediaEncoderRunnable::Format::resetPreferencesWidget ( QWidget * widget) const
inlineoverridevirtual

Implements KisMediaEncoderFormat.

Definition at line 114 of file KisAndroidMediaEncoderRunnable.cpp.

115 {
116 KisAndroidMediaEncoderPreferencesWidget *pw = qobject_cast<KisAndroidMediaEncoderPreferencesWidget *>(widget);
118 applyPreferencesToWidget(pw, QVariantMap());
119 }
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128

References applyPreferencesToWidget(), and KIS_SAFE_ASSERT_RECOVER_RETURN.

◆ title()

QString KisAndroidMediaEncoderRunnable::Format::title ( ) const
inlineoverridevirtual

Implements KisMediaEncoderFormat.

Definition at line 86 of file KisAndroidMediaEncoderRunnable.cpp.

87 {
88 return i18n("Android: %1", titleForFormatId(m_formatId));
89 }

References m_formatId, and titleForFormatId().

◆ titleForFormatId()

static QString KisAndroidMediaEncoderRunnable::Format::titleForFormatId ( int formatId)
inlinestaticprivate

Definition at line 171 of file KisAndroidMediaEncoderRunnable.cpp.

172 {
173 switch (formatId) {
174 case FORMAT_MP4_H264:
175 return QStringLiteral("MP4/H.264");
176 case FORMAT_WEBM_VP8:
177 return QStringLiteral("WEBM/VP8");
178 case FORMAT_MP4_AV1:
179 return QStringLiteral("MP4/AV1");
180 }
181 return QString();
182 }

References KisAndroidMediaEncoderRunnable::FORMAT_MP4_AV1, KisAndroidMediaEncoderRunnable::FORMAT_MP4_H264, KisAndroidMediaEncoderRunnable::FORMAT_WEBM_VP8, and formatId().

◆ type()

Type KisAndroidMediaEncoderRunnable::Format::type ( ) const
inlineoverridevirtual

Member Data Documentation

◆ m_encoders

QVector<Encoder> KisAndroidMediaEncoderRunnable::Format::m_encoders
private

Definition at line 209 of file KisAndroidMediaEncoderRunnable.cpp.

◆ m_formatId

int KisAndroidMediaEncoderRunnable::Format::m_formatId
private

Definition at line 210 of file KisAndroidMediaEncoderRunnable.cpp.


The documentation for this class was generated from the following file: