From 0868305e78da2b0742c2ce349efa041d5622ae21 Mon Sep 17 00:00:00 2001 From: Casimir666 Date: Sat, 24 Jun 2006 21:37:43 +0000 Subject: git-svn-id: https://mpc-hc.svn.sourceforge.net/svnroot/mpc-hc/trunk@14 10f7b99b-c216-0410-bff0-8a66a9350fd8 --- src/apps/mplayerc/QuicktimeGraph.h | 125 +++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 src/apps/mplayerc/QuicktimeGraph.h (limited to 'src/apps/mplayerc/QuicktimeGraph.h') diff --git a/src/apps/mplayerc/QuicktimeGraph.h b/src/apps/mplayerc/QuicktimeGraph.h new file mode 100644 index 000000000..222169c12 --- /dev/null +++ b/src/apps/mplayerc/QuicktimeGraph.h @@ -0,0 +1,125 @@ +/* + * Copyright (C) 2003-2006 Gabest + * http://www.gabest.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ + +#pragma once +#include "BaseGraph.h" +#include "DX7AllocatorPresenter.h" +#include "DX9AllocatorPresenter.h" + +namespace DSObjects +{ + +class CQuicktimeGraph; + +class CQuicktimeWindow : public CPlayerWindow +{ + CDC m_dc; + CBitmap m_bm; + QT::GWorldPtr m_offscreenGWorld; + + CQuicktimeGraph* m_pGraph; + FILTER_STATE m_fs; + UINT m_idEndPoller; + + static QT::OSErr MyMovieDrawingCompleteProc(QT::Movie theMovie, long refCon); + + void ProcessMovieEvent(unsigned int message, unsigned int wParam, long lParam); + +protected: + virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam); + +public: + CQuicktimeWindow(CQuicktimeGraph* pGraph); + + bool OpenMovie(CString fn); + void CloseMovie(); + + void Run(), Pause(), Stop(); + FILTER_STATE GetState(); + + QT::Movie theMovie; + QT::MovieController theMC; + CSize m_size; + +public: + DECLARE_MESSAGE_MAP() + afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); + afx_msg void OnDestroy(); + afx_msg BOOL OnEraseBkgnd(CDC* pDC); + afx_msg void OnTimer(UINT nIDEvent); +}; + +class CQuicktimeGraph : public CBaseGraph, public IVideoFrameStep +{ +protected: + bool m_fQtInitialized; + + CPlayerWindow m_wndWindowFrame; + CQuicktimeWindow m_wndDestFrame; + + CComPtr m_pQTAP; + +public: + CQuicktimeGraph(HWND hParent, HRESULT& hr); + virtual ~CQuicktimeGraph(); + + DECLARE_IUNKNOWN; + STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void** ppv); + +protected: + // IGraphBuilder + STDMETHODIMP RenderFile(LPCWSTR lpcwstrFile, LPCWSTR lpcwstrPlayList); + + // IMediaControl + STDMETHODIMP Run(); + STDMETHODIMP Pause(); + STDMETHODIMP Stop(); + STDMETHODIMP GetState(LONG msTimeout, OAFilterState* pfs); + + // IMediaSeeking + STDMETHODIMP GetDuration(LONGLONG* pDuration); + STDMETHODIMP GetCurrentPosition(LONGLONG* pCurrent); + STDMETHODIMP SetPositions(LONGLONG* pCurrent, DWORD dwCurrentFlags, LONGLONG* pStop, DWORD dwStopFlags); + STDMETHODIMP SetRate(double dRate); + STDMETHODIMP GetRate(double* pdRate); + + // IVideoWindow + STDMETHODIMP SetWindowPosition(long Left, long Top, long Width, long Height); + + // IBasicVideo + STDMETHODIMP SetDestinationPosition(long Left, long Top, long Width, long Height); + STDMETHODIMP GetVideoSize(long* pWidth, long* pHeight); + + // IBasicAudio + STDMETHODIMP put_Volume(long lVolume); + STDMETHODIMP get_Volume(long* plVolume); + + // IVideoFrameStep + STDMETHODIMP Step(DWORD dwFrames, IUnknown* pStepObject); + STDMETHODIMP CanStep(long bMultiple, IUnknown* pStepObject); + STDMETHODIMP CancelStep(); + + // IGraphEngine + STDMETHODIMP_(engine_t) GetEngine(); +}; + +} +using namespace DSObjects; \ No newline at end of file -- cgit v1.2.3