[svn] / branches / release-1_3-branch / xvidcore / dshow / src / CXvidDecoder.h Repository:
ViewVC logotype

Diff of /branches/release-1_3-branch/xvidcore/dshow/src/CXvidDecoder.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/xvidcore/dshow/src/CXvidDecoder.h revision 1802, Wed Nov 26 10:11:31 2008 UTC branches/release-1_3-branch/xvidcore/dshow/src/CXvidDecoder.h revision 1985, Wed May 18 09:02:35 2011 UTC
# Line 3  Line 3 
3   *  XVID MPEG-4 VIDEO CODEC   *  XVID MPEG-4 VIDEO CODEC
4   *  - XviD Decoder part of the DShow Filter  -   *  - XviD Decoder part of the DShow Filter  -
5   *   *
6   *  Copyright(C) 2002-2003 Peter Ross <pross@xvid.org>   *  Copyright(C) 2002-2010 Peter Ross <pross@xvid.org>
7   *   *
8   *  This program is free software ; you can redistribute it and/or modify   *  This program is free software ; you can redistribute it and/or modify
9   *  it under the terms of the GNU General Public License as published by   *  it under the terms of the GNU General Public License as published by
# Line 19  Line 19 
19   *  along with this program ; if not, write to the Free Software   *  along with this program ; if not, write to the Free Software
20   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
21   *   *
22   * $Id: CXvidDecoder.h,v 1.7 2008-11-26 10:11:31 Isibaar Exp $   * $Id$
23   *   *
24   ****************************************************************************/   ****************************************************************************/
25    
# Line 29  Line 29 
29  #include <xvid.h>  #include <xvid.h>
30  #include "IXvidDecoder.h"  #include "IXvidDecoder.h"
31    
   
