3 #include "ISimpleSubPic.h"
4 #include "SubPicQueueImpl.h"
6 //////////////////////////////////////////////////////////////////////////
8 // SimpleSubPicProvider
11 class SimpleSubPicProvider
: public CUnknown
, public ISimpleSubPicProvider
14 SimpleSubPicProvider(int alpha_blt_dst_type
, SIZE spd_size
, RECT video_rect
, HRESULT
* phr
=NULL
);
15 virtual ~SimpleSubPicProvider();
18 STDMETHODIMP
NonDelegatingQueryInterface(REFIID riid
, void** ppv
);
20 bool LookupSubPicEx(REFERENCE_TIME rtNow
, IXySubRenderFrame
** sub_render_frame
);
21 HRESULT
GetSubPicProviderEx(ISubPicProviderEx2
** pSubPicProviderEx
);
22 HRESULT
RenderTo(IXySubRenderFrame
** pSubPic
, REFERENCE_TIME rtStart
, REFERENCE_TIME rtStop
, double fps
, BOOL bIsAnimated
);
23 bool IsSpdColorTypeSupported(int type
);
25 // ISimpleSubPicProvider
27 STDMETHODIMP
SetSubPicProvider(IUnknown
* subpic_provider
);
28 STDMETHODIMP
GetSubPicProvider(IUnknown
** subpic_provider
);
30 STDMETHODIMP
SetFPS(double fps
);
31 STDMETHODIMP
SetTime(REFERENCE_TIME rtNow
);
33 STDMETHODIMP
Invalidate(REFERENCE_TIME rtInvalidate
= -1);
34 STDMETHODIMP_(bool) LookupSubPic(REFERENCE_TIME now
/*[in]*/, ISimpleSubPic
** output_subpic
/*[out]*/);
36 STDMETHODIMP
GetStats(int& nSubPics
, REFERENCE_TIME
& rtNow
, REFERENCE_TIME
& rtStart
, REFERENCE_TIME
& rtStop
);
37 STDMETHODIMP
GetStats(int nSubPic
, REFERENCE_TIME
& rtStart
, REFERENCE_TIME
& rtStop
);
39 CCritSec m_csSubPicProvider
;
40 CComPtr
<ISubPicProviderEx2
> m_pSubPicProviderEx
;
42 CAtlList
<int> m_prefered_colortype
;
44 int m_alpha_blt_dst_type
;
49 REFERENCE_TIME m_rtNow
;
51 CComPtr
<ISubPicExAllocator
> m_pAllocator
;
54 REFERENCE_TIME m_subpic_start
,m_subpic_stop
;
55 CComPtr
<IXySubRenderFrame
> m_pSubPic
;
58 //////////////////////////////////////////////////////////////////////////
60 // SimpleSubPicProvider2
63 class SimpleSubPicProvider2
: public CUnknown
, public ISimpleSubPicProvider
66 SimpleSubPicProvider2(int alpha_blt_dst_type
, SIZE max_size
, SIZE cur_size
, RECT video_rect
, HRESULT
* phr
=NULL
);
67 virtual ~SimpleSubPicProvider2();
70 STDMETHODIMP
NonDelegatingQueryInterface(REFIID riid
, void** ppv
);
72 SimpleSubPicProvider2(const SimpleSubPicProvider2
&);
73 void operator=(const SimpleSubPicProvider2
&)const;
75 // ISimpleSubPicProvider
77 STDMETHODIMP
SetSubPicProvider(IUnknown
* subpic_provider
);
78 STDMETHODIMP
GetSubPicProvider(IUnknown
** subpic_provider
);
80 STDMETHODIMP
SetFPS(double fps
);
81 STDMETHODIMP
SetTime(REFERENCE_TIME rtNow
);
83 STDMETHODIMP
Invalidate(REFERENCE_TIME rtInvalidate
= -1);
84 STDMETHODIMP_(bool) LookupSubPic(REFERENCE_TIME now
/*[in]*/, ISimpleSubPic
** output_subpic
/*[out]*/);
86 STDMETHODIMP
GetStats(int& nSubPics
, REFERENCE_TIME
& rtNow
, REFERENCE_TIME
& rtStart
, REFERENCE_TIME
& rtStop
);
87 STDMETHODIMP
GetStats(int nSubPic
, REFERENCE_TIME
& rtStart
, REFERENCE_TIME
& rtStop
);
90 int m_alpha_blt_dst_type
;
98 ISimpleSubPicProvider
*m_cur_provider
;
99 SimpleSubPicProvider
*m_ex_provider
;
100 CSubPicQueueNoThread
*m_old_provider
;