summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAssam Boudjelthia <assam.boudjelthia@qt.io>2021-07-23 13:40:50 +0300
committerAssam Boudjelthia <assam.boudjelthia@qt.io>2021-07-29 00:03:37 +0300
commit7986678bc1e1088283b1ff3e8648e04b933c4577 (patch)
tree2cd50d8a508f0bb84c8f4e92dcbd07375fc70390
parente91366ea3ca67f906e01645ad2a305e736bd6d82 (diff)
Update QFormatsInfo for Android
Update the list of supported decoders/encoders for video/audio/images on Android according to the official Android docs. Pick-to: 6.2 Change-Id: I20a566b3e6ec218c7ba16bbd9c4e932b5b899032 Reviewed-by: Bartlomiej Moskal <bartlomiej.moskal@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
-rw-r--r--src/multimedia/platform/android/qandroidformatsinfo.cpp52
1 files changed, 47 insertions, 5 deletions
diff --git a/src/multimedia/platform/android/qandroidformatsinfo.cpp b/src/multimedia/platform/android/qandroidformatsinfo.cpp
index 0e421b658..c45610b69 100644
--- a/src/multimedia/platform/android/qandroidformatsinfo.cpp
+++ b/src/multimedia/platform/android/qandroidformatsinfo.cpp
@@ -39,21 +39,63 @@
#include "qandroidformatsinfo_p.h"
+#include <qcoreapplication.h>
+
QT_BEGIN_NAMESPACE
QAndroidFormatInfo::QAndroidFormatInfo()
{
+ // Audio/Video/Image formats with their decoder/encoder information is documented at
+ // https://developer.android.com/guide/topics/media/media-formats
decoders = {
{ QMediaFormat::AAC, { QMediaFormat::AudioCodec::AAC }, {} },
{ QMediaFormat::MP3, { QMediaFormat::AudioCodec::MP3}, {} },
{ QMediaFormat::Ogg, { QMediaFormat::AudioCodec::Opus, QMediaFormat::AudioCodec::Vorbis },
- { QMediaFormat::VideoCodec::VP8 } },
- { QMediaFormat::MPEG4, { QMediaFormat::AudioCodec::MP3, QMediaFormat::AudioCodec::AAC },
- { QMediaFormat::VideoCodec::H264, QMediaFormat::VideoCodec::H265 } }
+ {} },
+ { QMediaFormat::FLAC, { QMediaFormat::AudioCodec::FLAC }, {} },
+ { QMediaFormat::Mpeg4Audio, { QMediaFormat::AudioCodec::AAC, QMediaFormat::AudioCodec::FLAC,
+ QMediaFormat::AudioCodec::MP3, QMediaFormat::AudioCodec::Vorbis},
+ {} },
+ { QMediaFormat::MPEG4, { QMediaFormat::AudioCodec::MP3, QMediaFormat::AudioCodec::AAC,
+ QMediaFormat::AudioCodec::FLAC, QMediaFormat::AudioCodec::Vorbis },
+ { QMediaFormat::VideoCodec::H264, QMediaFormat::VideoCodec::H265,
+ QMediaFormat::VideoCodec::AV1 } },
+ { QMediaFormat::Matroska, { QMediaFormat::AudioCodec::MP3, QMediaFormat::AudioCodec::Opus,
+ QMediaFormat::AudioCodec::Vorbis },
+ { QMediaFormat::VideoCodec::VP8, QMediaFormat::VideoCodec::VP9,
+ QMediaFormat::VideoCodec::H264, QMediaFormat::VideoCodec::H265,
+ QMediaFormat::VideoCodec::AV1} },
+ { QMediaFormat::WebM, { QMediaFormat::AudioCodec::Opus, QMediaFormat::AudioCodec::Vorbis },
+ { QMediaFormat::VideoCodec::VP8, QMediaFormat::VideoCodec::VP9} }
};
- encoders = decoders;
- imageFormats << QImageCapture::JPEG;
+ // MP3 encoders doesn't seem to be supported by the default Android SDK
+ encoders = {
+ { QMediaFormat::AAC, { QMediaFormat::AudioCodec::AAC }, {} },
+ { QMediaFormat::MP3, {}, {} },
+ { QMediaFormat::FLAC, { QMediaFormat::AudioCodec::FLAC }, {} },
+ { QMediaFormat::Mpeg4Audio, {QMediaFormat::AudioCodec::AAC, QMediaFormat::AudioCodec::FLAC},
+ {} },
+ { QMediaFormat::MPEG4, { QMediaFormat::AudioCodec::AAC, QMediaFormat::AudioCodec::FLAC },
+ { QMediaFormat::VideoCodec::H264 } }
+ };
+
+ // Opus encoder available only for Android 10+
+ if (QNativeInterface::QAndroidApplication::sdkVersion() >= 29) {
+ encoders.append({ QMediaFormat::Ogg, { QMediaFormat::AudioCodec::Opus }, {} });
+ encoders.append({ QMediaFormat::Matroska, { QMediaFormat::AudioCodec::MP3,
+ QMediaFormat::AudioCodec::Opus },
+ { QMediaFormat::VideoCodec::VP8, QMediaFormat::VideoCodec::H264 } });
+ encoders.append({ QMediaFormat::WebM, { QMediaFormat::AudioCodec::Opus },
+ { QMediaFormat::VideoCodec::VP8 } });
+ } else {
+ encoders.append({ QMediaFormat::Ogg, {}, {} });
+ encoders.append({ QMediaFormat::Matroska, { QMediaFormat::AudioCodec::MP3 },
+ { QMediaFormat::VideoCodec::VP8, QMediaFormat::VideoCodec::H264 } });
+ encoders.append({ QMediaFormat::WebM, {}, { QMediaFormat::VideoCodec::VP8 } });
+ }
+
+ imageFormats << QImageCapture::JPEG << QImageCapture::PNG << QImageCapture::WebP;
}
QAndroidFormatInfo::~QAndroidFormatInfo()