diff options
author | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2021-07-23 13:40:50 +0300 |
---|---|---|
committer | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2021-07-29 00:03:37 +0300 |
commit | 7986678bc1e1088283b1ff3e8648e04b933c4577 (patch) | |
tree | 2cd50d8a508f0bb84c8f4e92dcbd07375fc70390 | |
parent | e91366ea3ca67f906e01645ad2a305e736bd6d82 (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.cpp | 52 |
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() |