1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include "qplatformmediaformatinfo_p.h"
5
6#include <set>
7
8QT_BEGIN_NAMESPACE
9
10QPlatformMediaFormatInfo::QPlatformMediaFormatInfo() = default;
11
12QPlatformMediaFormatInfo::~QPlatformMediaFormatInfo() = default;
13
14QList<QMediaFormat::FileFormat> QPlatformMediaFormatInfo::supportedFileFormats(const QMediaFormat &constraints, QMediaFormat::ConversionMode m) const
15{
16 std::set<QMediaFormat::FileFormat> formats;
17
18 const auto &codecMap = (m == QMediaFormat::Encode) ? encoders : decoders;
19 for (const auto &m : codecMap) {
20 if (constraints.audioCodec() != QMediaFormat::AudioCodec::Unspecified && !m.audio.contains(t: constraints.audioCodec()))
21 continue;
22 if (constraints.videoCodec() != QMediaFormat::VideoCodec::Unspecified && !m.video.contains(t: constraints.videoCodec()))
23 continue;
24 formats.insert(x: m.format);
25 }
26 return { formats.begin(), formats.end() };
27}
28
29QList<QMediaFormat::AudioCodec> QPlatformMediaFormatInfo::supportedAudioCodecs(const QMediaFormat &constraints, QMediaFormat::ConversionMode m) const
30{
31 std::set<QMediaFormat::AudioCodec> codecs;
32
33 const auto &codecMap = (m == QMediaFormat::Encode) ? encoders : decoders;
34 for (const auto &m : codecMap) {
35 if (constraints.fileFormat() != QMediaFormat::UnspecifiedFormat && m.format != constraints.fileFormat())
36 continue;
37 if (constraints.videoCodec() != QMediaFormat::VideoCodec::Unspecified && !m.video.contains(t: constraints.videoCodec()))
38 continue;
39 for (const auto &c : m.audio)
40 codecs.insert(x: c);
41 }
42
43 return { codecs.begin(), codecs.end() };
44}
45
46QList<QMediaFormat::VideoCodec> QPlatformMediaFormatInfo::supportedVideoCodecs(const QMediaFormat &constraints, QMediaFormat::ConversionMode m) const
47{
48 std::set<QMediaFormat::VideoCodec> codecs;
49
50 const auto &codecMap = (m == QMediaFormat::Encode) ? encoders : decoders;
51 for (const auto &m : codecMap) {
52 if (constraints.fileFormat() != QMediaFormat::UnspecifiedFormat && m.format != constraints.fileFormat())
53 continue;
54 if (constraints.audioCodec() != QMediaFormat::AudioCodec::Unspecified && !m.audio.contains(t: constraints.audioCodec()))
55 continue;
56 for (const auto &c : m.video)
57 codecs.insert(x: c);
58 }
59 return { codecs.begin(), codecs.end() };
60}
61
62bool QPlatformMediaFormatInfo::isSupported(const QMediaFormat &format, QMediaFormat::ConversionMode m) const
63{
64 const auto &codecMap = (m == QMediaFormat::Encode) ? encoders : decoders;
65
66 for (const auto &m : codecMap) {
67 if (m.format != format.fileFormat())
68 continue;
69 if (format.audioCodec() != QMediaFormat::AudioCodec::Unspecified && !m.audio.contains(t: format.audioCodec()))
70 continue;
71 if (format.videoCodec() != QMediaFormat::VideoCodec::Unspecified && !m.video.contains(t: format.videoCodec()))
72 continue;
73 return true;
74 }
75 return false;
76}
77
78QT_END_NAMESPACE
79

Provided by KDAB

Privacy Policy
Start learning QML with our Intro Training
Find out more

source code of qtmultimedia/src/multimedia/platform/qplatformmediaformatinfo.cpp