00001 /* 00002 Free Download Manager Copyright (c) 2003-2007 FreeDownloadManager.ORG 00003 Open Download Manager Copyright (c) 2008-2010 OpenDownloadManager.ORG 00004 */ 00005 00006 class CVideoTransformFilter : public CTransformFilter 00007 { 00008 public: 00009 00010 CVideoTransformFilter(TCHAR *, LPUNKNOWN, REFCLSID clsid); 00011 ~CVideoTransformFilter(); 00012 HRESULT EndFlush(); 00013 00014 00015 00016 00017 00018 00019 00020 00021 00022 00023 00024 00025 00026 00027 00028 00029 00030 00031 00032 00033 00034 00035 00036 00037 00038 00039 00040 00041 00042 00043 00044 #ifdef PERF 00045 00046 00047 00048 virtual void RegisterPerfId() { 00049 m_idSkip = MSR_REGISTER("Video Transform Skip frame"); 00050 m_idFrameType = MSR_REGISTER("Video transform frame type"); 00051 m_idLate = MSR_REGISTER("Video Transform Lateness"); 00052 m_idTimeTillKey = MSR_REGISTER("Video Transform Estd. time to next key"); 00053 CTransformFilter::RegisterPerfId(); 00054 } 00055 #endif 00056 00057 protected: 00058 00059 00060 00061 00062 00063 00064 00065 00066 00067 00068 00069 00070 00071 00072 00073 00074 00075 00076 00077 00078 00079 00080 00081 00082 00083 00084 00085 00086 00087 00088 00089 00090 00091 00092 00093 00094 00095 int m_nKeyFramePeriod; 00096 00097 00098 int m_nFramesSinceKeyFrame; 00099 00100 00101 BOOL m_bSkipping; 00102 00103 #ifdef PERF 00104 int m_idFrameType; 00105 int m_idSkip; 00106 int m_idLate; 00107 int m_idTimeTillKey; 00108 #endif 00109 00110 virtual HRESULT StartStreaming(); 00111 00112 HRESULT AbortPlayback(HRESULT hr); 00113 00114 HRESULT Receive(IMediaSample *pSample); 00115 00116 HRESULT AlterQuality(Quality q); 00117 00118 BOOL ShouldSkipFrame(IMediaSample * pIn); 00119 00120 int m_itrLate; 00121 00122 int m_tDecodeStart; 00123 int m_itrAvgDecode; 00124 00125 BOOL m_bNoSkip; 00126 00127 00128 00129 00130 BOOL m_bQualityChanged; 00131 00132 00133 00134 int m_nWaitForKey; 00135 };
1.5.6