dtkmultimedia
DTK Multimedia module
载入中...
搜索中...
未找到
dmediaformat.h
浏览该文件的文档.
1// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#ifndef DMEDIAFORMAT_H
6#define DMEDIAFORMAT_H
7
8#ifdef BUILD_Qt6
9#include <QMediaCaptureSession>
10#else
11#include <QMediaObject>
12#endif
13#include "dtkmultimedia.h"
14
15DMULTIMEDIA_BEGIN_NAMESPACE
16
17class DMediaFormatPrivate;
18
19class Q_MULTIMEDIA_EXPORT DMediaFormat : public QObject
20{
21 Q_GADGET
22 Q_PROPERTY(FileFormat fileFormat READ fileFormat WRITE setFileFormat)
23 Q_PROPERTY(AudioCodec audioCodec READ audioCodec WRITE setAudioCodec)
24 Q_PROPERTY(VideoCodec videoCodec READ videoCodec WRITE setVideoCodec)
25 Q_CLASSINFO("RegisterEnumClassesUnscoped", "false")
26 Q_DECLARE_PRIVATE(DMediaFormat)
27
28public:
30 UnspecifiedFormat = -1,
31 // Video Formats
39 // Audio Only Formats
46 LastFileFormat = Wave
47 };
48 Q_ENUM(FileFormat)
49
50 enum class AudioCodec {
51 Unspecified = -1,
52 MP3,
53 AAC,
54 AC3,
55 EAC3,
56 FLAC,
57 DolbyTrueHD,
58 Opus,
59 Vorbis,
60 Wave,
61 WMA,
62 ALAC,
63 LastAudioCodec = ALAC
64 };
65 Q_ENUM(AudioCodec)
66
67 enum class VideoCodec {
68 Unspecified = -1,
69 MPEG1,
70 MPEG2,
71 MPEG4,
72 H264,
73 H265,
74 VP8,
75 VP9,
76 AV1,
77 Theora,
78 WMV,
79 MotionJPEG,
80 LastVideoCodec = MotionJPEG
81 };
82 Q_ENUM(VideoCodec)
83
86 Decode
87 };
88 Q_ENUM(ConversionMode)
89
92 RequiresVideo
93 };
94
95 DMediaFormat(FileFormat format = UnspecifiedFormat);
96 DMediaFormat(const DMediaFormat &other);
97 DMediaFormat &operator=(const DMediaFormat &other);
99
102
105
108
109 Q_INVOKABLE bool isSupported(ConversionMode mode) const;
110
111 Q_INVOKABLE QList<FileFormat> supportedFileFormats(ConversionMode m);
112 Q_INVOKABLE QList<VideoCodec> supportedVideoCodecs(ConversionMode m);
113 Q_INVOKABLE QList<AudioCodec> supportedAudioCodecs(ConversionMode m);
114
115 Q_INVOKABLE static QString fileFormatName(FileFormat fileFormat);
116 Q_INVOKABLE static QString audioCodecName(AudioCodec codec);
117 Q_INVOKABLE static QString videoCodecName(VideoCodec codec);
118
119 Q_INVOKABLE static QString fileFormatDescription(DMediaFormat::FileFormat fileFormat);
120 Q_INVOKABLE static QString audioCodecDescription(DMediaFormat::AudioCodec codec);
121 Q_INVOKABLE static QString videoCodecDescription(DMediaFormat::VideoCodec codec);
122
123 bool operator==(const DMediaFormat &other) const;
124 bool operator!=(const DMediaFormat &other) const
125 {
126 return !operator==(other);
127 }
128
130
131protected:
132 QScopedPointer<DMediaFormatPrivate> d_ptr;
133};
134
135DMULTIMEDIA_END_NAMESPACE
136
137#endif
DMediaFormat类提供相机输出格式管理.
Definition dmediaformat.h:20
static Q_INVOKABLE QString audioCodecName(AudioCodec codec)
获取支持音频格式的名称.
static Q_INVOKABLE QString fileFormatDescription(DMediaFormat::FileFormat fileFormat)
获取支持文件格式的名称描述.
void setVideoCodec(VideoCodec codec)
设置视频格式.
ResolveFlags
解析标志.
Definition dmediaformat.h:90
@ NoFlags
Definition dmediaformat.h:91
bool operator==(const DMediaFormat &other) const
判断支持媒体格式是否相似.
FileFormat fileFormat() const
获取文件格式.
Q_INVOKABLE QList< AudioCodec > supportedAudioCodecs(ConversionMode m)
获取支持转换模式的音频格式列表.
void setAudioCodec(AudioCodec codec)
设置视频编码方式.
static Q_INVOKABLE QString fileFormatName(FileFormat fileFormat)
获取支持文件格式的名称.
Q_INVOKABLE QList< FileFormat > supportedFileFormats(ConversionMode m)
获取支持转换模式的文件格式列表.
FileFormat
文件格式.
Definition dmediaformat.h:29
@ Matroska
Definition dmediaformat.h:34
@ Ogg
Definition dmediaformat.h:36
@ MPEG4
Definition dmediaformat.h:35
@ AVI
Definition dmediaformat.h:33
@ Wave
Definition dmediaformat.h:45
@ QuickTime
Definition dmediaformat.h:37
@ Mpeg4Audio
Definition dmediaformat.h:40
@ WebM
Definition dmediaformat.h:38
@ WMV
Definition dmediaformat.h:32
@ AAC
Definition dmediaformat.h:41
@ FLAC
Definition dmediaformat.h:44
@ MP3
Definition dmediaformat.h:43
@ WMA
Definition dmediaformat.h:42
Q_INVOKABLE bool isSupported(ConversionMode mode) const
是否支持转换模式.
static Q_INVOKABLE QString videoCodecName(VideoCodec codec)
获取支持视频格式的名称.
ConversionMode
转换模式.
Definition dmediaformat.h:84
@ Encode
Definition dmediaformat.h:85
AudioCodec
音频编码格式.
Definition dmediaformat.h:50
void setFileFormat(FileFormat f)
设置文件格式.
void resolveForEncoding(ResolveFlags flags)
基于标志解析格式.
Q_INVOKABLE QList< VideoCodec > supportedVideoCodecs(ConversionMode m)
获取支持转换模式的视频格式列表.
static Q_INVOKABLE QString videoCodecDescription(DMediaFormat::VideoCodec codec)
获取支持视频格式的名称描述.
VideoCodec videoCodec() const
获取视频编码方式.
AudioCodec audioCodec() const
获取音频编码方式.
static Q_INVOKABLE QString audioCodecDescription(DMediaFormat::AudioCodec codec)
获取支持音频格式的名称描述.
VideoCodec
视频编码格式.
Definition dmediaformat.h:67
bool operator!=(const DMediaFormat &other) const
判断支持媒体格式是否不同.
Definition dmediaformat.h:124