fixed: support for 4:2:2 MPEG2 videos.
[xbmc:xbmc-antiquated.git] / XBMC / xbmc / cores / dvdplayer / DVDCodecs / Video / DVDVideoCodecLibMpeg2.h
1
2 #pragma once
3
4 #include "DVDVideoCodec.h"
5 #include "DllLibMpeg2.h"
6
7 class CDVDVideoCodecLibMpeg2 : public CDVDVideoCodec
8 {
9 public:
10   CDVDVideoCodecLibMpeg2();
11   virtual ~CDVDVideoCodecLibMpeg2();
12   virtual bool Open(CDVDStreamInfo &hints, CDVDCodecOptions &options);
13   virtual void Dispose();
14   virtual int Decode(BYTE* pData, int iSize, double pts);
15   virtual void Reset();
16   virtual bool GetPicture(DVDVideoPicture* pDvdVideoPicture);
17   virtual bool GetUserData(DVDVideoUserData* pDvdVideoUserData);
18   
19   virtual void SetDropState(bool bDrop);
20   virtual const char* GetName() { return "libmpeg2"; }
21
22 protected:
23   DVDVideoPicture* GetBuffer(unsigned int width, unsigned int height);
24   inline void ReleaseBuffer(DVDVideoPicture* pPic);
25   inline void DeleteBuffer(DVDVideoPicture* pPic);
26
27   int GuessAspect(const mpeg2_sequence_t *sequence, unsigned int *pixel_width, unsigned int *pixel_height);
28
29   mpeg2dec_t* m_pHandle;
30   const mpeg2_info_t* m_pInfo;
31   DllLibMpeg2 m_dll;
32
33   unsigned int m_irffpattern;
34   bool m_bFilm; //Signals that we have film material
35   bool m_bIs422;
36
37   bool m_bmpeg1;
38   int m_hurry;
39   //The buffer of pictures we need
40   DVDVideoPicture m_pVideoBuffer[3];
41   DVDVideoPicture* m_pCurrentBuffer;
42 };