7#include <mftransform.h>
8#include <private/qcomptr_p.h>
9#include <private/qwindowsmultimediautils_p.h>
10#include <private/qcomtaskresource_p.h>
12#include <QtCore/qlist.h>
13#include <QtCore/qset.h>
14#include <QtGui/qimagewriter.h>
37 IMFActivate **activateArrayRaw =
nullptr;
40 HRESULT hr = MFTEnumEx(
category, MFT_ENUM_FLAG_ALL,
nullptr,
nullptr, &activateArrayRaw, &
num);
45 for (UINT32
i = 0;
i <
num; ++
i) {
49 hr = activateArray[
i]->ActivateObject(IID_PPV_ARGS(
transform.GetAddressOf()));
51 while (SUCCEEDED(hr)) {
52 ComPtr<IMFMediaType> mediaType;
54 if (
category == MFT_CATEGORY_AUDIO_ENCODER ||
category == MFT_CATEGORY_VIDEO_ENCODER)
55 hr =
transform->GetOutputAvailableType(0, typeIndex++, mediaType.GetAddressOf());
57 hr =
transform->GetInputAvailableType(0, typeIndex++, mediaType.GetAddressOf());
60 GUID subtype = GUID_NULL;
61 hr = mediaType->GetGUID(MF_MT_SUBTYPE, &subtype);
63 codecSet.
insert(codecForFormat<T>(subtype));
150 const auto audioDecoders = getCodecSet<QMediaFormat::AudioCodec>(MFT_CATEGORY_AUDIO_DECODER);
151 const auto audioEncoders = getCodecSet<QMediaFormat::AudioCodec>(MFT_CATEGORY_AUDIO_ENCODER);
152 const auto videoDecoders = getCodecSet<QMediaFormat::VideoCodec>(MFT_CATEGORY_VIDEO_DECODER);
153 const auto videoEncoders = getCodecSet<QMediaFormat::VideoCodec>(MFT_CATEGORY_VIDEO_ENCODER);
155 for (
const auto &codecMap : containerTable) {
160 if (decoderFormats.
contains(codecMap.format)) {
162 m.format = codecMap.format;
163 m.audio = (audioDecoders & mapAudioSet).
values();
164 m.video = (videoDecoders & mapVideoSet).
values();
165 if (!
m.video.empty() || !
m.audio.empty())
169 if (encoderFormats.
contains(codecMap.format)) {
171 m.format = codecMap.format;
172 m.audio = (audioEncoders & mapAudioSet).
values();
173 m.video = (videoEncoders & mapVideoSet).
values();
174 if (!
m.video.empty() || !
m.audio.empty())
static QList< QByteArray > supportedImageFormats()
Returns the list of image formats supported by QImageWriter.
void append(parameter_type t)
bool contains(const T &value) const
iterator insert(const T &value)
static QString fromUtf8(QByteArrayView utf8)
This is an overloaded member function, provided for convenience. It differs from the above function o...
const QLoggingCategory & category()
[1]
Combined button and popup list for selecting options.
GLenum GLsizei GLsizei GLint * values
[15]
GLint GLsizei GLsizei GLenum format
GLuint GLenum GLenum transform