70 QList<QImageCapture::FileFormat> list;
71 const auto formats = QImageWriter::supportedImageFormats();
73 for (
const auto &f : formats) {
74 auto format = QString::fromUtf8(f);
75 if (format.compare(QLatin1String(
"jpg"), Qt::CaseInsensitive) == 0)
76 list.append(QImageCapture::FileFormat::JPEG);
77 else if (format.compare(QLatin1String(
"png"), Qt::CaseInsensitive) == 0)
78 list.append(QImageCapture::FileFormat::PNG);
79 else if (format.compare(QLatin1String(
"webp"), Qt::CaseInsensitive) == 0)
80 list.append(QImageCapture::FileFormat::WebP);
81 else if (format.compare(QLatin1String(
"tiff"), Qt::CaseInsensitive) == 0)
82 list.append(QImageCapture::FileFormat::Tiff);
88QWindowsFormatInfo::QWindowsFormatInfo()
90 const QList<CodecMap> containerTable = {
91 { QMediaFormat::MPEG4,
92 { QMediaFormat::AudioCodec::AAC, QMediaFormat::AudioCodec::MP3, QMediaFormat::AudioCodec::ALAC, QMediaFormat::AudioCodec::AC3, QMediaFormat::AudioCodec::EAC3 },
93 { QMediaFormat::VideoCodec::H264, QMediaFormat::VideoCodec::H265, QMediaFormat::VideoCodec::MotionJPEG } },
94 { QMediaFormat::Matroska,
95 { QMediaFormat::AudioCodec::AAC, QMediaFormat::AudioCodec::MP3, QMediaFormat::AudioCodec::ALAC, QMediaFormat::AudioCodec::AC3, QMediaFormat::AudioCodec::EAC3, QMediaFormat::AudioCodec::FLAC, QMediaFormat::AudioCodec::Vorbis, QMediaFormat::AudioCodec::Opus },
96 { QMediaFormat::VideoCodec::H264, QMediaFormat::VideoCodec::H265, QMediaFormat::VideoCodec::VP8, QMediaFormat::VideoCodec::VP9, QMediaFormat::VideoCodec::MotionJPEG } },
98 { QMediaFormat::AudioCodec::Vorbis, QMediaFormat::AudioCodec::Opus },
99 { QMediaFormat::VideoCodec::VP8, QMediaFormat::VideoCodec::VP9 } },
100 { QMediaFormat::QuickTime,
101 { QMediaFormat::AudioCodec::AAC, QMediaFormat::AudioCodec::MP3, QMediaFormat::AudioCodec::ALAC, QMediaFormat::AudioCodec::AC3, QMediaFormat::AudioCodec::EAC3 },
102 { QMediaFormat::VideoCodec::H264, QMediaFormat::VideoCodec::H265, QMediaFormat::VideoCodec::MotionJPEG } },
104 { QMediaFormat::AudioCodec::AAC },
107 { QMediaFormat::AudioCodec::MP3 },
109 { QMediaFormat::FLAC,
110 { QMediaFormat::AudioCodec::FLAC },
112 { QMediaFormat::Mpeg4Audio,
113 { QMediaFormat::AudioCodec::AAC, QMediaFormat::AudioCodec::MP3, QMediaFormat::AudioCodec::ALAC, QMediaFormat::AudioCodec::AC3, QMediaFormat::AudioCodec::EAC3 },
116 { QMediaFormat::AudioCodec::WMA },
119 { QMediaFormat::AudioCodec::WMA },
120 { QMediaFormat::VideoCodec::WMV } }
123 const QSet<QMediaFormat::FileFormat> decoderFormats = {
125 QMediaFormat::Matroska,
127 QMediaFormat::QuickTime,
131 QMediaFormat::Mpeg4Audio,
136 const QSet<QMediaFormat::FileFormat> encoderFormats = {
141 QMediaFormat::Mpeg4Audio,
146 CheckedCodecs<QMediaFormat::AudioCodec> checkedAudioCodecs;
147 CheckedCodecs<QMediaFormat::VideoCodec> checkedVideoCodecs;
149 auto ensureCodecs = [&] (CodecMap &codecs, QMediaFormat::ConversionMode mode) {
150 codecs.audio.removeIf([&] (
auto codec) {
return !isSupportedCodec(codec, mode, checkedAudioCodecs); });
151 codecs.video.removeIf([&] (
auto codec) {
return !isSupportedCodec(codec, mode, checkedVideoCodecs); });
152 return !codecs.video.empty() || !codecs.audio.empty();
155 for (
const auto &codecMap : containerTable) {
156 if (decoderFormats.contains(codecMap.format)) {
158 if (ensureCodecs(m, QMediaFormat::Decode))
162 if (encoderFormats.contains(codecMap.format)) {
164 if (ensureCodecs(m, QMediaFormat::Encode))
169 imageFormats = getImageFormatList();