86 QList<QImageCapture::FileFormat> list;
87 const auto formats = QImageWriter::supportedImageFormats();
89 for (
const auto &f : formats) {
90 auto format = QString::fromUtf8(f);
91 if (format.compare(u"jpg", Qt::CaseInsensitive) == 0)
92 list.append(QImageCapture::FileFormat::JPEG);
93 else if (format.compare(u"png", Qt::CaseInsensitive) == 0)
94 list.append(QImageCapture::FileFormat::PNG);
95 else if (format.compare(u"webp", Qt::CaseInsensitive) == 0)
96 list.append(QImageCapture::FileFormat::WebP);
97 else if (format.compare(u"tiff", Qt::CaseInsensitive) == 0)
98 list.append(QImageCapture::FileFormat::Tiff);
104QWindowsFormatInfo::QWindowsFormatInfo()
106 const QList<CodecMap> containerTable = {
107 { QMediaFormat::MPEG4,
108 { QMediaFormat::AudioCodec::AAC, QMediaFormat::AudioCodec::MP3, QMediaFormat::AudioCodec::ALAC, QMediaFormat::AudioCodec::AC3, QMediaFormat::AudioCodec::EAC3 },
109 { QMediaFormat::VideoCodec::H264, QMediaFormat::VideoCodec::H265, QMediaFormat::VideoCodec::MotionJPEG } },
110 { QMediaFormat::Matroska,
111 { QMediaFormat::AudioCodec::AAC, QMediaFormat::AudioCodec::MP3, QMediaFormat::AudioCodec::ALAC, QMediaFormat::AudioCodec::AC3, QMediaFormat::AudioCodec::EAC3, QMediaFormat::AudioCodec::FLAC, QMediaFormat::AudioCodec::Vorbis, QMediaFormat::AudioCodec::Opus },
112 { QMediaFormat::VideoCodec::H264, QMediaFormat::VideoCodec::H265, QMediaFormat::VideoCodec::VP8, QMediaFormat::VideoCodec::VP9, QMediaFormat::VideoCodec::MotionJPEG } },
113 { QMediaFormat::WebM,
114 { QMediaFormat::AudioCodec::Vorbis, QMediaFormat::AudioCodec::Opus },
115 { QMediaFormat::VideoCodec::VP8, QMediaFormat::VideoCodec::VP9 } },
116 { QMediaFormat::QuickTime,
117 { QMediaFormat::AudioCodec::AAC, QMediaFormat::AudioCodec::MP3, QMediaFormat::AudioCodec::ALAC, QMediaFormat::AudioCodec::AC3, QMediaFormat::AudioCodec::EAC3 },
118 { QMediaFormat::VideoCodec::H264, QMediaFormat::VideoCodec::H265, QMediaFormat::VideoCodec::MotionJPEG } },
120 { QMediaFormat::AudioCodec::AAC },
123 { QMediaFormat::AudioCodec::MP3 },
125 { QMediaFormat::FLAC,
126 { QMediaFormat::AudioCodec::FLAC },
128 { QMediaFormat::Mpeg4Audio,
129 { QMediaFormat::AudioCodec::AAC, QMediaFormat::AudioCodec::MP3, QMediaFormat::AudioCodec::ALAC, QMediaFormat::AudioCodec::AC3, QMediaFormat::AudioCodec::EAC3 },
132 { QMediaFormat::AudioCodec::WMA },
135 { QMediaFormat::AudioCodec::WMA },
136 { QMediaFormat::VideoCodec::WMV } }
139 const QSet<QMediaFormat::FileFormat> decoderFormats = {
141 QMediaFormat::Matroska,
143 QMediaFormat::QuickTime,
147 QMediaFormat::Mpeg4Audio,
152 const QSet<QMediaFormat::FileFormat> encoderFormats = {
157 QMediaFormat::Mpeg4Audio,
162 CheckedCodecs<QMediaFormat::AudioCodec> checkedAudioCodecs;
163 CheckedCodecs<QMediaFormat::VideoCodec> checkedVideoCodecs;
165 auto ensureCodecs = [&] (CodecMap &codecs, QMediaFormat::ConversionMode mode) {
166 codecs.audio.removeIf([&] (
auto codec) {
return !isSupportedCodec(codec, mode, checkedAudioCodecs); });
167 codecs.video.removeIf([&] (
auto codec) {
return !isSupportedCodec(codec, mode, checkedVideoCodecs); });
168 return !codecs.video.empty() || !codecs.audio.empty();
171 for (
const auto &codecMap : containerTable) {
172 if (decoderFormats.contains(codecMap.format)) {
174 if (ensureCodecs(m, QMediaFormat::Decode))
178 if (encoderFormats.contains(codecMap.format)) {
180 if (ensureCodecs(m, QMediaFormat::Encode))
185 imageFormats = getImageFormatList();