Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qwindowsmfdefs_p.h
Go to the documentation of this file.
1// Copyright (C) 2026 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#ifndef QWINDOWSMFDEFS_P_H
5#define QWINDOWSMFDEFS_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <mfmediaengine.h>
19
20// Stuff that is missing or incorrectly defined in MinGW.
21//
22// MinGW's mfmediaengine.h does not cover the timed text (subtitle) part of the Media Foundation
23// media engine API. So we provide our own implementation
24
25#ifndef __IMFTimedText_INTERFACE_DEFINED__
26
27// Only ever passed around as opaque out-parameters.
28struct IMFTimedTextBinary;
29struct IMFTimedTextRegion;
30struct IMFTimedTextStyle;
31struct IMFTimedTextCueList;
32
33struct IMFTimedTextNotify;
34struct IMFTimedTextTrack;
35struct IMFTimedTextTrackList;
36struct IMFTimedTextCue;
37struct IMFTimedTextFormattedText;
38
46
54
63
70
71// Service GUID for IMFGetService::GetService(). On MinGW, EXTERN_GUID expands to
72// a DECLSPEC_SELECTANY definition, so no INITGUID plumbing is needed.
73EXTERN_GUID(MF_MEDIA_ENGINE_TIMEDTEXT,
74 0x805ea411, 0x92e0, 0x4e59, 0x9b, 0x6e, 0x5c, 0x7d, 0x79, 0x15, 0xe6, 0x4f);
75
76#define __IMFTimedText_INTERFACE_DEFINED__
77MIDL_INTERFACE("1f2a94c9-a3df-430d-9d0f-acd85ddc29af")
78IMFTimedText : public IUnknown
79{
80public:
81 virtual HRESULT STDMETHODCALLTYPE RegisterNotifications(IMFTimedTextNotify *notify) = 0;
82 virtual HRESULT STDMETHODCALLTYPE SelectTrack(DWORD trackId, BOOL selected) = 0;
83 virtual HRESULT STDMETHODCALLTYPE AddDataSource(IMFByteStream *byteStream, LPCWSTR label,
84 LPCWSTR language, MF_TIMED_TEXT_TRACK_KIND kind,
85 BOOL isDefault, DWORD *trackId) = 0;
86 virtual HRESULT STDMETHODCALLTYPE AddDataSourceFromUrl(LPCWSTR url, LPCWSTR label,
87 LPCWSTR language,
88 MF_TIMED_TEXT_TRACK_KIND kind,
89 BOOL isDefault, DWORD *trackId) = 0;
90 virtual HRESULT STDMETHODCALLTYPE AddTrack(LPCWSTR label, LPCWSTR language,
91 MF_TIMED_TEXT_TRACK_KIND kind,
92 IMFTimedTextTrack **track) = 0;
93 virtual HRESULT STDMETHODCALLTYPE RemoveTrack(IMFTimedTextTrack *track) = 0;
94 virtual HRESULT STDMETHODCALLTYPE GetCueTimeOffset(double *offset) = 0;
95 virtual HRESULT STDMETHODCALLTYPE SetCueTimeOffset(double offset) = 0;
96 virtual HRESULT STDMETHODCALLTYPE GetTracks(IMFTimedTextTrackList **tracks) = 0;
97 virtual HRESULT STDMETHODCALLTYPE GetActiveTracks(IMFTimedTextTrackList **activeTracks) = 0;
98 virtual HRESULT STDMETHODCALLTYPE GetTextTracks(IMFTimedTextTrackList **textTracks) = 0;
99 virtual HRESULT STDMETHODCALLTYPE GetMetadataTracks(IMFTimedTextTrackList **metadataTracks) = 0;
100 virtual HRESULT STDMETHODCALLTYPE SetInBandEnabled(BOOL enabled) = 0;
101 virtual BOOL STDMETHODCALLTYPE IsInBandEnabled() = 0;
102};
103__CRT_UUID_DECL(IMFTimedText,
104 0x1f2a94c9, 0xa3df, 0x430d, 0x9d, 0x0f, 0xac, 0xd8, 0x5d, 0xdc, 0x29, 0xaf)
105
106#define __IMFTimedTextNotify_INTERFACE_DEFINED__
107MIDL_INTERFACE("df6b87b6-ce12-45db-aba7-432fe054e57d")
108IMFTimedTextNotify : public IUnknown
109{
110public:
111 // NB: these do not return HRESULT.
112 virtual void STDMETHODCALLTYPE TrackAdded(DWORD trackId) = 0;
113 virtual void STDMETHODCALLTYPE TrackRemoved(DWORD trackId) = 0;
114 virtual void STDMETHODCALLTYPE TrackSelected(DWORD trackId, BOOL selected) = 0;
115 virtual void STDMETHODCALLTYPE TrackReadyStateChanged(DWORD trackId) = 0;
116 virtual void STDMETHODCALLTYPE Error(MF_TIMED_TEXT_ERROR_CODE errorCode,
117 HRESULT extendedErrorCode, DWORD sourceTrackId) = 0;
118 virtual void STDMETHODCALLTYPE Cue(MF_TIMED_TEXT_CUE_EVENT cueEvent, double currentTime,
119 IMFTimedTextCue *cue) = 0;
120 virtual void STDMETHODCALLTYPE Reset() = 0;
121};
122__CRT_UUID_DECL(IMFTimedTextNotify,
123 0xdf6b87b6, 0xce12, 0x45db, 0xab, 0xa7, 0x43, 0x2f, 0xe0, 0x54, 0xe5, 0x7d)
124
125#define __IMFTimedTextTrack_INTERFACE_DEFINED__
126MIDL_INTERFACE("8822c32d-654e-4233-bf21-d7f2e67d30d4")
127IMFTimedTextTrack : public IUnknown
128{
129public:
130 virtual DWORD STDMETHODCALLTYPE GetId() = 0;
131 virtual HRESULT STDMETHODCALLTYPE GetLabel(LPWSTR *label) = 0;
132 virtual HRESULT STDMETHODCALLTYPE SetLabel(LPCWSTR label) = 0;
133 virtual HRESULT STDMETHODCALLTYPE GetLanguage(LPWSTR *language) = 0;
134 virtual MF_TIMED_TEXT_TRACK_KIND STDMETHODCALLTYPE GetTrackKind() = 0;
135 virtual BOOL STDMETHODCALLTYPE IsInBand() = 0;
136 virtual HRESULT STDMETHODCALLTYPE GetInBandMetadataTrackDispatchType(LPWSTR *dispatchType) = 0;
137 virtual BOOL STDMETHODCALLTYPE IsActive() = 0;
138 virtual MF_TIMED_TEXT_ERROR_CODE STDMETHODCALLTYPE GetErrorCode() = 0;
139 virtual HRESULT STDMETHODCALLTYPE GetExtendedErrorCode() = 0;
140 virtual HRESULT STDMETHODCALLTYPE GetDataFormat(GUID *format) = 0;
141 virtual MF_TIMED_TEXT_TRACK_READY_STATE STDMETHODCALLTYPE GetReadyState() = 0;
142 virtual HRESULT STDMETHODCALLTYPE GetCueList(IMFTimedTextCueList **cues) = 0;
143};
144__CRT_UUID_DECL(IMFTimedTextTrack,
145 0x8822c32d, 0x654e, 0x4233, 0xbf, 0x21, 0xd7, 0xf2, 0xe6, 0x7d, 0x30, 0xd4)
146
147#define __IMFTimedTextTrackList_INTERFACE_DEFINED__
148MIDL_INTERFACE("23ff334c-442c-445f-bccc-edc438aa11e2")
149IMFTimedTextTrackList : public IUnknown
150{
151public:
152 virtual DWORD STDMETHODCALLTYPE GetLength() = 0;
153 virtual HRESULT STDMETHODCALLTYPE GetTrack(DWORD index, IMFTimedTextTrack **track) = 0;
154 virtual HRESULT STDMETHODCALLTYPE GetTrackById(DWORD trackId, IMFTimedTextTrack **track) = 0;
155};
156__CRT_UUID_DECL(IMFTimedTextTrackList,
157 0x23ff334c, 0x442c, 0x445f, 0xbc, 0xcc, 0xed, 0xc4, 0x38, 0xaa, 0x11, 0xe2)
158
159#define __IMFTimedTextCue_INTERFACE_DEFINED__
160MIDL_INTERFACE("1e560447-9a2b-43e1-a94c-b0aaabfbfbc9")
161IMFTimedTextCue : public IUnknown
162{
163public:
164 virtual DWORD STDMETHODCALLTYPE GetId() = 0;
165 virtual HRESULT STDMETHODCALLTYPE GetOriginalId(LPWSTR *originalId) = 0;
166 virtual MF_TIMED_TEXT_TRACK_KIND STDMETHODCALLTYPE GetCueKind() = 0;
167 virtual double STDMETHODCALLTYPE GetStartTime() = 0;
168 virtual double STDMETHODCALLTYPE GetDuration() = 0;
169 virtual DWORD STDMETHODCALLTYPE GetTrackId() = 0;
170 virtual HRESULT STDMETHODCALLTYPE GetData(IMFTimedTextBinary **data) = 0;
171 virtual HRESULT STDMETHODCALLTYPE GetRegion(IMFTimedTextRegion **region) = 0;
172 virtual HRESULT STDMETHODCALLTYPE GetStyle(IMFTimedTextStyle **style) = 0;
173 virtual DWORD STDMETHODCALLTYPE GetLineCount() = 0;
174 virtual HRESULT STDMETHODCALLTYPE GetLine(DWORD index, IMFTimedTextFormattedText **line) = 0;
175};
176__CRT_UUID_DECL(IMFTimedTextCue,
177 0x1e560447, 0x9a2b, 0x43e1, 0xa9, 0x4c, 0xb0, 0xaa, 0xab, 0xfb, 0xfb, 0xc9)
178
179#define __IMFTimedTextFormattedText_INTERFACE_DEFINED__
180MIDL_INTERFACE("e13af3c1-4d47-4354-b1f5-e83ae0ecae60")
181IMFTimedTextFormattedText : public IUnknown
182{
183public:
184 virtual HRESULT STDMETHODCALLTYPE GetText(LPWSTR *text) = 0;
185 virtual DWORD STDMETHODCALLTYPE GetSubformattingCount() = 0;
186 virtual HRESULT STDMETHODCALLTYPE GetSubformatting(DWORD index, DWORD *firstChar,
187 DWORD *charLength,
188 IMFTimedTextStyle **style) = 0;
189};
190__CRT_UUID_DECL(IMFTimedTextFormattedText,
191 0xe13af3c1, 0x4d47, 0x4354, 0xb1, 0xf5, 0xe8, 0x3a, 0xe0, 0xec, 0xae, 0x60)
192
193#endif // __IMFTimedText_INTERFACE_DEFINED__
194
195#endif // QWINDOWSMFDEFS_P_H
bool canReadQrc() const override
void setAudioFormat(const QAudioFormat &format) override
bool bufferAvailable() const override
QUrl source() const override
void setSourceDevice(QIODevice *device) override
QAudioFormat audioFormat() const override
QAudioBuffer read() override
void setSource(const QUrl &fileName) override
QIODevice * sourceDevice() const override
float bufferProgress() const override
void setPlaybackRate(qreal rate) override
void setActiveTrack(TrackType type, int index) override
void setAudioOutput(QPlatformAudioOutput *output) override
qint64 duration() const override
void setMedia(const QUrl &media, QIODevice *stream) override
QMediaTimeRange availablePlaybackRanges() const override
qint64 position() const override
qreal playbackRate() const override
int activeTrack(TrackType type) override
QMediaEnginePlayer(QMediaPlayer *player)
void setVideoSink(QVideoSink *sink) override
QUrl media() const override
void setPosition(qint64 position) override
QMediaMetaData trackMetaData(TrackType type, int trackNumber) override
bool streamPlaybackSupported() const override
PitchCompensationAvailability pitchCompensationAvailability() const override
const QIODevice * mediaStream() const override
QMediaMetaData metaData() const override
int trackCount(TrackType type) override
virtual ~QWindowsCamera()
bool isActive() const override
void setCamera(const QCameraDevice &camera) override
void setCaptureSession(QPlatformMediaCaptureSession *) override
bool setCameraFormat(const QCameraFormat &format) override
void setActive(bool active) override
int capture(const QString &fileName) override
virtual ~QWindowsImageCapture()
QImageEncoderSettings imageSettings() const override
void setImageSettings(const QImageEncoderSettings &settings) override
void setCaptureSession(QPlatformMediaCaptureSession *session)
bool isReadyForCapture() const override
QPlatformImageCapture * imageCapture() override
void setCamera(QPlatformCamera *camera) override
void setAudioInput(QPlatformAudioInput *) override
void setVideoPreview(QVideoSink *sink) override
QPlatformCamera * camera() override
QPlatformMediaRecorder * mediaRecorder() override
void setImageCapture(QPlatformImageCapture *imageCapture) override
void setAudioOutput(QPlatformAudioOutput *output) override
void setMediaRecorder(QPlatformMediaRecorder *recorder) override
QWindowsMediaDeviceSession * session() const
void setMetaData(const QMediaMetaData &metaData) override
QMediaRecorder::RecorderState state() const override
void setCaptureSession(QPlatformMediaCaptureSession *session)
QMediaMetaData metaData() const override
bool isLocationWritable(const QUrl &location) const override
qint64 duration() const override
void record(QMediaEncoderSettings &settings) override
q23::expected< QPlatformVideoSink *, QString > createVideoSink(QVideoSink *sink) override
QPlatformMediaFormatInfo * createFormatInfo() override
q23::expected< QPlatformAudioDecoder *, QString > createAudioDecoder(QAudioDecoder *decoder) override
q23::expected< QPlatformCamera *, QString > createCamera(QCamera *camera) override
q23::expected< QPlatformImageCapture *, QString > createImageCapture(QImageCapture *imageCapture) override
QPlatformVideoDevices * createVideoDevices() override
q23::expected< QPlatformMediaRecorder *, QString > createRecorder(QMediaRecorder *recorder) override
q23::expected< QPlatformMediaPlayer *, QString > createPlayer(QMediaPlayer *parent) override
q23::expected< QPlatformMediaCaptureSession *, QString > createCaptureSession() override
ComPtr< IMFMediaSource > mediaSource() const
void mediaSourceReady()
void load(const QUrl &url, QIODevice *stream)
Combined button and popup list for selecting options.
MF_TIMED_TEXT_ERROR_CODE
@ MF_TIMED_TEXT_ERROR_CODE_INTERNAL
@ MF_TIMED_TEXT_ERROR_CODE_FATAL
@ MF_TIMED_TEXT_ERROR_CODE_NOERROR
@ MF_TIMED_TEXT_ERROR_CODE_DATA_FORMAT
@ MF_TIMED_TEXT_ERROR_CODE_NETWORK
MF_TIMED_TEXT_CUE_EVENT
@ MF_TIMED_TEXT_CUE_EVENT_INACTIVE
@ MF_TIMED_TEXT_CUE_EVENT_ACTIVE
@ MF_TIMED_TEXT_CUE_EVENT_CLEAR
MF_TIMED_TEXT_TRACK_READY_STATE
@ MF_TIMED_TEXT_TRACK_READY_STATE_LOADING
@ MF_TIMED_TEXT_TRACK_READY_STATE_LOADED
@ MF_TIMED_TEXT_TRACK_READY_STATE_ERROR
@ MF_TIMED_TEXT_TRACK_READY_STATE_NONE
EXTERN_GUID(MF_MEDIA_ENGINE_TIMEDTEXT, 0x805ea411, 0x92e0, 0x4e59, 0x9b, 0x6e, 0x5c, 0x7d, 0x79, 0x15, 0xe6, 0x4f)
MF_TIMED_TEXT_TRACK_KIND
@ MF_TIMED_TEXT_TRACK_KIND_SUBTITLES
@ MF_TIMED_TEXT_TRACK_KIND_METADATA
@ MF_TIMED_TEXT_TRACK_KIND_UNKNOWN
@ MF_TIMED_TEXT_TRACK_KIND_CAPTIONS