2025-11-28 00:35:46 +09:00

191 lines
5.9 KiB
C#

//*****************************************************************************
//
// Microsoft Windows Media
// Copyright ( C) Microsoft Corporation. All rights reserved.
//
// FileName: WMFSDKFunction.cs
//
// Abstract: Wrapper used by managed-code samples.
//
//*****************************************************************************
using System;
using System.Runtime.InteropServices;
namespace WMFSDKWrapper
{
public class WMFSDKFunctions
{
[DllImport("WMVCore.dll", EntryPoint="WMCreateEditor", SetLastError=true,
CharSet=CharSet.Unicode, ExactSpelling=true,
CallingConvention=CallingConvention.StdCall)]
public static extern uint WMCreateEditor(
[Out, MarshalAs(UnmanagedType.Interface)] out IWMMetadataEditor ppMetadataEditor );
public WMFSDKFunctions()
{
//
// TODO: Add constructor logic here
//
}
}
[Guid("96406BD9-2B2B-11d3-B36B-00C04F6108FF"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IWMMetadataEditor
{
uint Open( [In,MarshalAs(UnmanagedType.LPWStr)] string pwszFilename );
uint Close();
uint Flush();
}
[Guid("15CC68E3-27CC-4ecd-B222-3F5D02D80BD5"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IWMHeaderInfo3
{
uint GetAttributeCount(
[In] ushort wStreamNum,
[Out] out ushort pcAttributes );
uint GetAttributeByIndex(
[In] ushort wIndex,
[Out,In] ref ushort pwStreamNum,
[Out, MarshalAs(UnmanagedType.LPWStr)] string pwszName,
[Out,In] ref ushort pcchNameLen,
[Out] out WMT_ATTR_DATATYPE pType,
[Out, MarshalAs(UnmanagedType.LPArray)] byte[] pValue,
[Out,In] ref ushort pcbLength );
uint GetAttributeByName(
[Out,In] ref ushort pwStreamNum,
[Out,MarshalAs(UnmanagedType.LPWStr)] string pszName,
[Out] out WMT_ATTR_DATATYPE pType,
[Out, MarshalAs(UnmanagedType.LPArray)] byte[] pValue,
[Out,In] ref ushort pcbLength );
uint SetAttribute(
[In] ushort wStreamNum,
[In,MarshalAs(UnmanagedType.LPWStr)] string pszName,
[In] WMT_ATTR_DATATYPE Type,
[In, MarshalAs(UnmanagedType.LPArray)] byte[] pValue,
[In] ushort cbLength );
uint GetMarkerCount(
[Out] out ushort pcMarkers );
uint GetMarker(
[In] ushort wIndex,
[Out, MarshalAs(UnmanagedType.LPWStr)] string pwszMarkerName,
[Out,In] ref ushort pcchMarkerNameLen,
[Out] out ulong pcnsMarkerTime);
uint AddMarker(
[In,MarshalAs(UnmanagedType.LPWStr)] string pwszMarkerName,
[In] ulong cnsMarkerTime );
uint RemoveMarker(
[In] ushort wIndex );
uint GetScriptCount(
[Out] out ushort pcScripts );
uint GetScript(
[In] ushort wIndex,
[Out,MarshalAs(UnmanagedType.LPWStr)] string pwszType,
[Out, In] ref ushort pcchTypeLen,
[Out,MarshalAs(UnmanagedType.LPWStr)] string pwszCommand,
[Out,In] ref ushort pcchCommandLen,
[Out] out ulong pcnsScriptTime );
uint AddScript(
[In,MarshalAs(UnmanagedType.LPWStr)] string pwszType,
[In,MarshalAs(UnmanagedType.LPWStr)] string pwszCommand,
[In] ulong cnsScriptTime );
uint RemoveScript(
[In] ushort wIndex );
uint GetCodecInfoCount(
[Out] out uint pcCodecInfos );
uint GetCodecInfo(
[In] uint wIndex,
[Out,In] ref ushort pcchName,
[Out,MarshalAs(UnmanagedType.LPWStr)] string pwszName,
[Out,In] ref ushort pcchDescription,
[Out,MarshalAs(UnmanagedType.LPWStr)] string pwszDescription,
[Out] out WMT_CODEC_INFO_TYPE pCodecType,
[Out,In] ref ushort pcbCodecInfo,
[Out, MarshalAs(UnmanagedType.LPArray)] byte[] pbCodecInfo );
uint GetAttributeCountEx(
[In] ushort wStreamNum,
[Out] out ushort pcAttributes );
uint GetAttributeIndices(
[In] ushort wStreamNum,
[In,MarshalAs(UnmanagedType.LPWStr)] string pwszName,
[In] ref ushort pwLangIndex,
[Out, MarshalAs(UnmanagedType.LPArray)] ushort[] pwIndices,
[Out,In] ref ushort pwCount );
uint GetAttributeByIndexEx(
[In] ushort wStreamNum,
[In] ushort wIndex,
[Out,MarshalAs(UnmanagedType.LPWStr)] string pwszName,
[Out,In] ref ushort pwNameLen,
[Out] out WMT_ATTR_DATATYPE pType,
[Out] out ushort pwLangIndex,
[Out, MarshalAs(UnmanagedType.LPArray)] byte[] pValue,
[Out,In] ref uint pdwDataLength );
uint ModifyAttribute(
[In] ushort wStreamNum,
[In] ushort wIndex,
[In] WMT_ATTR_DATATYPE Type,
[In] ushort wLangIndex,
[In, MarshalAs(UnmanagedType.LPArray)] byte[] pValue,
[In] uint dwLength );
uint AddAttribute(
[In] ushort wStreamNum,
[In,MarshalAs(UnmanagedType.LPWStr)] string pszName,
[Out] out ushort pwIndex,
[In] WMT_ATTR_DATATYPE Type,
[In] ushort wLangIndex,
[In, MarshalAs(UnmanagedType.LPArray)] byte[] pValue,
[In] uint dwLength );
uint DeleteAttribute(
[In] ushort wStreamNum,
[In] ushort wIndex );
uint AddCodecInfo(
[In,MarshalAs(UnmanagedType.LPWStr)] string pszName,
[In,MarshalAs(UnmanagedType.LPWStr)] string pwszDescription,
[In] WMT_CODEC_INFO_TYPE codecType,
[In] ushort cbCodecInfo,
[In, MarshalAs(UnmanagedType.LPArray)] byte[] pbCodecInfo );
}
public enum WMT_ATTR_DATATYPE
{
WMT_TYPE_DWORD = 0,
WMT_TYPE_STRING = 1,
WMT_TYPE_BINARY = 2,
WMT_TYPE_BOOL = 3,
WMT_TYPE_QWORD = 4,
WMT_TYPE_WORD = 5,
WMT_TYPE_GUID = 6,
}
public enum WMT_CODEC_INFO_TYPE
{
WMT_CODECINFO_AUDIO = 0,
WMT_CODECINFO_VIDEO = 1,
WMT_CODECINFO_UNKNOWN = 0xffffff
}
}