[FFmpeg-devel] [PATCH v4 1/1] avdevice/gdigrab add use_captureblt option
Calvin Walton
calvin.walton at kepstin.ca
Thu Jan 16 20:00:51 EET 2020
On Thu, 2020-01-16 at 09:08 +0800, fgodt wrote:
> > By default, this is set to @code{1}, which means that gdigrab will
> > use
> > the CAPTUREBLT flag when grabbing images of a window. With this
> > flag
> > set, gdigrab will capture the entire contents of a window even if
> > it is
> > covered by other windows on the screen.
> >
> > If this option is set to @code{0}, the image captured will match
> > what
> > you see on the screen: the contents of any windows covering the
> > selected window will be visible in the capture.
> >
> > Depending on your Windows version and graphics settings, you may
> > see
> > the mouse cursor flicker on your screen while capturing with this
> > option set to @code{1}. If that happens, you can disable CAPTUREBLT
> > by
> > setting this option to @code{0}.
> >
> Thanks for you suggestion, but there is issue, without the
> CAPTUREBLT
> flag not change any thing for normal window in captured video, the
> worke
> same like use CAPTUREBLT flag. So the can capture window even if it
> is
> covered.
Ah, fun, this is based on a misinterpretation of the windows
documentation:
CAPTUREBLT
Includes any windows that are layered on top of your window in the
resulting image. By default, the image only contains your window.
But according to this StackOverflow response:
https://stackoverflow.com/a/4646999
What that actually means is that CAPTUREBLT includes windows with the
"WS_EX_LAYERED" window style that overlap the window, not *any* window.
Layered windows are described in:
https://docs.microsoft.com/en-us/windows/win32/winmsg/window-features#layered-windows
I think we should unconditionally remove the CAPTUREBLT flag, there's
no need for any options or documentation changes.
--
Calvin Walton <calvin.walton at kepstin.ca>
More information about the ffmpeg-devel
mailing list