32  #define XVID_NAME_L             L"Xvid MPEG-4 Video Decoder"  #define XVID_NAME_L             L"Xvid MPEG-4 Video Decoder"
33    
34  /* --- fourcc --- */  /* --- fourcc --- */
35    
36  #define FOURCC_XVID     mmioFOURCC('X','V','I','D')  #define FOURCC_XVID     mmioFOURCC('X','V','I','D')
37    #define FOURCC_xvid     mmioFOURCC('x','v','i','d')
38  #define FOURCC_DIVX     mmioFOURCC('D','I','V','X')  #define FOURCC_DIVX     mmioFOURCC('D','I','V','X')
39    #define FOURCC_divx     mmioFOURCC('d','i','v','x')
40  #define FOURCC_DX50     mmioFOURCC('D','X','5','0')  #define FOURCC_DX50     mmioFOURCC('D','X','5','0')
41    #define FOURCC_dx50     mmioFOURCC('d','x','5','0')
42  #define FOURCC_MP4V     mmioFOURCC('M','P','4','V')  #define FOURCC_MP4V     mmioFOURCC('M','P','4','V')
43  #define FOURCC_mp4v     mmioFOURCC('m','p','4','v')  #define FOURCC_mp4v     mmioFOURCC('m','p','4','v')
44    #define FOURCC_3IVX     mmioFOURCC('3','I','V','X')
45    #define FOURCC_3ivx     mmioFOURCC('3','i','v','x')
46    #define FOURCC_3IV0     mmioFOURCC('3','I','V','0')
47    #define FOURCC_3iv0     mmioFOURCC('3','i','v','0')
48    #define FOURCC_3IV1     mmioFOURCC('3','I','V','1')
49    #define FOURCC_3iv1     mmioFOURCC('3','i','v','1')
50    #define FOURCC_3IV2     mmioFOURCC('3','I','V','2')
51    #define FOURCC_3iv2     mmioFOURCC('3','i','v','2')
52    #define FOURCC_LMP4     mmioFOURCC('L','M','P','4')
53    #define FOURCC_lmp4     mmioFOURCC('l','m','p','4')
54    #define FOURCC_RMP4     mmioFOURCC('R','M','P','4')
55    #define FOURCC_rmp4     mmioFOURCC('r','m','p','4')
56    #define FOURCC_SMP4     mmioFOURCC('S','M','P','4')
57    #define FOURCC_smp4     mmioFOURCC('s','m','p','4')
58    #define FOURCC_HDX4     mmioFOURCC('H','D','X','4')
59    #define FOURCC_hdx4     mmioFOURCC('h','d','x','4')
60    
61  /* --- media uids --- */  /* --- media uids --- */
62    
# Line 48  Line 66 
66  DEFINE_GUID(CLSID_DIVX_UC,      mmioFOURCC('D','I','V','X'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);  DEFINE_GUID(CLSID_DIVX_UC,      mmioFOURCC('D','I','V','X'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
67  DEFINE_GUID(CLSID_DX50,         mmioFOURCC('d','x','5','0'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);  DEFINE_GUID(CLSID_DX50,         mmioFOURCC('d','x','5','0'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
68  DEFINE_GUID(CLSID_DX50_UC,      mmioFOURCC('D','X','5','0'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);  DEFINE_GUID(CLSID_DX50_UC,      mmioFOURCC('D','X','5','0'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
69    DEFINE_GUID(CLSID_3IVX,         mmioFOURCC('3','i','v','x'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
70    DEFINE_GUID(CLSID_3IVX_UC,      mmioFOURCC('3','I','V','X'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
71    DEFINE_GUID(CLSID_3IV0,         mmioFOURCC('3','i','v','0'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
72    DEFINE_GUID(CLSID_3IV0_UC,      mmioFOURCC('3','I','V','0'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
73    DEFINE_GUID(CLSID_3IV1,         mmioFOURCC('3','i','v','1'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
74    DEFINE_GUID(CLSID_3IV1_UC,      mmioFOURCC('3','I','V','1'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
75    DEFINE_GUID(CLSID_3IV2,         mmioFOURCC('3','i','v','2'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
76    DEFINE_GUID(CLSID_3IV2_UC,      mmioFOURCC('3','I','V','2'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
77    DEFINE_GUID(CLSID_LMP4,         mmioFOURCC('l','m','p','4'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
78    DEFINE_GUID(CLSID_LMP4_UC,      mmioFOURCC('L','M','P','4'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
79    DEFINE_GUID(CLSID_RMP4,         mmioFOURCC('r','m','p','4'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
80    DEFINE_GUID(CLSID_RMP4_UC,      mmioFOURCC('R','M','P','4'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
81    DEFINE_GUID(CLSID_SMP4,         mmioFOURCC('s','m','p','4'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
82    DEFINE_GUID(CLSID_SMP4_UC,      mmioFOURCC('S','M','P','4'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
83    DEFINE_GUID(CLSID_HDX4,         mmioFOURCC('h','d','x','4'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
84    DEFINE_GUID(CLSID_HDX4_UC,      mmioFOURCC('H','D','X','4'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
85  DEFINE_GUID(CLSID_MP4V,         mmioFOURCC('m','p','4','v'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);  DEFINE_GUID(CLSID_MP4V,         mmioFOURCC('m','p','4','v'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
86  DEFINE_GUID(CLSID_MP4V_UC,              mmioFOURCC('M','P','4','V'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);  DEFINE_GUID(CLSID_MP4V_UC,              mmioFOURCC('M','P','4','V'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
87    
# Line 56  Line 90 
90  DEFINE_GUID(CLSID_MEDIASUBTYPE_IYUV, 0x56555949, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);  DEFINE_GUID(CLSID_MEDIASUBTYPE_IYUV, 0x56555949, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
91    
92    
93  class CXvidDecoder : public CVideoTransformFilter, public IXvidDecoder, public ISpecifyPropertyPages  class CXvidDecoder :
94            public CVideoTransformFilter,
95            public IXvidDecoder,
96            public ISpecifyPropertyPages
97    #if defined(XVID_USE_MFT)
98        ,public IMFTransform
99    #endif
100  {  {
101    
102  public :  public :
# Line 68  Line 108 
108          CXvidDecoder(LPUNKNOWN punk, HRESULT *phr);          CXvidDecoder(LPUNKNOWN punk, HRESULT *phr);
109          ~CXvidDecoder();          ~CXvidDecoder();
110    
111            HRESULT CompleteConnect(PIN_DIRECTION direction, IPin *pReceivePin);
112            HRESULT BreakConnect(PIN_DIRECTION dir);
113    
114          HRESULT CheckInputType(const CMediaType * mtIn);          HRESULT CheckInputType(const CMediaType * mtIn);
115          HRESULT GetMediaType(int iPos, CMediaType * pmt);          HRESULT GetMediaType(int iPos, CMediaType * pmt);
116          HRESULT SetMediaType(PIN_DIRECTION direction, const CMediaType *pmt);          HRESULT SetMediaType(PIN_DIRECTION direction, const CMediaType *pmt);
# Line 80  Line 123 
123          STDMETHODIMP GetPages(CAUUID * pPages);          STDMETHODIMP GetPages(CAUUID * pPages);
124          STDMETHODIMP FreePages(CAUUID * pPages);          STDMETHODIMP FreePages(CAUUID * pPages);
125    
126      /* IMFTransform */
127    #if defined(XVID_USE_MFT)
128            STDMETHODIMP MFTGetStreamLimits(DWORD *pdwInputMinimum, DWORD *pdwInputMaximum, DWORD *pdwOutputMinimum, DWORD *pdwOutputMaximum);
129            STDMETHODIMP MFTGetStreamCount(DWORD *pcInputStreams, DWORD *pcOutputStreams);
130            STDMETHODIMP MFTGetStreamIDs(DWORD dwInputIDArraySize, DWORD *pdwInputIDs, DWORD dwOutputIDArraySize, DWORD *pdwOutputIDs);
131            STDMETHODIMP MFTGetInputStreamInfo(DWORD dwInputStreamID, MFT_INPUT_STREAM_INFO *pStreamInfo);
132            STDMETHODIMP MFTGetOutputStreamInfo(DWORD dwOutputStreamID, MFT_OUTPUT_STREAM_INFO *pStreamInfo);
133            STDMETHODIMP GetAttributes(IMFAttributes** pAttributes);
134            STDMETHODIMP GetInputStreamAttributes(DWORD dwInputStreamID, IMFAttributes **ppAttributes);
135            STDMETHODIMP GetOutputStreamAttributes(DWORD dwOutputStreamID, IMFAttributes **ppAttributes);
136            STDMETHODIMP MFTDeleteInputStream(DWORD dwStreamID);
137            STDMETHODIMP MFTAddInputStreams(DWORD cStreams, DWORD *adwStreamIDs);
138            STDMETHODIMP MFTGetInputAvailableType(DWORD dwInputStreamID, DWORD dwTypeIndex, IMFMediaType **ppType);
139            STDMETHODIMP MFTGetOutputAvailableType(DWORD dwOutputStreamID, DWORD dwTypeIndex, IMFMediaType **ppType);
140            STDMETHODIMP MFTSetInputType(DWORD dwInputStreamID, IMFMediaType *pType, DWORD dwFlags);
141            STDMETHODIMP MFTSetOutputType(DWORD dwOutputStreamID, IMFMediaType *pType, DWORD dwFlags);
142            STDMETHODIMP MFTGetInputCurrentType(DWORD dwInputStreamID, IMFMediaType **ppType);
143            STDMETHODIMP MFTGetOutputCurrentType(DWORD dwOutputStreamID, IMFMediaType **ppType);
144            STDMETHODIMP MFTGetInputStatus(DWORD dwInputStreamID, DWORD *pdwFlags);
145            STDMETHODIMP MFTGetOutputStatus(DWORD *pdwFlags);
146            STDMETHODIMP MFTSetOutputBounds(LONGLONG hnsLowerBound, LONGLONG hnsUpperBound);
147            STDMETHODIMP MFTProcessEvent(DWORD dwInputStreamID, IMFMediaEvent *pEvent);
148            STDMETHODIMP MFTProcessMessage(MFT_MESSAGE_TYPE eMessage, ULONG_PTR ulParam);
149    
150            STDMETHODIMP MFTProcessInput(DWORD dwInputStreamID, IMFSample *pSample, DWORD dwFlags);
151            STDMETHODIMP MFTProcessOutput(DWORD dwFlags, DWORD cOutputBufferCount, MFT_OUTPUT_DATA_BUFFER *pOutputSamples, DWORD *pdwStatus);
152    #endif  /* XVID_USE_MFT */
153    
154  private :  private :
155    
156          HRESULT ChangeColorspace(GUID subtype, GUID formattype, void * format);          HRESULT ChangeColorspace(GUID subtype, GUID formattype, void * format, int noflip);
157          HRESULT OpenLib();          HRESULT OpenLib();
158          void CloseLib();          void CloseLib();
159    
# Line 96  Line 167 
167          bool forced_ar;          bool forced_ar;
168    
169          int rgb_flip;          int rgb_flip;
170            int out_stride;
171    
172            /* mft stuff */
173    #if defined(XVID_USE_MFT)
174            BOOL HasPendingOutput() const { return m_frame.output.plane[1] != NULL; }
175    
176            HRESULT OnSetInputType(IMFMediaType *pmt);
177            HRESULT OnCheckInputType(IMFMediaType *pmt);
178    
179            HRESULT OnSetOutputType(IMFMediaType *pmt);
180    
181            IMFMediaType *m_pInputType;
182            IMFMediaType *m_pOutputType;
183    
184            CRITICAL_SECTION m_mft_lock;
185            REFERENCE_TIME m_timestamp;
186            REFERENCE_TIME m_timelength;
187    
188            int m_discont;
189    
190            /* Used to construct or interpolate missing timestamps */
191            REFERENCE_TIME m_rtFrame;
192            MFRatio m_frameRate;
193            UINT64 m_duration;
194    #endif
195    
196    #ifdef XVID_USE_TRAYICON
197            HWND MSG_hwnd; /* message handler window */
198    };
199    #define WM_ICONMESSAGE (WM_USER + 1)
200    #else
201  };  };
202    #endif
203    
204  static const int PARS[][2] = {  static const int PARS[][2] = {
205          {1, 1},          {1, 1},
# Line 108  Line 210 
210          {0, 0},          {0, 0},
211  };  };
212    
   
213  #endif /* _FILTER_H_ */  #endif /* _FILTER_H_ */

Legend:
Removed from v.1802  
changed lines
  Added in v.1985

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4