Nikolay Sivov : include: Add IMFMediaEngineEx definition.

Alexandre Julliard julliard at winehq.org
Mon May 25 15:44:23 CDT 2020


Module: wine
Branch: master
Commit: 38aeedcc80b53d98ac52b5a8ecf225025f82bb5e
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=38aeedcc80b53d98ac52b5a8ecf225025f82bb5e

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon May 25 21:57:47 2020 +0300

include: Add IMFMediaEngineEx definition.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 include/mfmediaengine.idl | 73 +++++++++++++++++++++++++++++++++++++++++++++++
 include/mftransform.idl   |  6 ++++
 2 files changed, 79 insertions(+)

diff --git a/include/mfmediaengine.idl b/include/mfmediaengine.idl
index 556d2fba2b..e5d91a5732 100644
--- a/include/mfmediaengine.idl
+++ b/include/mfmediaengine.idl
@@ -194,6 +194,79 @@ interface IMFMediaEngine : IUnknown
     HRESULT OnVideoStreamTick([out] LONGLONG *time);
 }
 
+typedef enum MF_MEDIA_ENGINE_STATISTIC
+{
+    MF_MEDIA_ENGINE_STATISTIC_FRAMES_RENDERED,
+    MF_MEDIA_ENGINE_STATISTIC_FRAMES_DROPPED,
+    MF_MEDIA_ENGINE_STATISTIC_BYTES_DOWNLOADED,
+    MF_MEDIA_ENGINE_STATISTIC_BUFFER_PROGRESS,
+    MF_MEDIA_ENGINE_STATISTIC_FRAMES_PER_SECOND,
+    MF_MEDIA_ENGINE_STATISTIC_PLAYBACK_JITTER,
+    MF_MEDIA_ENGINE_STATISTIC_FRAMES_CORRUPTED,
+    MF_MEDIA_ENGINE_STATISTIC_TOTAL_FRAME_DELAY,
+} MF_MEDIA_ENGINE_STATISTIC;
+
+typedef enum MF_MEDIA_ENGINE_S3D_PACKING_MODE
+{
+    MF_MEDIA_ENGINE_S3D_PACKING_MODE_NONE,
+    MF_MEDIA_ENGINE_S3D_PACKING_MODE_SIDE_BY_SIDE,
+    MF_MEDIA_ENGINE_S3D_PACKING_MODE_TOP_BOTTOM
+} MF_MEDIA_ENGINE_S3D_PACKING_MODE;
+
+typedef enum MF_MEDIA_ENGINE_SEEK_MODE
+{
+    MF_MEDIA_ENGINE_SEEK_MODE_NORMAL,
+    MF_MEDIA_ENGINE_SEEK_MODE_APPROXIMATE,
+} MF_MEDIA_ENGINE_SEEK_MODE;
+
+[
+    object,
+    uuid(83015ead-b1e6-40d0-a98a-37145ffe1ad1),
+    local,
+    pointer_default(unique)
+]
+interface IMFMediaEngineEx : IMFMediaEngine
+{
+    HRESULT SetSourceFromByteStream([in] IMFByteStream *bytestream, [in] BSTR url);
+    HRESULT GetStatistics([in] MF_MEDIA_ENGINE_STATISTIC stat_id, [out] PROPVARIANT *stat);
+    HRESULT UpdateVideoStream([in] const MFVideoNormalizedRect *src,
+            [in] const RECT *dst, [in] const MFARGB *border_color);
+    double GetBalance();
+    HRESULT SetBalance([in] double balance);
+    BOOL IsPlaybackRateSupported([in] double rate);
+    HRESULT FrameStep([in] BOOL forward);
+    HRESULT GetResourceCharacteristics([out] DWORD *flags);
+    HRESULT GetPresentationAttribute([in] REFGUID attribute, [out] PROPVARIANT *value);
+    HRESULT GetNumberOfStreams([out] DWORD *stream_count);
+    HRESULT GetStreamAttribute([in] DWORD stream_index, [in] REFGUID attribute, [out] PROPVARIANT *value);
+    HRESULT GetStreamSelection([in] DWORD stream_index, [out] BOOL *enabled);
+    HRESULT SetStreamSelection([in] DWORD stream_index, [in] BOOL enabled);
+    HRESULT ApplyStreamSelections();
+    HRESULT IsProtected([out] BOOL *protected);
+    HRESULT InsertVideoEffect([in] IUnknown *effect, [in] BOOL is_optional);
+    HRESULT InsertAudioEffect([in] IUnknown *effect, [in] BOOL is_optional);
+    HRESULT RemoveAllEffects();
+    HRESULT SetTimelineMarkerTimer([in] double timeout);
+    HRESULT GetTimelineMarkerTimer([out] double *timeout);
+    HRESULT CancelTimelineMarkerTimer();
+    BOOL IsStereo3D();
+    HRESULT GetStereo3DFramePackingMode([out] MF_MEDIA_ENGINE_S3D_PACKING_MODE *mode);
+    HRESULT SetStereo3DFramePackingMode([in] MF_MEDIA_ENGINE_S3D_PACKING_MODE mode);
+    HRESULT GetStereo3DRenderMode([out] MF3DVideoOutputType *output_type);
+    HRESULT SetStereo3DRenderMode([in] MF3DVideoOutputType output_type);
+    HRESULT EnableWindowlessSwapchainMode([in] BOOL enable);
+    HRESULT GetVideoSwapchainHandle([out] HANDLE *swapchain);
+    HRESULT EnableHorizontalMirrorMode([in] BOOL enable);
+    HRESULT GetAudioStreamCategory([out] UINT32 *category);
+    HRESULT SetAudioStreamCategory([in] UINT32 category);
+    HRESULT GetAudioEndpointRole([out] UINT32 *role);
+    HRESULT SetAudioEndpointRole([in] UINT32 role);
+    HRESULT GetRealTimeMode([out] BOOL *enabled);
+    HRESULT SetRealTimeMode([in] BOOL enable);
+    HRESULT SetCurrentTimeEx([in] double seektime, [in] MF_MEDIA_ENGINE_SEEK_MODE mode);
+    HRESULT EnableTimeUpdateTimer([in] BOOL enable);
+}
+
 [
     object,
     uuid(4d645ace-26aa-4688-9be1-df3516990b93),
diff --git a/include/mftransform.idl b/include/mftransform.idl
index 6b9c79572a..1b402a5cc7 100644
--- a/include/mftransform.idl
+++ b/include/mftransform.idl
@@ -107,6 +107,12 @@ enum _MFT_DRAIN_TYPE
     MFT_DRAIN_NO_TAILS      = 0x00000001
 };
 
+typedef enum _MF3DVideoOutputType
+{
+    MF3DVideoOutputType_BaseView,
+    MF3DVideoOutputType_Stereo
+} MF3DVideoOutputType;
+
 typedef struct _MFT_INPUT_STREAM_INFO
 {
     LONGLONG hnsMaxLatency;




More information about the wine-cvs mailing list