mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
Merge branch 'hyperion-project:master' into comments
This commit is contained in:
@@ -174,7 +174,7 @@ int DDAGrabber::grabFrame(Image<ColorRgb> &image)
|
||||
// Acquire the next frame.
|
||||
CComPtr<IDXGIResource> desktopResource;
|
||||
DXGI_OUTDUPL_FRAME_INFO frameInfo;
|
||||
hr = d->desktopDuplication->AcquireNextFrame(INFINITE, &frameInfo, &desktopResource);
|
||||
hr = d->desktopDuplication->AcquireNextFrame(500, &frameInfo, &desktopResource);
|
||||
if (hr == DXGI_ERROR_ACCESS_LOST || hr == DXGI_ERROR_INVALID_CALL)
|
||||
{
|
||||
if (!restartCapture())
|
||||
@@ -185,7 +185,7 @@ int DDAGrabber::grabFrame(Image<ColorRgb> &image)
|
||||
}
|
||||
if (hr == DXGI_ERROR_WAIT_TIMEOUT)
|
||||
{
|
||||
// This shouldn't happen since we specified an INFINITE timeout.
|
||||
// Nothing changed on the screen in the 500ms we waited.
|
||||
return 0;
|
||||
}
|
||||
RETURN_IF_ERROR(hr, "Failed to acquire next frame", 0);
|
||||
|
||||
@@ -363,6 +363,18 @@ done:
|
||||
_height = props.height;
|
||||
_frameByteSize = _width * _height * 3;
|
||||
_lineLength = _width * 3;
|
||||
// adjust flipMode for bottom-up images
|
||||
if (props.defstride < 0)
|
||||
{
|
||||
if (_flipMode == FlipMode::NO_CHANGE)
|
||||
_flipMode = FlipMode::HORIZONTAL;
|
||||
else if (_flipMode == FlipMode::HORIZONTAL)
|
||||
_flipMode = FlipMode::NO_CHANGE;
|
||||
else if (_flipMode == FlipMode::VERTICAL)
|
||||
_flipMode = FlipMode::BOTH;
|
||||
else if (_flipMode == FlipMode::BOTH)
|
||||
_flipMode = FlipMode::VERTICAL;
|
||||
}
|
||||
}
|
||||
|
||||
// Cleanup
|
||||
@@ -436,6 +448,14 @@ void MFGrabber::enumVideoCaptureDevices()
|
||||
properties.denominator = denominator;
|
||||
properties.pf = pixelformat;
|
||||
properties.guid = format;
|
||||
|
||||
HRESULT hr = pType->GetUINT32(MF_MT_DEFAULT_STRIDE, (UINT32*)&properties.defstride);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
hr = MFGetStrideForBitmapInfoHeader(format.Data1, width, &properties.defstride);
|
||||
if (FAILED(hr))
|
||||
DebugIf (verbose, _log, "failed to get default stride");
|
||||
}
|
||||
devicePropertyList.append(properties);
|
||||
|
||||
DebugIf (verbose, _log, "%s %d x %d @ %d fps (%s)", QSTRING_CSTR(dev), properties.width, properties.height, properties.fps, QSTRING_CSTR(pixelFormatToString(properties.pf)));
|
||||
@@ -797,7 +817,7 @@ QJsonArray MFGrabber::discover(const QJsonObject& params)
|
||||
resolution_default["width"] = 640;
|
||||
resolution_default["height"] = 480;
|
||||
resolution_default["fps"] = 25;
|
||||
format_default["format"] = "bgr24";
|
||||
format_default["format"] = "rgb24";
|
||||
format_default["resolution"] = resolution_default;
|
||||
video_inputs_default["inputIdx"] = 0;
|
||||
video_inputs_default["standards"] = "PAL";
|
||||
|
||||
Reference in New Issue
Block a user