Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/mpc-hc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCasimir666 <casimir666@users.sourceforge.net>2008-11-02 15:36:50 +0300
committerCasimir666 <casimir666@users.sourceforge.net>2008-11-02 15:36:50 +0300
commit9d11348c1cd412a7a32b31bf60780971cb5ec383 (patch)
tree9de2b63ecef24cf9ef008a4b8fd74622e3d5de25 /src/filters/transform/mpcvideodec/DXVADecoder.h
parent31b3258d4d284a9b867c2c510b9f5c5dd62bc6b5 (diff)
Fixed : support for H264 interlaced video for DXVA decoder
git-svn-id: https://mpc-hc.svn.sourceforge.net/svnroot/mpc-hc/trunk@852 10f7b99b-c216-0410-bff0-8a66a9350fd8
Diffstat (limited to 'src/filters/transform/mpcvideodec/DXVADecoder.h')
-rw-r--r--src/filters/transform/mpcvideodec/DXVADecoder.h23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/filters/transform/mpcvideodec/DXVADecoder.h b/src/filters/transform/mpcvideodec/DXVADecoder.h
index 8bb2b75a2..998676601 100644
--- a/src/filters/transform/mpcvideodec/DXVADecoder.h
+++ b/src/filters/transform/mpcvideodec/DXVADecoder.h
@@ -37,6 +37,24 @@ typedef enum
VC1_VLD
} DXVAMode;
+typedef enum
+{
+ PICT_TOP_FIELD = 1,
+ PICT_BOTTOM_FIELD = 2,
+ PICT_FRAME = 3
+} FF_FIELD_TYPE;
+
+typedef enum
+{
+ I_TYPE = 1, ///< Intra
+ P_TYPE = 2, ///< Predicted
+ B_TYPE = 3, ///< Bi-dir predicted
+ S_TYPE = 4, ///< S(GMC)-VOP MPEG4
+ SI_TYPE = 5, ///< Switching Intra
+ SP_TYPE = 6, ///< Switching Predicted
+ BI_TYPE = 7
+} FF_SLICE_TYPE;
+
typedef struct
{
bool bRefPicture; // True if reference picture
@@ -45,6 +63,8 @@ typedef struct
CComPtr<IMediaSample> pSample; // Only for DXVA2 !
REFERENCE_TIME rtStart;
REFERENCE_TIME rtStop;
+ FF_FIELD_TYPE n1FieldType; // Top or bottom for the 1st field
+ FF_SLICE_TYPE nSliceType;
} PICTURE_STORE;
@@ -93,7 +113,7 @@ protected :
HRESULT QueryStatus(PVOID LPDXVAStatus, UINT nSize);
// === Picture store functions
- bool AddToStore (int nSurfaceIndex, IMediaSample* pSample, bool bRefPicture, REFERENCE_TIME rtStart, REFERENCE_TIME rtStop, bool bIsField);
+ bool AddToStore (int nSurfaceIndex, IMediaSample* pSample, bool bRefPicture, REFERENCE_TIME rtStart, REFERENCE_TIME rtStop, FF_FIELD_TYPE nFieldType, FF_SLICE_TYPE nSliceType);
void UpdateStore (int nSurfaceIndex, REFERENCE_TIME rtStart, REFERENCE_TIME rtStop);
void RemoveRefFrame (int nSurfaceIndex);
HRESULT DisplayNextFrame();
@@ -126,4 +146,5 @@ private :
void Init(CMPCVideoDecFilter* pFilter, DXVAMode nMode, int nPicEntryNumber);
void FreePictureSlot (int nSurfaceIndex);
int FindOldestFrame();
+ void SetTypeSpecificFlags(PICTURE_STORE* pPicture, IMediaSample* pMS);
}; \ No newline at end of file