diff options
author | Aleksoid <aleksoid@users.sourceforge.net> | 2011-05-11 10:41:35 +0400 |
---|---|---|
committer | Aleksoid <aleksoid@users.sourceforge.net> | 2011-05-11 10:41:35 +0400 |
commit | 119969b6d3fd48fe965cde47666a87e34b0f06bb (patch) | |
tree | 41950c59eb49ec2e8211b9873b37cc471597aa0b /src/filters/renderer/VideoRenderers | |
parent | 91df102cbe50fe786eaed548cfa62809f2905d8a (diff) |
Add : support Intel DXVA VC1 Mode in IPinHook;
Fix : internal H.264 DXVA Decoder unable to playback some video with BaseLine profile(mov, mp4) on Nvidia card; ticket #921, #923, #966;
git-svn-id: https://mpc-hc.svn.sourceforge.net/svnroot/mpc-hc/trunk@3103 10f7b99b-c216-0410-bff0-8a66a9350fd8
Diffstat (limited to 'src/filters/renderer/VideoRenderers')
-rw-r--r-- | src/filters/renderer/VideoRenderers/IPinHook.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/filters/renderer/VideoRenderers/IPinHook.cpp b/src/filters/renderer/VideoRenderers/IPinHook.cpp index 726fa9069..9ca8d2b35 100644 --- a/src/filters/renderer/VideoRenderers/IPinHook.cpp +++ b/src/filters/renderer/VideoRenderers/IPinHook.cpp @@ -31,6 +31,8 @@ #include "IPinHook.h"
#include "AllocatorCommon.h"
+#define DXVA_LOGFILE_A
+
#if defined(_DEBUG) && defined(DXVA_LOGFILE_A)
#define LOG_FILE_DXVA _T("dxva_ipinhook.log")
#define LOG_FILE_PICTURE _T("picture.log")
@@ -960,7 +962,7 @@ static HRESULT STDMETHODCALLTYPE ExecuteMine(IAMVideoAcceleratorC* This, DWORD d if (pamvaBufferInfo[i].dwTypeIndex == DXVA_PICTURE_DECODE_BUFFER) {
if (g_guidDXVADecoder == DXVA2_ModeH264_E || g_guidDXVADecoder == DXVA_Intel_H264_ClearVideo) {
LogDXVA_PicParams_H264 ((DXVA_PicParams_H264*)g_ppBuffer[pamvaBufferInfo[i].dwTypeIndex]);
- } else if (g_guidDXVADecoder == DXVA2_ModeVC1_D) {
+ } else if (g_guidDXVADecoder == DXVA2_ModeVC1_D || g_guidDXVADecoder == DXVA_Intel_VC1_ClearVideo) {
LogDXVA_PictureParameters((DXVA_PictureParameters*)g_ppBuffer[pamvaBufferInfo[i].dwTypeIndex]);
}
} else if (pamvaBufferInfo[i].dwTypeIndex == DXVA_SLICE_CONTROL_BUFFER && (pamvaBufferInfo[i].dwDataSize % sizeof(DXVA_Slice_H264_Short)) == 0) {
@@ -1209,7 +1211,7 @@ public : if (pExecuteParams->pCompressedBuffers[i].CompressedBufferType == DXVA2_PictureParametersBufferType) {
if (g_guidDXVADecoder == DXVA2_ModeH264_E || g_guidDXVADecoder == DXVA_Intel_H264_ClearVideo) {
LogDXVA_PicParams_H264 ((DXVA_PicParams_H264*)m_ppBuffer[pExecuteParams->pCompressedBuffers[i].CompressedBufferType]);
- } else if (g_guidDXVADecoder == DXVA2_ModeVC1_D || g_guidDXVADecoder == DXVA2_ModeMPEG2_VLD) {
+ } else if (g_guidDXVADecoder == DXVA2_ModeVC1_D || g_guidDXVADecoder == DXVA2_ModeMPEG2_VLD || g_guidDXVADecoder == DXVA_Intel_VC1_ClearVideo) {
LogDXVA_PictureParameters((DXVA_PictureParameters*)m_ppBuffer[pExecuteParams->pCompressedBuffers[i].CompressedBufferType]);
}
}
@@ -1463,6 +1465,7 @@ static HRESULT STDMETHODCALLTYPE CreateVideoDecoderMine( if ((Guid == DXVA2_ModeH264_E) ||
(Guid == DXVA2_ModeVC1_D) ||
(Guid == DXVA_Intel_H264_ClearVideo) ||
+ (Guid == DXVA_Intel_VC1_ClearVideo) ||
(Guid == DXVA2_ModeMPEG2_VLD)) {
*ppDecode = DNew CFakeDirectXVideoDecoder (NULL, *ppDecode);
(*ppDecode)->AddRef();
|