// MainFrm.h : interface of the CMainFrame class // ///////////////////////////////////////////////////////////////////////////// #if !defined(AFX_MAINFRM_H__CB833386_2218_497C_B09D_BE60D35F794E__INCLUDED_) #define AFX_MAINFRM_H__CB833386_2218_497C_B09D_BE60D35F794E__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "MyTB.h" class CDicomVidView; enum DICOMVID_IMAGE_COMPRESSION { DICOMVID_IMAGE_COMPRESSION_NONE = 0 , DICOMVID_IMAGE_COMPRESSION_JPEGLOSSLESS , DICOMVID_IMAGE_COMPRESSION_JPEGLOSSY , DICOMVID_IMAGE_COMPRESSION_J2KLOSSLESS , DICOMVID_IMAGE_COMPRESSION_J2KLOSSY , DICOMVID_IMAGE_COMPRESSION_MPEG2 , }; enum DICOM_WRITER_FILTER_TARGET_FORMAT { DICOM_WRITER_FILTER_TARGET_FORMAT_CUSTOM,//Uncompressed DICOM, JPEG and J2K lossy and lossless DICOM_WRITER_FILTER_TARGET_FORMAT_MPEG2//MPEG-2 compressed DICOM }; #define CANT_FIND_LEAD_DICOM_FILE_WRITER_ERROR _T("Could not instantiate the \"LEAD DICOM File Writer\" direct show filter.\nPlease make sure that the \"LEADTOOLS Multimedia Toolkit\" is properly installed on this machine.") #define CANT_INSTANTIATE_CAPTURE_LIBRARY_ERROR _T("Could not instantiate the capture library.\nPlease make sure that the \"LEADTOOLS Multimedia Toolkit\" is properly installed on this machine.") /* The names of the LEAD MPEG-2 Encoders. You obtain these with the DirectShow Filter List utility installed with the Multimedia toolkit. */ #define LEAD_MPEG2_PROFESSIONAL L"@device:sw:{33D9A760-90C8-11D0-BD43-00A0C911CE86}\\LEAD MPEG2 Professional Encoder" #define LEAD_MPEG2_STANDARD L"@device:sw:{33D9A760-90C8-11D0-BD43-00A0C911CE86}\\LEAD MPEG2 Encoder" #define LEAD_MPEG_AUDIO_ENCODER L"@device:sw:{33D9A761-90C8-11D0-BD43-00A0C911CE86}\\LEAD MPEG Audio Encoder" #define Q_FACTOR_MIN 2 #define Q_FACTOR_MAX 255 WINOLEAPI CreateObjrefMoniker(IN LPUNKNOWN punk, OUT LPMONIKER FAR * ppmk); class CMainFrame : public CFrameWnd { protected: // create from serialization only CMainFrame(); DECLARE_DYNCREATE(CMainFrame) // Attributes protected: CSplitterWnd m_wndSplitter; public: IltmmCapture* m_capture; IUnknown* m_pDICOMFilter; ILTDicWrtDisp* m_DicomWriter; void BuildDeviceMenu(); void BuildCompressionTypeMenu(); HRESULT SetCompression(DICOMVID_IMAGE_COMPRESSION ImageCompression); DICOMVID_IMAGE_COMPRESSION GetCompression(); void SetQFactor(int nQFactor); int GetQFactor(); void ShowMPEG2OptionsDlg(); void ShowMPEG2AudioOptionsDlg(); // Operations public: L_BOOL IsCapturing(); void SetDicomDS(LDicomDS *pDS); // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CMainFrame) public: virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext); virtual BOOL PreCreateWindow(CREATESTRUCT& cs); //}}AFX_VIRTUAL // Implementation public: virtual ~CMainFrame(); CDicomVidView* GetRightPane(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif protected: // control bar embedded members CStatusBar m_wndStatusBar; CMyToolbar m_wndToolBar; DICOMVID_IMAGE_COMPRESSION m_CompressionType; int m_nQFactor; // Generated message map functions protected: //{{AFX_MSG(CMainFrame) afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnDestroy(); afx_msg void OnOptionsCaptureproperties(); afx_msg void OnUpdateOptionsCaptureproperties(CCmdUI* pCmdUI); afx_msg void OnCaptureStartcaptureintodicomfile(); afx_msg void OnUpdateCaptureStartcaptureintodicomfile(CCmdUI* pCmdUI); afx_msg void OnCaptureStopcapture(); afx_msg void OnUpdateCaptureStopcapture(CCmdUI* pCmdUI); afx_msg void OnOptionsImagecompressionJpeglossless(); afx_msg void OnUpdateOptionsImagecompressionJpeglossless(CCmdUI* pCmdUI); afx_msg void OnOptionsImagecompressionJpeglossy(); afx_msg void OnUpdateOptionsImagecompressionJpeglossy(CCmdUI* pCmdUI); afx_msg void OnOptionsImagecompressionNone(); afx_msg void OnUpdateOptionsImagecompressionNone(CCmdUI* pCmdUI); afx_msg void OnUpdateAppExit(CCmdUI* pCmdUI); afx_msg void OnOptionsMPEG2Encoder(); afx_msg void OnUpdateOptionsMPEG2Encoder(CCmdUI* pCmdUI); afx_msg void OnCompressionSettings(); afx_msg void OnUpdateCompressionSettings(CCmdUI* pCmdUI); //}}AFX_MSG afx_msg void OnVideoDevice( UINT nID ); afx_msg void OnUpdateVideoDevice(CCmdUI* pCmdUI); afx_msg void OnUpdateAudioDevice(CCmdUI* pCmdUI); afx_msg void OnAudioDevice( UINT nID ); afx_msg void OnCompressionType( UINT nID ); afx_msg void OnUpdateCompressionType(CCmdUI* pCmdUI); afx_msg void OnUpdateViewStyles(CCmdUI* pCmdUI); afx_msg void OnViewStyle(UINT nCommandID); DECLARE_MESSAGE_MAP() private : // Instantiate capture library and DICOM Writer filter BOOL InitMMCapabilities(); L_BOOL m_bNowPlaying; void StartToolbarPlay(); void StopToolbarPlay(); L_BOOL m_bMMCapabilitiesInitialized; HRESULT CreateReusableFilter(LPCWSTR pszName, IBaseFilter** ppFilter, IMoniker** ppMoniker, LPWSTR pszMonName); HRESULT CreateTargetFormats(); HRESULT SetTargetFormat(DICOM_WRITER_FILTER_TARGET_FORMAT TargetFormat); long GetTargetFormatStreams(long tf); HRESULT SelectMPEG2Compressor(BOOL bSelect); }; ///////////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_MAINFRM_H__CB833386_2218_497C_B09D_BE60D35F794E__INCLUDED_)