[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 1428, Wed Apr 14 03:25:41 2004 UTC branches/release-1_3-branch/xvidcore/dshow/src/CXvidDecoder.h revision 2102, Mon Jun 8 19:15:30 2015 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-2012 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.3 2004-04-14 03:25:41 syskin 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"
33  #define XVID_NAME_L             L"XviD MPEG-4 Video Decoder"  #define XVID_NAME_MFT_L L"Xvid MPEG-4 Video Decoder MFT"
34    
35  /* --- fourcc --- */  /* --- fourcc --- */
36    
37  #define FOURCC_XVID     mmioFOURCC('X','V','I','D')  #define FOURCC_XVID     mmioFOURCC('X','V','I','D')
38    #define FOURCC_xvid     mmioFOURCC('x','v','i','d')
39  #define FOURCC_DIVX     mmioFOURCC('D','I','V','X')  #define FOURCC_DIVX     mmioFOURCC('D','I','V','X')
40    #define FOURCC_divx     mmioFOURCC('d','i','v','x')
41  #define FOURCC_DX50     mmioFOURCC('D','X','5','0')  #define FOURCC_DX50     mmioFOURCC('D','X','5','0')
42  #define FOURCC_MP4V     mmioFOURCC('m','p','4','v')  #define FOURCC_dx50     mmioFOURCC('d','x','5','0')
43    #define FOURCC_MP4V     mmioFOURCC('M','P','4','V')
44    #define FOURCC_mp4v     mmioFOURCC('m','p','4','v')
45    #define FOURCC_3IVX     mmioFOURCC('3','I','V','X')
46    #define FOURCC_3ivx     mmioFOURCC('3','i','v','x')
47    #define FOURCC_3IV0     mmioFOURCC('3','I','V','0')
48    #define FOURCC_3iv0     mmioFOURCC('3','i','v','0')
49    #define FOURCC_3IV1     mmioFOURCC('3','I','V','1')
50    #define FOURCC_3iv1     mmioFOURCC('3','i','v','1')
51    #define FOURCC_3IV2     mmioFOURCC('3','I','V','2')
52    #define FOURCC_3iv2     mmioFOURCC('3','i','v','2')
53    #define FOURCC_LMP4     mmioFOURCC('L','M','P','4')
54    #define FOURCC_lmp4     mmioFOURCC('l','m','p','4')
55    #define FOURCC_RMP4     mmioFOURCC('R','M','P','4')
56    #define FOURCC_rmp4     mmioFOURCC('r','m','p','4')
57    #define FOURCC_SMP4     mmioFOURCC('S','M','P','4')
58    #define FOURCC_smp4     mmioFOURCC('s','m','p','4')
59    #define FOURCC_HDX4     mmioFOURCC('H','D','X','4')
60    #define FOURCC_hdx4     mmioFOURCC('h','d','x','4')
61    
62  /* --- media uids --- */  /* --- media uids --- */
63    
# Line 47  Line 67 
67  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);
68  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);
69  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);
70    DEFINE_GUID(CLSID_3IVX,         mmioFOURCC('3','i','v','x'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
71    DEFINE_GUID(CLSID_3IVX_UC,      mmioFOURCC('3','I','V','X'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
72    DEFINE_GUID(CLSID_3IV0,         mmioFOURCC('3','i','v','0'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
73    DEFINE_GUID(CLSID_3IV0_UC,      mmioFOURCC('3','I','V','0'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
74    DEFINE_GUID(CLSID_3IV1,         mmioFOURCC('3','i','v','1'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
75    DEFINE_GUID(CLSID_3IV1_UC,      mmioFOURCC('3','I','V','1'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
76    DEFINE_GUID(CLSID_3IV2,         mmioFOURCC('3','i','v','2'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
77    DEFINE_GUID(CLSID_3IV2_UC,      mmioFOURCC('3','I','V','2'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
78    DEFINE_GUID(CLSID_LMP4,         mmioFOURCC('l','m','p','4'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
79    DEFINE_GUID(CLSID_LMP4_UC,      mmioFOURCC('L','M','P','4'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
80    DEFINE_GUID(CLSID_RMP4,         mmioFOURCC('r','m','p','4'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
81    DEFINE_GUID(CLSID_RMP4_UC,      mmioFOURCC('R','M','P','4'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
82    DEFINE_GUID(CLSID_SMP4,         mmioFOURCC('s','m','p','4'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
83    DEFINE_GUID(CLSID_SMP4_UC,      mmioFOURCC('S','M','P','4'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
84    DEFINE_GUID(CLSID_HDX4,         mmioFOURCC('h','d','x','4'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
85    DEFINE_GUID(CLSID_HDX4_UC,      mmioFOURCC('H','D','X','4'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
86  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);
87    DEFINE_GUID(CLSID_MP4V_UC,              mmioFOURCC('M','P','4','V'), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
88    
89    
90  /* MEDIATYPE_IYUV is not always defined in the directx headers */  /* MEDIATYPE_IYUV is not always defined in the directx headers */
91  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);
92    
93    
94  class CXvidDecoder : public CVideoTransformFilter, public IXvidDecoder, public ISpecifyPropertyPages  class CXvidDecoder :
95            public CVideoTransformFilter,
96            public IXvidDecoder,
97            public ISpecifyPropertyPages
98    #if defined(XVID_USE_MFT)
99        ,public IMFTransform
100    #endif
101  {  {
102    
103  public :  public :
# Line 66  Line 109 
109          CXvidDecoder(LPUNKNOWN punk, HRESULT *phr);          CXvidDecoder(LPUNKNOWN punk, HRESULT *phr);
110          ~CXvidDecoder();          ~CXvidDecoder();
111    
112            HRESULT CompleteConnect(PIN_DIRECTION direction, IPin *pReceivePin);
113            HRESULT BreakConnect(PIN_DIRECTION dir);
114    
115          HRESULT CheckInputType(const CMediaType * mtIn);          HRESULT CheckInputType(const CMediaType * mtIn);
116          HRESULT GetMediaType(int iPos, CMediaType * pmt);          HRESULT GetMediaType(int iPos, CMediaType * pmt);
117          HRESULT SetMediaType(PIN_DIRECTION direction, const CMediaType *pmt);          HRESULT SetMediaType(PIN_DIRECTION direction, const CMediaType *pmt);
# Line 78  Line 124 
124          STDMETHODIMP GetPages(CAUUID * pPages);          STDMETHODIMP GetPages(CAUUID * pPages);
125          STDMETHODIMP FreePages(CAUUID * pPages);          STDMETHODIMP FreePages(CAUUID * pPages);
126    
127      /* IMFTransform */
128    #if defined(XVID_USE_MFT)
129            STDMETHODIMP MFTGetStreamLimits(DWORD *pdwInputMinimum, DWORD *pdwInputMaximum, DWORD *pdwOutputMinimum, DWORD *pdwOutputMaximum);
130            STDMETHODIMP MFTGetStreamCount(DWORD *pcInputStreams, DWORD *pcOutputStreams);
131            STDMETHODIMP MFTGetStreamIDs(DWORD dwInputIDArraySize, DWORD *pdwInputIDs, DWORD dwOutputIDArraySize, DWORD *pdwOutputIDs);
132            STDMETHODIMP MFTGetInputStreamInfo(DWORD dwInputStreamID, MFT_INPUT_STREAM_INFO *pStreamInfo);
133            STDMETHODIMP MFTGetOutputStreamInfo(DWORD dwOutputStreamID, MFT_OUTPUT_STREAM_INFO *pStreamInfo);
134            STDMETHODIMP GetAttributes(IMFAttributes** pAttributes);
135            STDMETHODIMP GetInputStreamAttributes(DWORD dwInputStreamID, IMFAttributes **ppAttributes);
136            STDMETHODIMP GetOutputStreamAttributes(DWORD dwOutputStreamID, IMFAttributes **ppAttributes);
137            STDMETHODIMP MFTDeleteInputStream(DWORD dwStreamID);
138            STDMETHODIMP MFTAddInputStreams(DWORD cStreams, DWORD *adwStreamIDs);
139            STDMETHODIMP MFTGetInputAvailableType(DWORD dwInputStreamID, DWORD dwTypeIndex, IMFMediaType **ppType);
140            STDMETHODIMP MFTGetOutputAvailableType(DWORD dwOutputStreamID, DWORD dwTypeIndex, IMFMediaType **ppType);
141            STDMETHODIMP MFTSetInputType(DWORD dwInputStreamID, IMFMediaType *pType, DWORD dwFlags);
142            STDMETHODIMP MFTSetOutputType(DWORD dwOutputStreamID, IMFMediaType *pType, DWORD dwFlags);
143            STDMETHODIMP MFTGetInputCurrentType(DWORD dwInputStreamID, IMFMediaType **ppType);
144            STDMETHODIMP MFTGetOutputCurrentType(DWORD dwOutputStreamID, IMFMediaType **ppType);
145            STDMETHODIMP MFTGetInputStatus(DWORD dwInputStreamID, DWORD *pdwFlags);
146            STDMETHODIMP MFTGetOutputStatus(DWORD *pdwFlags);
147            STDMETHODIMP MFTSetOutputBounds(LONGLONG hnsLowerBound, LONGLONG hnsUpperBound);
148            STDMETHODIMP MFTProcessEvent(DWORD dwInputStreamID, IMFMediaEvent *pEvent);
149            STDMETHODIMP MFTProcessMessage(MFT_MESSAGE_TYPE eMessage, ULONG_PTR ulParam);
150    
151            STDMETHODIMP MFTProcessInput(DWORD dwInputStreamID, IMFSample *pSample, DWORD dwFlags);
152            STDMETHODIMP MFTProcessOutput(DWORD dwFlags, DWORD cOutputBufferCount, MFT_OUTPUT_DATA_BUFFER *pOutputSamples, DWORD *pdwStatus);
153    #endif  /* XVID_USE_MFT */
154    
155  private :  private :
156    
157          HRESULT ChangeColorspace(GUID subtype, GUID formattype, void * format);          HRESULT ChangeColorspace(GUID subtype, GUID formattype, void * format, int noflip);
158            HRESULT OpenLib();
159          void CloseLib();          void CloseLib();
160    
161          xvid_dec_create_t m_create;          xvid_dec_create_t m_create;
# Line 90  Line 165 
165          int (*xvid_global_func)(void *handle, int opt, void *param1, void *param2);          int (*xvid_global_func)(void *handle, int opt, void *param1, void *param2);
166          int (*xvid_decore_func)(void *handle, int opt, void *param1, void *param2);          int (*xvid_decore_func)(void *handle, int opt, void *param1, void *param2);
167          int ar_x, ar_y;          int ar_x, ar_y;
168            bool forced_ar;
169    
170          int rgb_flip;          int rgb_flip;
171            int out_stride;
172    
173            /* mft stuff */
174    #if defined(XVID_USE_MFT)
175            BOOL HasPendingOutput() const { return m_frame.output.plane[1] != NULL; }
176    
177            HRESULT OnSetInputType(IMFMediaType *pmt);
178            HRESULT OnCheckInputType(IMFMediaType *pmt);
179    
180            HRESULT OnSetOutputType(IMFMediaType *pmt);
181    
182            IMFMediaType *m_pInputType;
183            IMFMediaType *m_pOutputType;
184    
185            CRITICAL_SECTION m_mft_lock;
186            REFERENCE_TIME m_timestamp;
187            REFERENCE_TIME m_timelength;
188    
189            int m_discont;
190    
191            /* Used to construct or interpolate missing timestamps */
192            REFERENCE_TIME m_rtFrame;
193            MFRatio m_frameRate;
194            UINT64 m_duration;
195    #endif
196    
197            HWND MSG_hwnd; /* message handler window */
198  };  };
199    #define WM_ICONMESSAGE (WM_USER + 1)
200    
201    static const int PARS[][2] = {
202            {1, 1},
203            {12, 11},
204            {10, 11},
205            {16, 11},
206            {40, 33},
207            {0, 0},
208    };
209    
210  #endif /* _FILTER_H_ */  #endif /* _FILTER_H_ */

Legend:
Removed from v.1428  
changed lines
  Added in v.2102

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