QEdit.cs
Upload User: wuming6209
Upload Date: 2013-06-06
Package Size: 161k
Code Size: 3k
Category:

Video Capture

Development Platform:

Visual C++

  1. /******************************************************
  2.                   DirectShow .NET
  3.       netmaster@swissonline.ch
  4. *******************************************************/
  5. // QEdit
  6. // Extended streaming interfaces, ported from qedit.idl
  7. using System;
  8. using System.Runtime.InteropServices;
  9. namespace DShowNET
  10. {
  11. [ComVisible(true), ComImport,
  12. Guid("6B652FFF-11FE-4fce-92AD-0266B5D7C78F"),
  13. InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
  14. public interface ISampleGrabber
  15. {
  16. [PreserveSig]
  17. int SetOneShot(
  18. [In, MarshalAs(UnmanagedType.Bool)] bool OneShot );
  19. [PreserveSig]
  20. int SetMediaType(
  21. [In, MarshalAs(UnmanagedType.LPStruct)] AMMediaType pmt );
  22. [PreserveSig]
  23. int GetConnectedMediaType(
  24. [Out, MarshalAs(UnmanagedType.LPStruct)] AMMediaType pmt );
  25. [PreserveSig]
  26. int SetBufferSamples(
  27. [In, MarshalAs(UnmanagedType.Bool)] bool BufferThem );
  28. [PreserveSig]
  29. int GetCurrentBuffer( ref int pBufferSize, IntPtr pBuffer );
  30. [PreserveSig]
  31. int GetCurrentSample( IntPtr ppSample );
  32. [PreserveSig]
  33. int SetCallback( ISampleGrabberCB pCallback, int WhichMethodToCallback );
  34. }
  35. [ComVisible(true), ComImport,
  36. Guid("0579154A-2B53-4994-B0D0-E773148EFF85"),
  37. InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
  38. public interface ISampleGrabberCB
  39. {
  40. [PreserveSig]
  41. int SampleCB( double SampleTime, IMediaSample pSample );
  42. [PreserveSig]
  43. int BufferCB( double SampleTime, IntPtr pBuffer, int BufferLen );
  44. }
  45. [StructLayout(LayoutKind.Sequential), ComVisible(false)]
  46. public class VideoInfoHeader // VIDEOINFOHEADER
  47. {
  48. public DsRECT SrcRect;
  49. public DsRECT TargetRect;
  50. public int BitRate;
  51. public int BitErrorRate;
  52. public long AvgTimePerFrame;
  53. public BitmapInfoHeader BmiHeader;
  54. }
  55. [StructLayout(LayoutKind.Sequential), ComVisible(false)]
  56. public class VideoInfoHeader2 // VIDEOINFOHEADER2
  57. {
  58. public DsRECT SrcRect;
  59. public DsRECT TargetRect;
  60. public int BitRate;
  61. public int BitErrorRate;
  62. public long AvgTimePerFrame;
  63. public int InterlaceFlags;
  64. public int CopyProtectFlags;
  65. public int PictAspectRatioX; 
  66. public int PictAspectRatioY; 
  67. public int ControlFlags;
  68. public int              Reserved2;
  69. public BitmapInfoHeader BmiHeader;
  70. };
  71. [StructLayout(LayoutKind.Sequential), ComVisible(false)]
  72. public class WaveFormatEx
  73. {
  74. public short wFormatTag;
  75. public short nChannels;
  76. public int nSamplesPerSec;
  77. public int nAvgBytesPerSec;
  78. public short nBlockAlign;
  79. public short wBitsPerSample;
  80. public short cbSize;
  81. }
  82. } // namespace DShowNET