?? amstream.cs
字號:
#region license
/*
DirectShowLib - Provide access to DirectShow interfaces via .NET
Copyright (C) 2006
http://sourceforge.net/projects/directshownet/
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#endregion
using System;
using System.Drawing;
using System.Runtime.InteropServices;
#if !USING_NET11
using System.Runtime.InteropServices.ComTypes;
#endif
namespace DirectShowLib.MultimediaStreaming
{
#region Declarations
/// <summary>
/// From unnamed enum
/// </summary>
[Flags]
public enum AMMStream
{
None = 0x0,
AddDefaultRenderer = 0x1,
CreatePeer = 0x2,
StopIfNoSamples = 0x4,
NoStall = 0x8
}
/// <summary>
/// From unnamed enum
/// </summary>
[Flags]
public enum AMMMultiStream
{
None = 0x0,
NoGraphThread = 0x1
}
/// <summary>
/// From unnamed enum
/// </summary>
[Flags]
public enum AMOpenModes
{
RenderTypeMask = 0x3,
RenderToExisting = 0,
RenderAllStreams = 0x1,
NoRender = 0x2,
NoClock = 0x4,
Run = 0x8
}
#endregion
#region Interfaces
[ComImport,
Guid("BEBE595D-9A6F-11D0-8FDE-00C04FD9189D"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IAMMediaStream : IMediaStream
{
#region IMediaStream Methods
[PreserveSig]
new int GetMultiMediaStream(
[MarshalAs(UnmanagedType.Interface)] out IMultiMediaStream ppMultiMediaStream
);
[PreserveSig]
new int GetInformation(
out Guid pPurposeId,
out StreamType pType
);
[PreserveSig]
new int SetSameFormat(
[In, MarshalAs(UnmanagedType.Interface)] IMediaStream pStreamThatHasDesiredFormat,
[In] int dwFlags
);
[PreserveSig]
new int AllocateSample(
[In] int dwFlags,
[MarshalAs(UnmanagedType.Interface)] out IStreamSample ppSample
);
[PreserveSig]
new int CreateSharedSample(
[In, MarshalAs(UnmanagedType.Interface)] IStreamSample pExistingSample,
[In] int dwFlags,
[MarshalAs(UnmanagedType.Interface)] out IStreamSample ppNewSample
);
[PreserveSig]
new int SendEndOfStream(
int dwFlags
);
#endregion
[PreserveSig]
int Initialize(
[In, MarshalAs(UnmanagedType.IUnknown)] object pSourceObject,
[In] AMMStream dwFlags,
[In, MarshalAs(UnmanagedType.LPStruct)] Guid PurposeId,
[In] StreamType StreamType
);
[PreserveSig]
int SetState(
[In] FilterState State
);
[PreserveSig]
int JoinAMMultiMediaStream(
[In, MarshalAs(UnmanagedType.Interface)] IAMMultiMediaStream pAMMultiMediaStream
);
[PreserveSig]
int JoinFilter(
[In, MarshalAs(UnmanagedType.Interface)] IMediaStreamFilter pMediaStreamFilter
);
[PreserveSig]
int JoinFilterGraph(
[In, MarshalAs(UnmanagedType.Interface)] IFilterGraph pFilterGraph
);
}
[ComImport,
InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
Guid("BEBE595C-9A6F-11D0-8FDE-00C04FD9189D")]
public interface IAMMultiMediaStream : IMultiMediaStream
{
#region IMultiMediaStream Methods
[PreserveSig]
new int GetInformation(
out MMSSF pdwFlags,
out StreamType pStreamType
);
[PreserveSig]
new int GetMediaStream(
[In, MarshalAs(UnmanagedType.LPStruct)] Guid idPurpose,
[MarshalAs(UnmanagedType.Interface)] out IMediaStream ppMediaStream
);
[PreserveSig]
new int EnumMediaStreams(
[In] int Index,
[MarshalAs(UnmanagedType.Interface)] out IMediaStream ppMediaStream
);
[PreserveSig]
new int GetState(
out StreamState pCurrentState
);
[PreserveSig]
new int SetState(
[In] StreamState NewState
);
[PreserveSig]
new int GetTime(
out long pCurrentTime
);
[PreserveSig]
new int GetDuration(
out long pDuration
);
[PreserveSig]
new int Seek(
[In] long SeekTime
);
[PreserveSig]
new int GetEndOfStreamEventHandle(
out IntPtr phEOS
);
#endregion
[PreserveSig]
int Initialize(
[In] StreamType StreamType,
[In] AMMMultiStream dwFlags,
[In, MarshalAs(UnmanagedType.Interface)] IGraphBuilder pFilterGraph
);
[PreserveSig]
int GetFilterGraph(
[MarshalAs(UnmanagedType.Interface)] out IGraphBuilder ppGraphBuilder
);
[PreserveSig]
int GetFilter(
[MarshalAs(UnmanagedType.Interface)] out IMediaStreamFilter ppFilter
);
[PreserveSig]
int AddMediaStream(
[In, MarshalAs(UnmanagedType.IUnknown)] object pStreamObject,
[In] DsGuid PurposeId,
[In] AMMStream dwFlags,
[Out] IMediaStream ppNewStream
);
[PreserveSig]
int OpenFile(
[In, MarshalAs(UnmanagedType.LPWStr)] string pszFileName,
[In] AMOpenModes dwFlags
);
[PreserveSig]
int OpenMoniker(
#if USING_NET11
[In, MarshalAs(UnmanagedType.Interface)] UCOMIBindCtx pCtx,
[In, MarshalAs(UnmanagedType.Interface)] UCOMIMoniker pMoniker,
#else
[In, MarshalAs(UnmanagedType.Interface)] IBindCtx pCtx,
[In, MarshalAs(UnmanagedType.Interface)] IMoniker pMoniker,
#endif
[In] AMOpenModes dwFlags
);
[PreserveSig]
int Render(
[In] AMOpenModes dwFlags
);
}
[ComImport,
InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
Guid("AB6B4AFA-F6E4-11D0-900D-00C04FD9189D")]
public interface IAMMediaTypeStream : IMediaStream
{
#region IMediaStream Methods
[PreserveSig]
new int GetMultiMediaStream(
[MarshalAs(UnmanagedType.Interface)] out IMultiMediaStream ppMultiMediaStream
);
[PreserveSig]
new int GetInformation(
out Guid pPurposeId,
out StreamType pType
);
[PreserveSig]
new int SetSameFormat(
[In, MarshalAs(UnmanagedType.Interface)] IMediaStream pStreamThatHasDesiredFormat,
[In] int dwFlags
);
[PreserveSig]
new int AllocateSample(
[In] int dwFlags,
[MarshalAs(UnmanagedType.Interface)] out IStreamSample ppSample
);
[PreserveSig]
new int CreateSharedSample(
[In, MarshalAs(UnmanagedType.Interface)] IStreamSample pExistingSample,
[In] int dwFlags,
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -