PlusLib  2.9.0
Software library for tracked ultrasound image acquisition, calibration, and processing.
vtkPlusMmfVideoSource.h
Go to the documentation of this file.
1 /*=Plus=header=begin======================================================
2  Program: Plus
3  Copyright (c) Laboratory for Percutaneous Surgery. All rights reserved.
4  See License.txt for details.
5 =========================================================Plus=header=end*/
6 
7 /*=========================================================================
8 The following copyright notice is applicable to parts of this file:
9 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
10 All rights reserved.
11 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
12 Authors include: Danielle Pace
13 (Robarts Research Institute and The University of Western Ontario)
14 =========================================================================*/
15 
16 #ifndef __vtkPlusMmfVideoSource_h
17 #define __vtkPlusMmfVideoSource_h
18 
19 // Local includes
20 #include "vtkPlusDataCollectionExport.h"
21 #include "vtkPlusDevice.h"
22 #include "vtkIGSIORecursiveCriticalSection.h"
23 
24 // PlusDataCollection includes
26 
27 // VTK includes
28 #include <vtkSmartPointer.h>
29 
30 class MmfVideoSourceReader;
31 
41 class vtkPlusDataCollectionExport vtkPlusMmfVideoSource : public vtkPlusDevice
42 {
43  friend class MmfVideoSourceReader;
44 
45  struct VideoFormat
46  {
47  unsigned int DeviceId;
48  unsigned int StreamIndex;
49  FrameSizeType FrameSize;
50  std::wstring PixelFormatName; // e.g., YUY2
51  };
52 
53 public:
54  static vtkPlusMmfVideoSource* New();
56  virtual void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
57 
58  virtual void SetRequestedDeviceId(unsigned int deviceId);
59  virtual void SetRequestedVideoFormat(const std::wstring& pixelFormatName);
60  virtual void SetRequestedStreamIndex(unsigned int streamIndex);
61  virtual void SetRequestedFrameSize(const FrameSizeType& frameSize);
62 
63  std::wstring GetRequestedDeviceName();
64  std::wstring GetActiveDeviceName();
65  void GetListOfCaptureVideoFormats(std::vector<std::wstring>& videoModes, unsigned int deviceId);
66  void LogListOfCaptureVideoFormats(unsigned int deviceId);
67  void GetListOfCaptureDevices(std::vector<std::wstring>& deviceNames);
68  void LogListOfCaptureDevices();
69 
70  virtual PlusStatus ReadConfiguration(vtkXMLDataElement* xmlElement);
71  virtual PlusStatus WriteConfiguration(vtkXMLDataElement* xmlElement);
72 
74  virtual PlusStatus NotifyConfigured();
75 
76  virtual bool IsTracker() const { return false; }
77 
83  virtual PlusStatus SetNewCameraControlParameters(const vtkPlusCameraControlParameters& newCameraControlParameters);
84  vtkGetObjectMacro(CameraControlParameters, vtkPlusCameraControlParameters);
85 
86 protected:
91 
93  virtual PlusStatus InternalConnect();
94 
97 
100 
103 
104  PlusStatus UpdateFrameSize();
105 
106  PlusStatus AddFrame(unsigned char* bufferData, DWORD bufferSize);
107 
108  std::wstring GetCaptureDeviceName(unsigned int deviceId);
109 
111  virtual PlusStatus InternalApplyCameraControlParameterChange();
112 
114 
115  vtkSmartPointer<vtkIGSIORecursiveCriticalSection> Mutex;
116  igsioVideoFrame UncompressedVideoFrame;
117  VideoFormat RequestedVideoFormat;
118  VideoFormat ActiveVideoFormat;
119 
120  vtkSmartPointer<vtkPlusCameraControlParameters> CameraControlParameters;
121 
122  MmfVideoSourceReader* MmfSourceReader;
123 private:
124  vtkPlusMmfVideoSource(const vtkPlusMmfVideoSource&); // Not implemented.
125  void operator=(const vtkPlusMmfVideoSource&); // Not implemented.
126 };
127 
128 #endif
virtual void PrintSelf(ostream &os, vtkIndent indent) VTK_OVERRIDE
virtual PlusStatus InternalStopRecording()
Abstract interface for tracker and video devices.
Definition: vtkPlusDevice.h:60
vtkSmartPointer< vtkIGSIORecursiveCriticalSection > Mutex
virtual bool IsTracker() const
virtual PlusStatus InternalConnect()
igsioStatus PlusStatus
Definition: PlusCommon.h:40
This class is used to store a configuration of the imaging parameters of an Microsoft Media Foundatio...
#define VTK_OVERRIDE
Definition: PlusCommon.h:49
virtual PlusStatus ReadConfiguration(vtkXMLDataElement *)
unsigned long DWORD
Definition: ATC3DGm.h:451
virtual PlusStatus WriteConfiguration(vtkXMLDataElement *)
virtual PlusStatus InternalStartRecording()
igsioVideoFrame UncompressedVideoFrame
virtual PlusStatus NotifyConfigured()
virtual PlusStatus InternalDisconnect()
Microsoft media foundation video digitizer.
MmfVideoSourceReader * MmfSourceReader
vtkSmartPointer< vtkPlusCameraControlParameters > CameraControlParameters
static vtkPlusDevice * New()