15QAndroidFormatInfo::QAndroidFormatInfo()
20 const QJniObject codecsArrayObject = QJniObject::callStaticObjectMethod(
21 "org/qtproject/qt/android/multimedia/QtMultimediaUtils",
23 "()[Ljava/lang/String;");
26 const jobjectArray devsArray = codecsArrayObject.object<jobjectArray>();
27 for (
int i = 0; i < env->GetArrayLength(devsArray); ++i) {
28 const QString codec = QJniObject(env->GetObjectArrayElement(devsArray, i)).toString();
29 if (codec.contains(QStringLiteral(
"encoder")))
30 m_supportedEncoders.append(codec);
32 m_supportedDecoders.append(codec);
35 auto removeUnspecifiedValues = [](QList<CodecMap> &map) {
36 for (CodecMap &codec : map) {
37 codec.audio.removeAll(QMediaFormat::AudioCodec::Unspecified);
38 codec.video.removeAll(QMediaFormat::VideoCodec::Unspecified);
40 erase_if(map, [](
const CodecMap &codec) {
41 return codec.audio.isEmpty() && codec.video.isEmpty();
46 const QMediaFormat::AudioCodec aac = hasDecoder(QMediaFormat::AudioCodec::AAC);
47 const QMediaFormat::AudioCodec mp3 = hasDecoder(QMediaFormat::AudioCodec::MP3);
48 const QMediaFormat::AudioCodec flac = hasDecoder(QMediaFormat::AudioCodec::FLAC);
49 const QMediaFormat::AudioCodec opus = hasDecoder(QMediaFormat::AudioCodec::Opus);
50 const QMediaFormat::AudioCodec vorbis = hasDecoder(QMediaFormat::AudioCodec::Vorbis);
52 const QMediaFormat::VideoCodec vp8 = hasDecoder(QMediaFormat::VideoCodec::VP8);
53 const QMediaFormat::VideoCodec vp9 = hasDecoder(QMediaFormat::VideoCodec::VP9);
54 const QMediaFormat::VideoCodec h264 = hasDecoder(QMediaFormat::VideoCodec::H264);
55 const QMediaFormat::VideoCodec h265 = hasDecoder(QMediaFormat::VideoCodec::H265);
56 const QMediaFormat::VideoCodec av1 = hasDecoder(QMediaFormat::VideoCodec::AV1);
59 { QMediaFormat::AAC, {aac}, {} },
60 { QMediaFormat::MP3, {mp3}, {} },
61 { QMediaFormat::FLAC, {flac}, {} },
62 { QMediaFormat::Mpeg4Audio, {mp3, aac, flac, vorbis}, {} },
63 { QMediaFormat::MPEG4, {mp3, aac, flac, vorbis}, {h264, h265, av1} },
64 { QMediaFormat::Ogg, {opus, vorbis, flac}, {} },
65 { QMediaFormat::Matroska, {mp3, opus, vorbis}, {vp8, vp9, h264, h265, av1} },
66 { QMediaFormat::WebM, {opus, vorbis}, {vp8, vp9} }
69 removeUnspecifiedValues(decoders);
73 const QMediaFormat::AudioCodec aac = hasEncoder(QMediaFormat::AudioCodec::AAC);
74 const QMediaFormat::AudioCodec mp3 = hasEncoder(QMediaFormat::AudioCodec::MP3);
75 const QMediaFormat::AudioCodec opus = hasEncoder(QMediaFormat::AudioCodec::Opus);
76 const QMediaFormat::AudioCodec vorbis = hasEncoder(QMediaFormat::AudioCodec::Vorbis);
78 const QMediaFormat::VideoCodec vp8 = hasEncoder(QMediaFormat::VideoCodec::VP8);
79 const QMediaFormat::VideoCodec vp9 = hasEncoder(QMediaFormat::VideoCodec::VP9);
80 const QMediaFormat::VideoCodec h264 = hasEncoder(QMediaFormat::VideoCodec::H264);
81 const QMediaFormat::VideoCodec h265 = hasEncoder(QMediaFormat::VideoCodec::H265);
82 const QMediaFormat::VideoCodec av1 = hasEncoder(QMediaFormat::VideoCodec::AV1);
87 { QMediaFormat::AAC, {aac}, {} },
88 { QMediaFormat::MP3, {mp3}, {} },
91 { QMediaFormat::Mpeg4Audio, {mp3, aac, vorbis}, {} },
92 { QMediaFormat::MPEG4, {mp3, aac, vorbis}, {h264, h265, av1} },
93 { QMediaFormat::Ogg, {opus, vorbis}, {} },
94 { QMediaFormat::Matroska, {mp3, opus}, {vp8, vp9, h264, h265, av1} },
100 removeUnspecifiedValues(encoders);
103 imageFormats << QImageCapture::JPEG;