Skip to content

Commit

Permalink
[VCM] add more logging/error checking
Browse files Browse the repository at this point in the history
  • Loading branch information
yuyoyuppe committed Apr 12, 2021
1 parent 55a3062 commit 2599489
Showing 1 changed file with 27 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -384,9 +384,19 @@ void OverwriteFrame(IMediaSample* frame, wil::com_ptr_nothrow<IMFSample>& image)
const DWORD frameSize = frame->GetSize();

image->GetBufferByIndex(0, &imageBuf);
if (!imageBuf)
{
LOG("Error: couldn't get imageBuffer");
return;
}
BYTE* imageData = nullptr;
DWORD _ = 0, imageSize = 0;
imageBuf->Lock(&imageData, &_, &imageSize);
if (!imageData)
{
LOG("Error: couldn't lock imageBuffer");
return;
}

if (imageSize > frameSize)
{
Expand Down Expand Up @@ -627,20 +637,35 @@ HRESULT VideoCaptureProxyFilter::EnumPins(IEnumPins** ppEnum)
{
maxFrameSize = allocatorProperties.cbBuffer;
}
if (maxFrameSize)
{
LOG("Obtained maxFrameSize");
}
else
{
LOG("Couldn't obtain maxFrameSize");
}

size_t selectedModeIdx = 0;
constexpr std::array<float, 3> jpgQualityModes = { 0.5f, 0.25f, 0.1f };
_overlayImage = LoadImageAsSample(newSettings.overlayImage, targetMediaType.get(), jpgQualityModes[selectedModeIdx]);
long imageSize = GetImageSize(_overlayImage);
while (maxFrameSize && maxFrameSize < imageSize && selectedModeIdx < size(jpgQualityModes))
{
LOG("Trying lower jpg quality");
_overlayImage = LoadImageAsSample(newSettings.overlayImage, targetMediaType.get(), jpgQualityModes[++selectedModeIdx]);
imageSize = GetImageSize(_overlayImage);
}
if (maxFrameSize < imageSize)
{
LOG("Couldn't lower jpg quality enough");
}
else
{
LOG("Successfully lowered jpg quality to fit into image frame");
}
}

LOG("Loaded images");

LOG("Capture device created successfully");
}
else
Expand Down

0 comments on commit 2599489

Please sign in to comment.