[PATCH 1/2] wmvcore: Add interfaces for the WMReader object
Jefferson Carpenter
jeffersoncarpenter2 at gmail.com
Thu Apr 6 22:51:11 CDT 2017
---
include/wmsdkidl.idl | 679 ++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 668 insertions(+), 11 deletions(-)
diff --git a/include/wmsdkidl.idl b/include/wmsdkidl.idl
index 0606be190710..06ea5be52dc8 100644
--- a/include/wmsdkidl.idl
+++ b/include/wmsdkidl.idl
@@ -83,6 +83,51 @@ typedef struct _WMReaderClientInfo
WCHAR *wszPlayerUserAgent;
} WM_READER_CLIENTINFO;
+typedef struct _WMStreamPrioritizationRecord {
+ WORD wStreamNumber;
+ BOOL fMandatory;
+} WM_STREAM_PRIORITY_RECORD;
+
+typedef struct _WM_PORT_NUMBER_RANGE {
+ WORD wPortBegin;
+ WORD wPortEnd;
+} WM_PORT_NUMBER_RANGE;
+
+typedef struct _DRM_MINIMUM_OUTPUT_PROTECTION_LEVELS {
+ WORD wCompressedDigitalVideo;
+ WORD wUncompressedDigitalVideo;
+ WORD wAnalogVideo;
+ WORD wCompressedDigitalAudio;
+ WORD wUncompressedDigitalAudio;
+} DRM_MINIMUM_OUTPUT_PROTECTION_LEVELS;
+
+typedef struct _DRM_OPL_OUTPUT_IDS {
+ WORD cIds;
+ GUID *rgIds;
+} DRM_OPL_OUTPUT_IDS;
+
+typedef struct _DRM_VIDEO_OUTPUT_PROTECTION {
+ GUID guidId;
+ BYTE bConfigData;
+} DRM_VIDEO_OUTPUT_PROTECTION;
+
+typedef struct _DRM_VIDEO_OUTPUT_PROTECTION_IDS {
+ WORD cEntries;
+ DRM_VIDEO_OUTPUT_PROTECTION *rgVop;
+} DRM_VIDEO_OUTPUT_PROTECTION_IDS;
+
+typedef struct _DRM_COPY_OPL {
+ WORD wMinimumCopyLevel;
+ DRM_OPL_OUTPUT_IDS oplIdIncludes;
+ DRM_OPL_OUTPUT_IDS oplIdExcludes;
+} DRM_COPY_OPL;
+
+typedef struct _DRM_PLAY_OPL {
+ DRM_MINIMUM_OUTPUT_PROTECTION_LEVELS minOPL;
+ DRM_OPL_OUTPUT_IDS oplIdReserved;
+ DRM_VIDEO_OUTPUT_PROTECTION_IDS vopi;
+} DRM_PLAY_OPL;
+
typedef enum WMT_ATTR_DATATYPE
{
WMT_TYPE_DWORD = 0,
@@ -168,21 +213,40 @@ typedef enum WMT_VERSION
typedef enum WMT_PLAY_MODE
{
- WMT_PLAY_MODE_AUTOSELECT,
- WMT_PLAY_MODE_LOCAL,
- WMT_PLAY_MODE_DOWNLOAD,
- WMT_PLAY_MODE_STREAMING
+ WMT_PLAY_MODE_AUTOSELECT = 0,
+ WMT_PLAY_MODE_LOCAL = 1,
+ WMT_PLAY_MODE_DOWNLOAD = 2,
+ WMT_PLAY_MODE_STREAMING = 3
} WMT_PLAY_MODE;
typedef enum tagWMT_OFFSET_FORMAT
{
- WMT_OFFSET_FORMAT_100NS,
- WMT_OFFSET_FORMAT_FRAME_NUMBERS,
- WMT_OFFSET_FORMAT_PLAYLIST_OFFSET,
- WMT_OFFSET_FORMAT_TIMECODE,
- WMT_OFFSET_FORMAT_100NS_APPROXIMATE
+ WMT_OFFSET_FORMAT_100NS = 0,
+ WMT_OFFSET_FORMAT_FRAME_NUMBERS = 1,
+ WMT_OFFSET_FORMAT_PLAYLIST_OFFSET = 2,
+ WMT_OFFSET_FORMAT_TIMECODE = 3,
+ WMT_OFFSET_FORMAT_100NS_APPROXIMATE = 4
} WMT_OFFSET_FORMAT;
+typedef enum WMT_PROXY_SETTINGS {
+ WMT_PROXY_SETTING_NONE = 0,
+ WMT_PROXY_SETTING_MANUAL = 1,
+ WMT_PROXY_SETTING_AUTO = 2,
+ WMT_PROXY_SETTING_BROWSER = 3,
+ WMT_PROXY_SETTING_MAX = 4
+} WMT_PROXY_SETTINGS;
+
+typedef enum WMT_CODEC_INFO_TYPE {
+ WMT_CODECINFO_AUDIO = 0,
+ WMT_CODECINFO_VIDEO = 1,
+ WMT_CODECINFO_UNKNOWN = 0XFFFFFFFF
+} WMT_CODEC_INFO_TYPE;
+
+typedef enum tagWMT_STORAGE_FORMAT {
+ WMT_Storage_Format_MP3 = 0,
+ WMT_Storage_Format_V1 = 1
+} WMT_STORAGE_FORMAT;
+
typedef LPCWSTR LPCWSTR_WMSDK_TYPE_SAFE;
[
@@ -277,6 +341,46 @@ interface IWMStreamConfig : IUnknown
[
object,
+ uuid(ad694af1-f8d9-42f8-bc47-70311b0c4f9e),
+ pointer_default(unique),
+ local
+]
+interface IWMBandwidthSharing : IUnknown
+{
+ HRESULT GetBandwidth(
+ [out] DWORD *pdwBitrate,
+ [out] DWORD *pmsBufferWindow);
+
+ HRESULT GetType(
+ [out] GUID *pguidType);
+
+ HRESULT SetBandwidth(
+ [in] DWORD dwBitrate,
+ [in] DWORD msBufferWindow);
+
+ HRESULT SetType(
+ [in] REFGUID guidType);
+}
+
+[
+ object,
+ uuid(8c1c6090-f9a8-4748-8ec3-dd1108ba1e77),
+ pointer_default(unique),
+ local
+]
+interface IWMStreamPrioritization : IUnknown
+{
+ HRESULT GetPriorityRecords(
+ [out] WM_STREAM_PRIORITY_RECORD *pRecordArray,
+ [in, out] WORD *pcRecords);
+
+ HRESULT SetPriorityRecords(
+ [in] WM_STREAM_PRIORITY_RECORD *pRecordArray,
+ [in] WORD cRecords);
+}
+
+[
+ object,
uuid(96406bdb-2b2b-11d3-b36b-00c04f6108ff),
pointer_default(unique),
local
@@ -346,6 +450,64 @@ interface IWMProfile : IUnknown
[
object,
+ uuid(07e72d33-d94e-4be7-8843-60ae5ff7e5f5),
+ pointer_default(unique),
+ local
+]
+interface IWMProfile2 : IWMProfile
+{
+ HRESULT GetProfileID(
+ [out] GUID *pguidID);
+}
+
+[
+ object,
+ uuid(00ef96cc-a461-4546-8bcd-c9a28f0e06f5),
+ pointer_default(unique),
+ local
+]
+interface IWMProfile3 : IWMProfile2
+{
+ HRESULT AddBandwidthSharing(
+ [in] IWMBandwidthSharing *pBS);
+
+ HRESULT CreateNewBandwidthSharing(
+ [out] IWMBandwidthSharing **ppBS);
+
+ HRESULT CreateNewStreamPrioritization(
+ [out] IWMStreamPrioritization **ppSP);
+
+ HRESULT GetBandwidthSharing(
+ [in] DWORD dwBSIndex,
+ [out] IWMBandwidthSharing **ppBS);
+
+ HRESULT GetBandwidthSharingCount(
+ [out] DWORD *pcBS);
+
+ HRESULT GetExpectedPacketCount(
+ [in] QWORD msDuration,
+ [out] QWORD *pcPackets);
+
+ HRESULT GetStorageFormat(
+ [out] WMT_STORAGE_FORMAT *pnStorageFormat);
+
+ HRESULT GetStreamPrioritization(
+ [out] IWMStreamPrioritization **ppSP);
+
+ HRESULT RemoveBandwidthSharing(
+ [in] IWMBandwidthSharing *pBS);
+
+ HRESULT RemoveStreamPrioritization();
+
+ HRESULT SetStorageFormat(
+ [in] WMT_STORAGE_FORMAT nStorageFormat);
+
+ HRESULT SetStreamPrioritization(
+ [in] IWMStreamPrioritization *pSP);
+}
+
+[
+ object,
uuid(d16679f2-6ca0-472d-8d31-2f5d55aee155),
pointer_default(unique),
local
@@ -464,7 +626,7 @@ interface IWMReader : IUnknown
HRESULT GetOutputFormat(
[in] DWORD dwOutputNumber,
[in] DWORD dwFormatNumber,
- [out] IWMOutputMediaProps** ppProps);
+ [out] IWMOutputMediaProps **ppProps);
HRESULT Start(
[in] QWORD cnsStart,
@@ -549,7 +711,7 @@ interface IWMReaderAdvanced : IUnknown
[in] BOOL fAllocate);
HRESULT GetAllocateForStream(
- [in] WORD dwStreamNum,
+ [in] WORD wStreamNum,
[out] BOOL *pfAllocate);
HRESULT GetStatistics(
@@ -1016,6 +1178,501 @@ interface IWMWriterAdvanced3 : IWMWriterAdvanced2
HRESULT SetNonBlocking();
}
+[
+ object,
+ uuid(96406bec-2b2b-11d3-b36b-00c04f6108ff),
+ pointer_default(unique),
+ local
+]
+interface IWMReaderNetworkConfig : IUnknown
+{
+ HRESULT AddLoggingUrl(
+ [in] LPCWSTR pwszUrl);
+
+ HRESULT GetBufferingTime(
+ [out] QWORD *pcnsBufferingTime);
+
+ HRESULT GetConnectionBandwidth(
+ [out] DWORD *pdwConnectionBandwidth);
+
+ HRESULT GetEnableHTTP(
+ [out] BOOL *pfEnableHTTP);
+
+ HRESULT GetEnableMulticast(
+ [out] BOOL *pfEnableMulticast);
+
+ HRESULT GetEnableTCP(
+ [out] BOOL *pfEnableTCP);
+
+ HRESULT GetEnableUDP(
+ [out] BOOL *pfEnableUDP);
+
+ HRESULT GetForceRerunAutoProxyDetection(
+ [out] BOOL *pfForceRerunDetection);
+
+ HRESULT GetLoggingUrl(
+ [in] DWORD dwIndex,
+ [out] LPWSTR pwszUrl,
+ [in, out] DWORD *pcchUrl);
+
+ HRESULT GetLoggingUrlCount(
+ [out] DWORD *pdwUrlCount);
+
+ HRESULT GetNumProtocolsSupported(
+ [out] DWORD *pcProtocols);
+
+ HRESULT GetProxyBypassForLocal(
+ [in] LPCWSTR pwszProtocol,
+ [out] BOOL *pfBypassForLocal);
+
+ HRESULT GetProxyExceptionList(
+ [in] LPCWSTR pwszProtocol,
+ [out] WCHAR *pwszExceptionList,
+ [in, out] DWORD *pcchExceptionList);
+
+ HRESULT GetProxyHostName(
+ [in] LPCWSTR pwszProtocol,
+ [out] WCHAR *pwszHostName,
+ [in, out] DWORD *pcchHostName);
+
+ HRESULT GetProxyPort(
+ [in] LPCWSTR pwszProtocol,
+ [out] DWORD *pdwPort);
+
+ HRESULT GetProxySettings(
+ [in] LPCWSTR pwszProtocol,
+ [out] WMT_PROXY_SETTINGS *pProxySetting);
+
+ HRESULT GetSupportedProtocolName(
+ [in] DWORD dwProtocolNum,
+ [out] WCHAR *pwszProtocolName,
+ [in, out] DWORD *pcchProtocolName);
+
+ HRESULT GetUDPPortRanges(
+ [out] WM_PORT_NUMBER_RANGE *pRangeArray,
+ [in, out] DWORD *pcRanges);
+
+ HRESULT ResetLoggingUrlList();
+
+ HRESULT ResetProtocolRollover();
+
+ HRESULT SetBufferingTime(
+ [in] QWORD cnsBufferingTime);
+
+ HRESULT SetConnectionBandwidth(
+ [in] DWORD dwConnectionBandwidth);
+
+ HRESULT SetEnableHTTP(
+ [in] BOOL fEnableHTTP);
+
+ HRESULT SetEnableMulticast(
+ [in] BOOL fEnableMulticast);
+
+ HRESULT SetEnableTCP(
+ [in] BOOL fEnableTCP);
+
+ HRESULT SetEnableUDP(
+ [in] BOOL fEnableUDP);
+
+ HRESULT SetForceRerunAutoProxyDetection(
+ [in] BOOL fForceRerunDetection);
+
+ HRESULT SetProxyBypassForLocal(
+ [in] LPCWSTR pwszProtocol,
+ [in] BOOL fBypassForLocal);
+
+ HRESULT SetProxyExceptionList(
+ [in] LPCWSTR pwszProtocol,
+ [in] LPCWSTR pwszExceptionList);
+
+ HRESULT SetProxyHostName(
+ [in] LPCWSTR pwszProtocol,
+ [in] LPCWSTR pwszHostName);
+
+ HRESULT SetProxyPort(
+ [in] LPCWSTR pwszProtocol,
+ [in] DWORD dwPort);
+
+ HRESULT SetProxySettings(
+ [in] LPCWSTR pwszProtocol,
+ [in] WMT_PROXY_SETTINGS ProxySetting);
+
+ HRESULT SetUDPPortRanges(
+ [in] WM_PORT_NUMBER_RANGE *pRangeArray,
+ [in] DWORD cRanges);
+}
+
+[
+ object,
+ uuid(d979a853-042b-4050-8387-c939db22013f),
+ pointer_default(unique),
+ local
+]
+interface IWMReaderNetworkConfig2 : IWMReaderNetworkConfig
+{
+ HRESULT GetAcceleratedStreamingDuration(
+ [out] QWORD *pcnsAccelDuration);
+
+ HRESULT GetAutoReconnectLimit(
+ [out] DWORD *pdwAutoReconnectLimit);
+
+ HRESULT GetEnableContentCaching(
+ [out] BOOL *pfEnableContentCaching);
+
+ HRESULT GetEnableFastCache(
+ [out] BOOL *pfEnableFastCache);
+
+ HRESULT GetEnableResends(
+ [out] BOOL *pfEnableResends);
+
+ HRESULT GetEnableThinning(
+ [out] BOOL *pfEnableThinning);
+
+ HRESULT GetMaxNetPacketSize(
+ [out] DWORD *pdwMaxNetPacketSize);
+
+ HRESULT SetAcceleratedStreamingDuration(
+ [in] QWORD cnsAccelDuration);
+
+ HRESULT SetAutoReconnectLimit(
+ [in] DWORD dwAutoReconnectLimit);
+
+ HRESULT SetEnableContentCaching(
+ [in] BOOL fEnableContentCaching);
+
+ HRESULT SetEnableFastCache(
+ [in] BOOL fEnableFastCache);
+
+ HRESULT SetEnableResends(
+ [in] BOOL fEnableResends);
+
+ HRESULT SetEnableThinning(
+ [in] BOOL fEnableThinning);
+}
+
+[
+ object,
+ uuid(96406bed-2b2b-11d3-b36b-00c04f6108ff),
+ pointer_default(unique),
+ local
+]
+interface IWMReaderStreamClock : IUnknown
+{
+ HRESULT GetTime(
+ [out] QWORD *pcnsNow);
+
+ HRESULT KillTimer(
+ [in] DWORD dwTimerId);
+
+ HRESULT SetTimer(
+ [in] QWORD cnsWhen,
+ [in] void *pvParam,
+ [out] DWORD *pdwTimerId);
+}
+
+[
+ object,
+ uuid(cdfb97ab-188f-40b3-b643-5b7903975c59),
+ pointer_default(unique),
+ local
+]
+interface IWMPacketSize : IUnknown
+{
+ HRESULT GetMaxPacketSize(
+ [out] DWORD *pdwMaxPacketSize);
+
+ HRESULT SetMaxPacketSize(
+ [in] DWORD dwMaxPacketSize);
+}
+
+[
+ object,
+ uuid(8bfc2b9e-b646-4233-a877-1c6a079669dc),
+ pointer_default(unique),
+ local
+]
+interface IWMPacketSize2 : IWMPacketSize
+{
+ HRESULT GetMinPacketSize(
+ [out] DWORD *pdwMinPacketSize);
+
+ HRESULT SetMinPacketSize(
+ [in] DWORD dwMinPacketSize);
+}
+
+[
+ object,
+ uuid(d2827540-3ee7-432c-b14c-dc17f085d3b3),
+ pointer_default(unique),
+ local
+]
+interface IWMDRMReader : IUnknown
+{
+ HRESULT AcquireLicense(
+ [in] DWORD dwFlags);
+
+ HRESULT CancelIndividualization();
+
+ HRESULT CancelLicenseAcquisition();
+
+ HRESULT CancelMonitorLicenseAcquisition();
+
+ HRESULT GetDRMProperty(
+ [in] LPCWSTR pwstrName,
+ [out] WMT_ATTR_DATATYPE *pdwType,
+ [out] BYTE *pValue,
+ [out] WORD *pcbLength);
+
+ HRESULT Individualize(
+ [in] DWORD dwFlags);
+
+ HRESULT MonitorLicenseAcquisition();
+
+ HRESULT SetDRMProperty(
+ [in] LPCWSTR pwstrName,
+ [in] WMT_ATTR_DATATYPE dwType,
+ [in] const BYTE *pValue,
+ [in] WORD cbLength);
+}
+
+[
+ object,
+ uuid(befe7a75-9f1d-4075-b9d9-a3c37bda49a0),
+ pointer_default(unique),
+ local
+]
+interface IWMDRMReader2 : IWMDRMReader
+{
+ HRESULT GetCopyOutputLevels(
+ [out] DRM_COPY_OPL *pCopyOPL,
+ [in, out] DWORD *pcbLength,
+ [out] DWORD *pdwMinAppComplianceLevel);
+
+ HRESULT GetPlayOutputLevels(
+ [out] DRM_PLAY_OPL *pPlayOPL,
+ [in, out] DWORD *pcbLength,
+ [out] DWORD *pdwMinAppComplianceLevel);
+
+ HRESULT SetEvaluateOutputLevelLicenses(
+ [in] BOOL fEvaluate);
+
+ HRESULT TryNextLicense();
+}
+
+[
+ object,
+ uuid(f28c0300-9baa-4477-a846-1744d9cbf533),
+ pointer_default(unique),
+ local
+]
+interface IWMDRMReader3 : IWMDRMReader2
+{
+ HRESULT GetInclusionList(
+ [out] GUID **ppGuids,
+ [out] DWORD *pcGuids);
+}
+
+[
+ object,
+ uuid(BDDC4D08-944D-4D52-A612-46C3FDA07DD4),
+ pointer_default(unique),
+ local
+]
+interface IWMReaderAccelerator : IUnknown
+{
+ HRESULT GetCodecInterface(
+ [in] DWORD dwOutputNum,
+ [in] REFIID riid,
+ [out] void **ppvCodecInterface);
+
+ HRESULT Notify(
+ [in] DWORD dwOutputNum,
+ [in] WM_MEDIA_TYPE *pSubtype);
+}
+
+[
+ object,
+ uuid(F369E2F0-E081-4FE6-8450-B810B2F410D1),
+ pointer_default(unique),
+ local
+]
+interface IWMReaderTimecode : IUnknown
+{
+ HRESULT GetTimecodeRangeBounds(
+ [in] WORD wStreamNum,
+ [in] WORD wRangeNum,
+ [out] DWORD *pStartTimecode,
+ [out] DWORD *pEndTimecode);
+
+ HRESULT GetTimecodeRangeCount(
+ [in] WORD wStreamNum,
+ [out] WORD *pwRangeCount);
+}
+
+[
+ object,
+ uuid(96406bda-2b2b-11d3-b36b-00c04f6108ff),
+ pointer_default(unique),
+ local
+]
+interface IWMHeaderInfo : IUnknown
+{
+ HRESULT AddMarker(
+ [in] WCHAR *pwszMarkerName,
+ [in] QWORD cnsMarkerTime);
+
+ HRESULT AddScript(
+ [in] WCHAR *pwszType,
+ [in] WCHAR *pwszCommand,
+ [in] QWORD cnsScriptTime);
+
+ HRESULT GetAttributeByIndex(
+ [in] WORD wIndex,
+ [in] WORD *pwStreamNum,
+ [out] WCHAR *pwszName,
+ [in, out] WORD *pcchNameLen,
+ [out] WMT_ATTR_DATATYPE *pType,
+ [out] BYTE *pValue,
+ [in, out] WORD *pcbLength);
+
+ HRESULT GetAttributeByName(
+ [in, out] WORD *pwStreamNum,
+ [in] LPCWSTR pszName,
+ [out] WMT_ATTR_DATATYPE *pType,
+ [out] BYTE *pValue,
+ [in, out] WORD *pcbLength);
+
+ HRESULT GetAttributeCount(
+ [in] WORD wStreamNum,
+ [out] WORD *pcAttributes);
+
+ HRESULT GetMarker(
+ [in] WORD wIndex,
+ [out] WCHAR *pwszMarkerName,
+ [in] WORD *pcchMarkerNameLen,
+ [out] QWORD *pcnsMarkerTime);
+
+ HRESULT GetMarkerCount(
+ [out] WORD *pcMarkers);
+
+ HRESULT GetScript(
+ [in] WORD wIndex,
+ [out] WCHAR *pwszType,
+ [in, out] WORD *pcchTypeLen,
+ [out] WCHAR *pwszCommand,
+ [in, out] WORD *pcchCommandLen,
+ [out] QWORD *pcnsScriptTime);
+
+ HRESULT GetScriptCount(
+ [out] WORD *pcScripts);
+
+ HRESULT RemoveMarker(
+ [in] WORD wIndex);
+
+ HRESULT RemoveScript(
+ [in] WORD wIndex);
+
+ HRESULT SetAttribute(
+ [in] WORD wStreamNum,
+ [in] LPCWSTR pszName,
+ [in] WMT_ATTR_DATATYPE Type,
+ [in] const BYTE *pValue,
+ [in] WORD cbLength);
+}
+
+[
+ object,
+ uuid(15cf9781-454e-482e-b393-85fae487a810),
+ pointer_default(unique),
+ local
+]
+interface IWMHeaderInfo2 : IWMHeaderInfo
+{
+ HRESULT GetCodecInfo(
+ [in] DWORD wIndex,
+ [in, out] WORD *pcchName,
+ [out] WCHAR *pwszName,
+ [in, out] WORD *pcchDescription,
+ [out] WCHAR *pwszDescription,
+ [out] WMT_CODEC_INFO_TYPE *pCodecType,
+ [in, out] WORD *pcbCodecInfo,
+ [out] BYTE *pbCodecInfo);
+
+ HRESULT GetCodecInfoCount(
+ [out] DWORD *pcCodecInfos);
+}
+
+[
+ object,
+ uuid(15CC68E3-27CC-4ecd-B222-3F5D02D80BD5),
+ pointer_default(unique),
+ local
+]
+interface IWMHeaderInfo3 : IWMHeaderInfo2
+{
+ HRESULT AddAttribute(
+ [in] WORD wStreamNum,
+ [in] LPCWSTR pszName,
+ [out] WORD *pwIndex,
+ [in] WMT_ATTR_DATATYPE Type,
+ [in] WORD wLangIndex,
+ [in] const BYTE *pValue,
+ [in] DWORD dwLength);
+
+ HRESULT AddCodecInfo(
+ [in] WCHAR *pwszName,
+ [in] WCHAR *pwszDescription,
+ [in] WMT_CODEC_INFO_TYPE codecType,
+ [in] WORD cbCodecInfo,
+ [in] BYTE *pbCodecInfo);
+
+ HRESULT DeleteAttribute(
+ [in] WORD wStreamNum,
+ [in] WORD wIndex);
+
+ HRESULT GetAttributeByIndexEx(
+ [in] WORD wStreamNum,
+ [in] WORD wIndex,
+ [out] LPWSTR pwszName,
+ [in, out] WORD *pwNameLen,
+ [out] WMT_ATTR_DATATYPE *pType,
+ [out] WORD *pwLangIndex,
+ [out] BYTE *pValue,
+ [in, out] DWORD *pdwDataLength);
+
+ HRESULT GetAttributeCountEx(
+ [in] WORD wStreamNum,
+ [out] WORD *pcAttributes);
+
+ HRESULT GetAttributeIndices(
+ [in] WORD wStreamNum,
+ [in] LPCWSTR pwszName,
+ [in] WORD *pwLangIndex,
+ [out] WORD *pwIndices,
+ [in, out] WORD *pwCount);
+
+ HRESULT ModifyAttribute(
+ [in] WORD wStreamNum,
+ [in] WORD wIndex,
+ [in] WMT_ATTR_DATATYPE Type,
+ [in] WORD wLangIndex,
+ [in] const BYTE *pValue,
+ [in] DWORD dwLength);
+}
+
+[
+ object,
+ uuid(fdbe5592-81a1-41ea-93bd-735cad1adc05),
+ pointer_default(unique),
+ local
+]
+interface IWMReaderTypeNegotiation : IUnknown
+{
+ HRESULT TryOutputProps(
+ [in] DWORD dwOutputNum,
+ [in] IWMOutputMediaProps *pOutput);
+}
+
cpp_quote("HRESULT WINAPI WMCreateWriter(IUnknown*,IWMWriter**);")
cpp_quote("HRESULT WINAPI WMCreateReader(IUnknown*,DWORD,IWMReader**);")
--
2.12.0
More information about the wine-patches
mailing list