📄 isamplegrabber.cs
字号:
namespace dshow.Core
{
using System;
using System.Runtime.InteropServices;
// ISampleGrabber interface
//
// This interface provides methods for retrieving individual
// media samples as they move through the filter graph
//
[ComImport,
Guid("6B652FFF-11FE-4FCE-92AD-0266B5D7C78F"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface ISampleGrabber
{
// Specifies whether the filter should stop the graph
// after receiving one sample
[PreserveSig]
int SetOneShot(
[In, MarshalAs(UnmanagedType.Bool)] bool OneShot);
// Specifies the media type for the connection on
// the Sample Grabber's input pin
[PreserveSig]
int SetMediaType(
[In, MarshalAs(UnmanagedType.LPStruct)] AMMediaType pmt);
// Retrieves the media type for the connection on
// the Sample Grabber's input pin
[PreserveSig]
int GetConnectedMediaType(
[Out, MarshalAs(UnmanagedType.LPStruct)] AMMediaType pmt);
// Specifies whether to copy sample data into a buffer
// as it goes through the filter
[PreserveSig]
int SetBufferSamples(
[In, MarshalAs(UnmanagedType.Bool)] bool BufferThem);
// Retrieves a copy of the sample that
// the filter received most recently
[PreserveSig]
int GetCurrentBuffer(
ref int pBufferSize,
IntPtr pBuffer);
//
[PreserveSig]
int GetCurrentSample(
IntPtr ppSample);
// Specifies a callback method to call on incoming samples
[PreserveSig]
int SetCallback(
ISampleGrabberCB pCallback,
int WhichMethodToCallback);
}
// ISampleGrabberCB interface
//
// This interface provides callback methods for the
// ISampleGrabber::SetCallback method
//
[ComImport,
Guid("0579154A-2B53-4994-B0D0-E773148EFF85"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface ISampleGrabberCB
{
// Callback method that receives a pointer to the media sample
[PreserveSig]
// int SampleCB(
// double SampleTime,
// IMediaSample pSample);
int SampleCB(
double SampleTime,
IntPtr pSample);
// Callback method that receives a pointer to the sample buffer
[PreserveSig]
int BufferCB(
double SampleTime,
IntPtr pBuffer,
int BufferLen);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -