summaryrefslogtreecommitdiffstats
path: root/loader/dshow/DS_VideoDecoder.h
diff options
context:
space:
mode:
Diffstat (limited to 'loader/dshow/DS_VideoDecoder.h')
-rw-r--r--loader/dshow/DS_VideoDecoder.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/loader/dshow/DS_VideoDecoder.h b/loader/dshow/DS_VideoDecoder.h
new file mode 100644
index 0000000000..6acd820162
--- /dev/null
+++ b/loader/dshow/DS_VideoDecoder.h
@@ -0,0 +1,37 @@
+#ifndef AVIFILE_DS_VIDEODECODER_H
+#define AVIFILE_DS_VIDEODECODER_H
+
+#include <libwin32.h>
+#include <DS_Filter.h>
+
+class DS_VideoDecoder: public IVideoDecoder, public IRtConfig
+{
+public:
+ DS_VideoDecoder(const CodecInfo& info, const BITMAPINFOHEADER& format, int flip);
+ ~DS_VideoDecoder();
+ int SetDestFmt(int bits = 24, fourcc_t csp = 0);
+ CAPS GetCapabilities() const {return m_Caps;}
+ int DecodeInternal(void* src, size_t size, int is_keyframe, CImage* pImage);
+ void StartInternal();
+ void StopInternal();
+ //void Restart();
+ int SetDirection(int d)
+ {
+ m_obh.biHeight = d ? m_bh->biHeight : -m_bh->biHeight;
+ m_sVhdr2->bmiHeader.biHeight = m_obh.biHeight;
+ return 0;
+ }
+ // IRtConfig interface
+ virtual HRESULT GetValue(const char*, int&);
+ virtual HRESULT SetValue(const char*, int);
+protected:
+ DS_Filter* m_pDS_Filter;
+ AM_MEDIA_TYPE m_sOurType, m_sDestType;
+ VIDEOINFOHEADER* m_sVhdr;
+ VIDEOINFOHEADER* m_sVhdr2;
+ CAPS m_Caps; // capabilities of DirectShow decoder
+ int m_iLastQuality; // remember last quality as integer
+ bool m_bIsDivX; // for speed
+};
+
+#endif /* AVIFILE_DS_VIDEODECODER_H */