Skip to content

Commit

Permalink
Исправлен входной формат в статистике для случаев, когда размер текст…
Browse files Browse the repository at this point in the history
…уры аппаратного декодера совпадал с размерами в медиатипе.
  • Loading branch information
v0lt committed Dec 25, 2020
1 parent 1f928d3 commit a100683
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 8 deletions.
24 changes: 19 additions & 5 deletions Source/DX11VideoProcessor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1658,6 +1658,7 @@ HRESULT CDX11VideoProcessor::CopySample(IMediaSample* pSample)

HRESULT hr = S_OK;
m_FieldDrawn = 0;
bool updateStats = false;

m_hdr10 = {};
if (m_bHdrPassthrough && SourceIsHDR()) {
Expand Down Expand Up @@ -1692,7 +1693,10 @@ HRESULT CDX11VideoProcessor::CopySample(IMediaSample* pSample)
}

if (CComQIPtr<IMediaSampleD3D11> pMSD3D11 = pSample) {
m_iSrcFromGPU = 11;
if (m_iSrcFromGPU != 11) {
m_iSrcFromGPU = 11;
updateStats = true;
}

CComQIPtr<ID3D11Texture2D> pD3D11Texture2D;
UINT ArraySlice = 0;
Expand All @@ -1719,7 +1723,7 @@ HRESULT CDX11VideoProcessor::CopySample(IMediaSample* pSample)
return hr;
}
UpdatFrameProperties();
UpdateStatsStatic();
updateStats = true;
}
#endif

Expand All @@ -1731,7 +1735,10 @@ HRESULT CDX11VideoProcessor::CopySample(IMediaSample* pSample)
}
}
else if (CComQIPtr<IMFGetService> pService = pSample) {
m_iSrcFromGPU = 9;
if (m_iSrcFromGPU != 9) {
m_iSrcFromGPU = 9;
updateStats = true;
}

CComPtr<IDirect3DSurface9> pSurface9;
if (SUCCEEDED(pService->GetService(MR_BUFFER_SERVICE, IID_PPV_ARGS(&pSurface9)))) {
Expand All @@ -1751,7 +1758,7 @@ HRESULT CDX11VideoProcessor::CopySample(IMediaSample* pSample)
return hr;
}
UpdatFrameProperties();
UpdateStatsStatic();
updateStats = true;
}

D3DLOCKED_RECT lr_src;
Expand All @@ -1768,7 +1775,10 @@ HRESULT CDX11VideoProcessor::CopySample(IMediaSample* pSample)
}
}
else {
m_iSrcFromGPU = 0;
if (m_iSrcFromGPU != 0) {
m_iSrcFromGPU = 0;
updateStats = true;
}

BYTE* data = nullptr;
const long size = pSample->GetActualDataLength();
Expand All @@ -1782,6 +1792,10 @@ HRESULT CDX11VideoProcessor::CopySample(IMediaSample* pSample)
}
}

if (updateStats) {
UpdateStatsStatic();
}

m_RenderStats.copyticks = GetPreciseTick() - tick;

return hr;
Expand Down
17 changes: 14 additions & 3 deletions Source/DX9VideoProcessor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1237,9 +1237,13 @@ HRESULT CDX9VideoProcessor::CopySample(IMediaSample* pSample)

HRESULT hr = S_OK;
m_FieldDrawn = 0;
bool updateStats = false;

if (CComQIPtr<IMFGetService> pService = pSample) {
m_iSrcFromGPU = 9;
if (m_iSrcFromGPU != 9) {
m_iSrcFromGPU = 9;
updateStats = true;
}

CComPtr<IDirect3DSurface9> pSurface;
if (SUCCEEDED(pService->GetService(MR_BUFFER_SERVICE, IID_PPV_ARGS(&pSurface)))) {
Expand All @@ -1259,7 +1263,7 @@ HRESULT CDX9VideoProcessor::CopySample(IMediaSample* pSample)
return hr;
}
UpdatFrameProperties();
UpdateStatsStatic();
updateStats = true;
}

if (m_DXVA2VP.IsReady()) {
Expand Down Expand Up @@ -1294,7 +1298,10 @@ HRESULT CDX9VideoProcessor::CopySample(IMediaSample* pSample)
}
}
else {
m_iSrcFromGPU = 0;
if (m_iSrcFromGPU != 0) {
m_iSrcFromGPU = 0;
updateStats = true;
}

BYTE* data = nullptr;
const long size = pSample->GetActualDataLength();
Expand Down Expand Up @@ -1357,6 +1364,10 @@ HRESULT CDX9VideoProcessor::CopySample(IMediaSample* pSample)
}
}

if (updateStats) {
UpdateStatsStatic();
}

m_RenderStats.copyticks = GetPreciseTick() - tick;

return hr;
Expand Down

0 comments on commit a100683

Please sign in to comment.