Win32 API:CoCreateFreeThreadedMarshaler 函数(Combaseapi.h)
CoCreateFreeThreadedMarshaler 函数是 Windows API 中的一部分,用于创建一个自由线程化的代理工厂对象。这个函数通常在多线程应用程序中使用,以便将对象的代理绑定到任意线程。以下是该函数的原型:HRESULT CoCreateFreeThreadedMarshaler( IUnknown *punkOuter, IUnknown **ppunkMarshal);参数解释: punkOuter:如果不是 nullptr,则创建的自由线程化代理将聚合给定的外部对象。 ppunkMarshal:用于存储创建的自由线程化代理的指针。函数返回 HRESULT 类型的值。如果操作成功,返回 S_OK,否则返回相应的错误代码。示例用法:#include <Windows.h>#include <Combaseapi.h>#include <iostream>int main() { IUnknown *pOuter = nullptr; IUnknown *pMarshal = nullptr; HRESU...
Win32 API:CoCancelCall 函数(Combaseapi.h)
CoCancelCall 函数是 Windows API 中的一部分,用于取消通过 CoCallDllGetClassObject 函数发起的调用。此函数通常用于取消异步调用。以下是该函数的原型:HRESULT CoCancelCall( DWORD dwThreadId, ULONG ulTimeout);参数解释: dwThreadId:调用线程的标识符,指定要取消调用的线程。 ulTimeout:取消调用的超时时间(以毫秒为单位)。如果设置为 INFINITE,则等待直到取消完成。函数返回 HRESULT 类型的值。如果操作成功,返回 S_OK,否则返回相应的错误代码。请注意,这个函数通常用于取消由 CoCallDllGetClassObject 函数发起的异步调用。它可能不是在所有场景下都适用,具体使用时需要注意上下文和相关的调用流程。
Win32 API:CLSIDFromString 函数(Combaseapi.h)
CLSIDFromString 函数是 Windows API 中的一部分,位于 Combaseapi.h 头文件中。这个函数用于将字符串形式的 CLSID(Class Identifier)转换为对应的 CLSID 结构体。以下是该函数的原型:HRESULT CLSIDFromString( LPCOLESTR lpsz, LPCLSID pclsid);参数解释: lpsz:要转换的字符串形式的 CLSID。 pclsid:用于存储转换后的 CLSID 结构体。函数返回 HRESULT 类型的值,如果操作成功,返回 S_OK,否则返回相应的错误代码。示例用法:#include <Windows.h>#include <Combaseapi.h>#include <iostream>int main() { LPCOLESTR clsidString = L"{00020812-0000-0000-C000-000000000046}"; // Excel CLSID CLSID clsid; HRES...
Win32 API:CLSIDFromProgID 函数(Combaseapi.h)
CLSIDFromProgID 是 Windows API 中的一个函数,位于 Combaseapi.h 头文件中。它用于从给定的 ProgID(Programmatic Identifier)获取相应的 CLSID(Class Identifier)。下面是该函数的原型:HRESULT CLSIDFromProgID( LPCOLESTR lpszProgID, LPCLSID lpclsid);参数解释: lpszProgID:要检索 CLSID 的 ProgID 字符串。 lpclsid:用于存储检索到的 CLSID。函数返回 HRESULT 类型的值,如果操作成功,返回 S_OK,否则返回相应的错误代码。示例用法:#include <Windows.h>#include <Combaseapi.h>#include <iostream>int main() { LPCOLESTR progID = L"Excel.Application"; CLSID clsid; HRESULT hr = CL...
Win32 API:ICOMAdminCatalog2 接口(Comadmin.h)
ICOMAdminCatalog2 接口是 COM+ (Component Services) 相关的 Win32 API 中的一部分,用于管理 COM+ 组件的目录信息。这个接口是 ICOMAdminCatalog 接口的扩展,提供了更多功能和选项。以下是 ICOMAdminCatalog2 接口的一些主要方法:1. GetCollection:获取指定集合的接口。HRESULT GetCollection([in] BSTR bstrCollName, [out, retval] IDispatch **ppCatalogCollection);2. Connect:连接到 COM+ 目录。HRESULT Connect([in, defaultvalue(0)] BSTR bstrConnectString, [out, retval] IDispatch **ppCatalogCollection);3. GetCollectionByQuery:通过查询获取集合。HRESULT GetCollectionByQuery([in] BSTR bstrCollName, [in]...
Win32 API:ICOMAdminCatalog 接口(Comadmin.h)
ICOMAdminCatalog 接口是 COM+ (Component Services) 相关的 Win32 API 中的一部分,用于管理 COM+ 组件的目录信息。这个接口提供了对 COM+ 目录的访问和操作方法。以下是 ICOMAdminCatalog 接口的一些主要方法:1. GetCollection:获取指定集合的接口。HRESULT GetCollection([in] BSTR bstrCollName, [out, retval] IDispatch **ppCatalogCollection);2. Connect:连接到 COM+ 目录。HRESULT Connect([in, defaultvalue(0)] BSTR bstrConnectString, [out, retval] IDispatch **ppCatalogCollection);3. GetCatalogObject:获取 COM+ 目录中指定键的对象。HRESULT GetCatalogObject([in] BSTR bstrKey, [out, retval] IDispatch *...
Win32 API:ICatalogObject 接口(Comadmin.h)
ICatalogObject 接口是 COM+ (Component Services) 相关的 Win32 API 中的一部分,用于管理 COM+ 组件及其属性。ICatalogObject 接口提供了对 COM+ 组件对象的访问和操作方法。以下是 ICatalogObject 接口的一些主要方法:1. GetProp:获取对象的属性值。HRESULT GetProp([in] BSTR bstrName, [out, retval] VARIANT *pvarValue);2. PutProp:设置对象的属性值。HRESULT PutProp([in] BSTR bstrName, [in] VARIANT *pvarValue);3. IsPropertyReadOnly:检查属性是否是只读的。HRESULT IsPropertyReadOnly([in] BSTR bstrName, [out, retval] VARIANT_BOOL *bPropReadOnly);4. GetQual:获取对象的属性限定符值。HRESULT GetQual([in] BSTR bstrNa...
Win32 API:ICatalogCollection 接口(Comadmin.h)
ICatalogCollection 接口是 COM+ (Component Services) 相关的 Win32 API 中的一部分,用于管理 COM+ 组件的集合。ICatalogCollection 接口提供了对 COM+ 组件集合的访问和操作方法。以下是 ICatalogCollection 接口的一些主要方法:1. GetCollection:获取集合中的所有对象。HRESULT GetCollection([in] BSTR bstrCollName, [out, retval] IDispatch **ppCatalogCollection);2. GetItem:获取集合中指定键的对象。HRESULT GetItem([in] BSTR bstrKey, [out, retval] IDispatch **ppCatalogObject);3. Add:向集合中添加新对象。HRESULT Add([in] IDispatch *pCatalogObject, [out, retval] IDispatch **ppCatalogObject);4. Remove:从集...
Win32 API:eAVEncVideoContentType 枚举(Codecapi.h)
eAVEncVideoContentType 枚举同样是 Windows 桌面应用程序中的 Win32 API 的一部分,它在编码视频时用于指定视频的内容类型。这个枚举也位于 Codecapi.h 文件中,是与音视频编解码相关的开发有关的一部分。以下是 eAVEncVideoContentType 枚举的定义:typedef enum eAVEncVideoContentType{ eAVEncVideoContentType_Unknown = 0, eAVEncVideoContentType_FixedFrameRate = 1, eAVEncVideoContentType_VariableFrameRate = 2} eAVEncVideoContentType;这个枚举用于描述视频的内容类型,主要包括两种类型: eAVEncVideoContentType_Unknown: 未知的内容类型。 eAVEncVideoContentType_FixedFrameRate: 固定帧率的内容类型。 eAVEncVideoContentTy...
Win32 API:eAVEncVideoColorTransferMatrix 枚举(Codecapi.h)
eAVEncVideoColorTransferMatrix 枚举是 Windows 桌面应用程序中使用的 Win32 API 的一部分,它在编码视频时用于指定颜色转移矩阵。这个枚举位于 Codecapi.h 文件中,主要用于音视频编解码相关的开发。具体而言,eAVEncVideoColorTransferMatrix 枚举定义了一系列可能的颜色转移矩阵类型,用于描述视频颜色空间的特性。这在视频编码中很重要,因为不同的视频颜色空间可能需要不同的编码和解码处理。以下是 eAVEncVideoColorTransferMatrix 枚举的可能取值:typedef enum eAVEncVideoColorTransferMatrix{ eAVEncVideoColorTransferMatrix_SameAsSource = 0, eAVEncVideoColorTransferMatrix_BT709, eAVEncVideoColorTransferMatrix_Unknown = 0xffffffff} eAVEncVideoColorTransf...
Win32 API:eAVEncVideoColorTransferFunction 枚举(Codecapi.h)
eAVEncVideoColorTransferFunction 是 Win32 API 中的一个枚举,定义在 Codecapi.h 头文件中,用于表示视频编码器的颜色传输函数(color transfer function)设置。颜色传输函数描述了视频中光的强度和亮度之间的关系。以下是 eAVEncVideoColorTransferFunction 枚举的定义:typedef enum eAVEncVideoColorTransferFunction { eAVEncVideoColorTransferFunction_SameAsSource = 0, eAVEncVideoColorTransferFunction_10 = 1, eAVEncVideoColorTransferFunction_18 = 2, eAVEncVideoColorTransferFunction_20 = 3, eAVEncVideoColorTransferFunction_22 = 4, eAVEncVideoColorTransferFunction_22...
Win32 API:eAVEncVideoColorPrimaries 枚举(Codecapi.h)
eAVEncVideoColorPrimaries 是 Win32 API 中的一个枚举,定义在 Codecapi.h 头文件中,用于表示视频编码器的颜色原色(color primaries)设置。颜色原色描述了视频中使用的基本颜色的坐标。以下是 eAVEncVideoColorPrimaries 枚举的定义:typedef enum eAVEncVideoColorPrimaries { eAVEncVideoColorPrimaries_SameAsSource = 0, eAVEncVideoColorPrimaries_Reserved = 1, eAVEncVideoColorPrimaries_BT709 = 2, eAVEncVideoColorPrimaries_BT470_2_SysM = 3, eAVEncVideoColorPrimaries_BT470_2_SysBG = 4, eAVEncVideoColorPrimaries_SMPTE170M = 5, eAVEncVideoColorPrimaries_SMPTE...
Win32 API:eAVEncVideoColorNominalRange 枚举(Codecapi.h)
eAVEncVideoColorNominalRange 是 Win32 API 中的一个枚举,定义在 Codecapi.h 头文件中,用于表示视频编码器的颜色标称范围(color nominal range)设置。颜色标称范围描述了视频中亮度和色度分量的数值范围。以下是 eAVEncVideoColorNominalRange 枚举的定义:typedef enum eAVEncVideoColorNominalRange { eAVEncVideoColorNominalRange_SameAsSource = 0, eAVEncVideoColorNominalRange_Unknown = 1, eAVEncVideoColorNominalRange_0_255 = 2, eAVEncVideoColorNominalRange_16_235 = 3} eAVEncVideoColorNominalRange;这个枚举定义了几种不同的颜色标称范围设置: eAVEncVideoColorNominalRange_SameAsSource: 颜色标称范围与源...
Win32 API:eAVEncVideoColorLighting 枚举(Codecapi.h)
eAVEncVideoColorLighting 是 Win32 API 中的一个枚举,定义在 Codecapi.h 头文件中,用于表示视频编码器的颜色照明(color lighting)设置。颜色照明通常用于调整视频的颜色和亮度等参数,以实现更好的视觉效果。以下是 eAVEncVideoColorLighting 枚举的定义:typedef enum eAVEncVideoColorLighting { eAVEncVideoColorLighting_SameAsSource = 0, eAVEncVideoColorLighting_Unknown = 1, eAVEncVideoColorLighting_Bright = 2, eAVEncVideoColorLighting_Office = 3, eAVEncVideoColorLighting_Dim = 4, eAVEncVideoColorLighting_Dark = 5} eAVEncVideoColorLighting;这个枚举定义了几种不同的颜色照明设置: eAVEncVi...
Win32 API:eAVEncVideoChromaSubsampling 枚举(Codecapi.h)
eAVEncVideoChromaSubsampling 是 Win32 API 中的一个枚举,定义在 Codecapi.h 头文件中,用于表示视频编码器的色度抽样(chroma subsampling)设置。色度抽样是指在色度分量(UV,或CbCr)中对颜色信息的抽样方式。以下是 eAVEncVideoChromaSubsampling 枚举的定义:typedef enum eAVEncVideoChromaSubsampling { eAVEncVideoChromaSubsampling_SameAsSource = 0, eAVEncVideoChromaSubsampling_444 = 1, eAVEncVideoChromaSubsampling_422 = 2, eAVEncVideoChromaSubsampling_420 = 3} eAVEncVideoChromaSubsampling;这个枚举定义了四种不同的色度抽样设置: eAVEncVideoChromaSubsampling_SameAsSource: 色度抽样与源相同。使用源视频...
Win32 API:eAVEncVideoChromaResolution 枚举(Codecapi.h)
eAVEncVideoChromaResolution 是 Win32 API 中的一个枚举,定义在 Codecapi.h 头文件中,用于表示视频编码器的色度分辨率(chroma resolution)设置。色度分辨率指的是颜色信息相对于亮度信息的分辨率。以下是 eAVEncVideoChromaResolution 枚举的定义:typedef enum eAVEncVideoChromaResolution { eAVEncVideoChromaResolution_SameAsSource = 0, eAVEncVideoChromaResolution_Quarter = 1, eAVEncVideoChromaResolution_Half = 2, eAVEncVideoChromaResolution_Full = 3} eAVEncVideoChromaResolution;这个枚举定义了四种不同的色度分辨率设置: eAVEncVideoChromaResolution_SameAsSource: 色度分辨率与源相同。使用源视频的色度分辨率。 eA...
Win32 API:eAVEncMuxOutput 枚举(Codecapi.h)
在 Win32 API 中,eAVEncMuxOutput 是一个枚举,定义在 Codecapi.h 头文件中。这个枚举用于表示音视频编码器的复用(Mux)输出配置。以下是 eAVEncMuxOutput 枚举的定义:typedef enum eAVEncMuxOutput { eAVEncMuxOutputAuto = 0, eAVEncMuxOutputPS = 1, eAVEncMuxOutputTS = 2, eAVEncMuxOutputES = 3} eAVEncMuxOutput;这个枚举定义了四种不同的复用输出模式: eAVEncMuxOutputAuto: 自动选择复用输出模式。编码器会根据输入的编码器类型和其他相关参数自动选择适当的输出模式。 eAVEncMuxOutputPS: 输出 PS(Program Stream)格式。PS 是一种音视频复用格式,常见于 MPEG 标准。 eAVEncMuxOutputTS: 输出 TS(Transport Stream)格式。TS 也是一种音视频复用格式,广泛用于数字电视和其他传输领域。 eAVEn...
Win32 API:eAVEncMPVSceneDetection 枚举(Codecapi.h)
eAVEncMPVSceneDetection 是 Win32 API 中的一个枚举,定义在 Codecapi.h 头文件中,用于表示 MPEG 视频编码器(MPEG Video Encoder)的场景检测设置。场景检测允许编码器在编码视频时检测场景变化,并在必要时进行调整以优化压缩效果。以下是 eAVEncMPVSceneDetection 枚举的定义:typedef enum eAVEncMPVSceneDetection { eAVEncMPVSceneDetection_None = 0, eAVEncMPVSceneDetection_InsertIPicture = 1, eAVEncMPVSceneDetection_InsertNavPacket = 2} eAVEncMPVSceneDetection;这个枚举定义了三种不同的场景检测模式: eAVEncMPVSceneDetection_None: 关闭场景检测。编码器不进行场景检测操作。 eAVEncMPVSceneDetection_InsertIPicture: 在检测到场景变化时插入 I 帧...
Win32 API:eAVEncMPVScanPattern 枚举(Codecapi.h)
eAVEncMPVScanPattern 是 Win32 API 中的一个枚举,定义在 Codecapi.h 头文件中,用于表示 MPEG 视频编码器(MPEG Video Encoder)的扫描模式设置。扫描模式定义了编码器在对视频帧进行编码时的扫描顺序。以下是 eAVEncMPVScanPattern 枚举的定义:typedef enum eAVEncMPVScanPattern { eAVEncMPVScanPattern_Auto = 0, eAVEncMPVScanPattern_ZigZag = 1, eAVEncMPVScanPattern_AlternateScan = 2} eAVEncMPVScanPattern;这个枚举定义了三种不同的扫描模式: eAVEncMPVScanPattern_Auto: 自动选择扫描模式。编码器根据输入视频的特性和目标比特率等因素自动选择合适的扫描模式。 eAVEncMPVScanPattern_ZigZag: ZigZag 扫描模式。这是一种经典的扫描模式,对 DCT(离散余弦变换)系数的顺序进行 ZigZag 扫...
Win32 API:eAVEncMPVQScaleType 枚举(Codecapi.h)
eAVEncMPVQScaleType 是 Win32 API 中的一个枚举,定义在 Codecapi.h 头文件中,用于表示 MPEG 视频编码器(MPEG Video Encoder)的量化标度类型。量化是视频编码中的一个关键步骤,用于控制编码后视频的质量和文件大小。以下是 eAVEncMPVQScaleType 枚举的定义:typedef enum eAVEncMPVQScaleType { eAVEncMPVQScaleType_Auto = 0, eAVEncMPVQScaleType_Linear = 1} eAVEncMPVQScaleType;这个枚举定义了两种不同的量化标度类型: eAVEncMPVQScaleType_Auto: 自动选择量化标度。编码器根据输入视频的特性和目标比特率等因素自动选择合适的量化标度。 eAVEncMPVQScaleType_Linear: 使用线性量化标度。编码器使用线性的量化标度,其中较小的值对应更好的质量,但可能导致较大的文件大小。在实际使用中,通常建议选择自动量化标度以便编码器根据输入视频的内容和目标比特率进行优化...