Skip to content

Commit e07dd13

Browse files
committed
Исправлено копирование данные неправильного размера, которые могут получаться из кривых файлов AVI, которые может делать FFmpeg.
Пример: ffmpeg -i "input.avi" -c:v libx265 output.avi В этом случае будет получен файл AVI с нулевым полем FOURCC, что соответствует BI_RGB. Но сами данные будут занимать меньше места, что вызовет падение видеорендерера.
1 parent 46b46e6 commit e07dd13

File tree

2 files changed

+2
-2
lines changed

2 files changed

+2
-2
lines changed

Source/DX11VideoProcessor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2262,7 +2262,7 @@ HRESULT CDX11VideoProcessor::CopySample(IMediaSample* pSample)
22622262

22632263
BYTE* data = nullptr;
22642264
const long size = pSample->GetActualDataLength();
2265-
if (size > 0 && S_OK == pSample->GetPointer(&data)) {
2265+
if (size >= abs(m_srcPitch) * m_srcLines && S_OK == pSample->GetPointer(&data)) {
22662266
// do not use UpdateSubresource for D3D11 VP here
22672267
// because it can cause green screens and freezes on some configurations
22682268
hr = MemCopyToTexSrcVideo(data, m_srcPitch);

Source/DX9VideoProcessor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1469,7 +1469,7 @@ HRESULT CDX9VideoProcessor::CopySample(IMediaSample* pSample)
14691469

14701470
BYTE* data = nullptr;
14711471
const long size = pSample->GetActualDataLength();
1472-
if (size > 0 && S_OK == pSample->GetPointer(&data)) {
1472+
if (size >= abs(m_srcPitch) * m_srcLines && S_OK == pSample->GetPointer(&data)) {
14731473
if (m_srcParams.cformat == CF_NONE) {
14741474
return E_FAIL;
14751475
}

0 commit comments

Comments
 (0)