Ejemplo n.º 1
0
 public static void FreeAMMediaType(AMMediaType mediaType)
 {
     if (mediaType == null) return;
     if (mediaType.formatSize != 0)
     {
         Marshal.FreeCoTaskMem(mediaType.formatPtr);
         mediaType.formatSize = 0;
         mediaType.formatPtr = IntPtr.Zero;
     }
     if (mediaType.unkPtr == IntPtr.Zero) return;
     Marshal.Release(mediaType.unkPtr);
     mediaType.unkPtr = IntPtr.Zero;
 }
Ejemplo n.º 2
0
        private void SaveSizeInfo(ISampleGrabber sampGrabber)
        {
            var media = new AMMediaType();
            var hr = sampGrabber.GetConnectedMediaType(media);
            DsError.ThrowExceptionForHR(hr);

            if ((media.formatType != FormatType.VideoInfo) || (media.formatPtr == IntPtr.Zero))
                throw new NotSupportedException("Unknown Grabber Media Format");

            var videoInfoHeader = (VideoInfoHeader)Marshal.PtrToStructure(media.formatPtr, typeof(VideoInfoHeader));
            Width = videoInfoHeader.BmiHeader.Width;
            Height = videoInfoHeader.BmiHeader.Height;
            Stride = Width * (videoInfoHeader.BmiHeader.BitCount / 8);

            DsUtils.FreeAMMediaType(media);
        }
Ejemplo n.º 3
0
        private void ConfigureSampleGrabber(ISampleGrabber sampGrabber)
        {
            var media = new AMMediaType
                            {
                                majorType = MediaType.Video,
                                subType = MediaSubType.RGB24,
                                formatType = FormatType.VideoInfo
                            };
            var hr = sampGrabber.SetMediaType(media);
            DsError.ThrowExceptionForHR(hr);

            DsUtils.FreeAMMediaType(media);

            hr = sampGrabber.SetCallback(this, 1);
            DsError.ThrowExceptionForHR(hr);
        }