The code uses XFixes to retrieve the cursor coordinates, but XFixes
gives no information of what screen the pointer is on; this results in
always drawing the cursor on the captured screen even if the mouse
pointer was on another screen.
For example, when capturing from screen 1 (i.e. -f x11grab -i ":0.1")
the cursor was being drawn in the captured image even when the mouse
pointer was actually on screen 0, which is wrong and visually confusing.
Use XQueryPointer to check that the pointer is actually on the screen
which is being captured.
Signed-off-by: Antonio Ospite <ao2@ao2.it>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This specifies better the meaning of the variable, and is also in
preparation of a subsequent change which will introduce a temporary
Window variable for which "w" is an good name.
Signed-off-by: Antonio Ospite <ao2@ao2.it>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Additionally, make sure a buffer gets enqueued again (even in error paths) after
it has been succesfully dequeued.
Tested-by: Dmitry Volyntsev <xeioexception@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'bb3ead7e54fec205c595cfb8b1d8900d50d3d1cc':
x11grab: Fallback to normal XImage if SHM is not supported
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '58396e806c65fe0eb00e6ccf1980f810cdceed05':
x11grab: Use a typedef for the context, as most other code does
Conflicts:
libavdevice/x11grab.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '7bb505a33ca131906b2ceb2f298e104c862740ea':
x11grab: Drop a spurious space in the extension reporting message
Conflicts:
libavdevice/x11grab.c
See: 9af2097120
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Timothy Gu <timothygu99@gmail.com>
This file with the incorrect name was added after the name was fixed in all other files.
This is thus fixing a mistake
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'ab56fabe6294524e99815451ad01e4ff50c6d734':
vfwcap: Add fallback define for HWND_MESSAGE
The merged commit reverts the HWND_MESSAGE removial, and adds a #ifndef around
commit 8bc52dbd9d
vfwcap: Drop fallback VfW defines
The defines were added long ago when MinGW still lacked them.
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '424b929b5cb9ca4094099f25179829260d4b0fa3':
pulse: Add a wallclock option to be compatible with other other captures
Conflicts:
libavdevice/pulse_audio_dec.c
wallclock mode was supported and default in FFmpeg already before this commit.
its thus left the default
Merged-by: Michael Niedermayer <michaelni@gmx.at>
PulseAudio expilitly requires name of the source.
This patch makes it use default source when not provided.
It simplifies programistic use.
Signed-off-by: Lukasz Marek <lukasz.m.luki2@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
As of September 14 2012, v4l_enumstd() will return ENODATA
when a device's std field is set to 0. That is, the device
does not have a standard format. In order to properly
handle this case, v4l2_set_parameters should catch the
ENODATA code and break instead of failing.
Below is the v4l2-core commit describing this change.
>>commit a5338190efc7cfa8c99a6856342a77d21c9a05cf
>>Author: Hans Verkuil <hans.verkuil@cisco.com>
>>Date: Fri Sep 14 06:45:43 2012 -0300
>>
>> [media] v4l2-core: tvnorms may be 0 for a given input, handle that case
>>
>> Currently the core code looks at tvnorms to see whether ENUMSTD
>> or G_PARM should be enabled. This is not a good check for drivers
>> that support the STD API on one input and the DV Timings API on another.
>> In that case tvnorms may be 0.
>> Instead check whether s_std is present (for ENUMSTD) or whether g_std or
>> current_norm is present for g_parm.
>> Also, in the enumstd core function return ENODATA if tvnorms is 0,
>> because in that case the current input does not support the STD API
>> and ENUMSTD should return ENODATA for that.
>>
>> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
>> Reviewed-by: Sakari Ailus <sakari.ailus@iki.fi>
>> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Used to expose ff_raw_pix_fmt_tags[] to other libav* libraries
Signed-off-by: James Almer <jamrial@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
The were wrongly being exported and used by libavdevice
Signed-off-by: James Almer <jamrial@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Example of non-mappable file is /dev/stdin. Previously passing it as
graph_file value returned error.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Also add a note about SNDCTL_DSP_GETFMTS which may fail even if OSS is
available.
Signed-off-by: Timothy Gu <timothygu99@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'c0de9159a7ba5707aa0a5c2bc73ae78b7b87ec46':
avdevice: Give names to anonymously typedeffed structs
Merged-by: Michael Niedermayer <michaelni@gmx.at>
The X11 servers by VNC, at 32-bits depths, has the following masks:
R:0x000007ff G:0x003ff800 B:0xffc00000
This is not compatible with AV_PIX_FMT_0RGB32, and the result
is success with completely wrong colors.
MSVC does not allow passing file pointers between libs
This API can thus not work with MSVC and as it was very recently added
and its it was in no release its removial should not cause any problems
A better API will be implemented, but its not finished yet, this revert is
to avoid potentially blocking the release
Found-by: Hendrik Leppkes <h.leppkes@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This fixes timestamps
Based-on: code from pulseaudio
Reviewed-by: Lukasz Marek <lukasz.m.luki2@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
User may close X11 window by close button on tray.
FFmpeg leaves in graceless way.
This commit detects it and return EPIPE error.
Signed-off-by: Lukasz Marek <lukasz.m.luki2@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Whenever av_gettime() is used to measure relative period of time,
av_gettime_relative() is prefered as it guarantee monotonic time
on supported platforms.
Since v4l2 is compiled only on Linux where av_gettime_relative()
is monotonic, a small wrapper function av_gettime_monotonic() is used
(should be inlined the compiler) to put emphasis on that fact.
Signed-off-by: Olivier Langlois <olivier@trillion01.com>
Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Device is able to use existing window, that can be a
part of existing GUI - instead of newly created one.
Signed-off-by: Lukasz Marek <lukasz.m.luki2@gmail.com>
Functions allow to connect and disconnect from server.
Helpfull to implement utility functions with nested loops.
Signed-off-by: Lukasz Marek <lukasz.m.luki2@gmail.com>
class is reserved keyword in C++ and compilator complains about that variable.
Signed-off-by: Lukasz Marek <lukasz.m.luki2@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
AVDeviceInfoList was allocated with first device set as default
even though there is no device after allocation.
Signed-off-by: Lukasz Marek <lukasz.m.luki2@gmail.com>
Provides API to query device capabilities.
Each device must implement callbacks to benefit from this API.
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
Based on original code by Christophe Gisquet in 2010, updated to work
with current ffmpeg APIs.
Supports grabbing a single window or an area of the screen, including
support for multiple monitors (Windows does funky stuff with negative
coordinates here).
I've moved most of the configuration to AVOptions; the input file name
is now only the string "desktop", or "title=<windowname>" to select a
single window. The AVOptions are the same as x11grab where possible.
Code has been added to support a "show_region" mode, like x11grab, which
will draw a rectangle on the screen around the area being captured.
Instead of duplicating code for paletted image handling, I make use of
the GDI API's ability to output DIB (BMP) images, which can be run
through ffmpeg's existing BMP decoder.
Signed-off-by: Calvin Walton <calvin.walton@kepstin.ca>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Basically sometimes if you start dropping video packets, you also drop audio packets. Now they each have separate buffers to avoid this unexpected behavior.
Signed-off-by: rogerdpack <rogerpack2005@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* cigaes/master:
lavf/concatdec: reindent after last commit.
lavf/concatdec: more reliable test for absolute URLs.
lavf: add subfile protocol.
lavfi/af_atempo: clear references before returning error.
lavd/xv: take aspect ratio into account.
lavc/pthread: copy packet side data.
Merged-by: Michael Niedermayer <michaelni@gmx.at>
SDL device reports double free or hangs when quiting.
Reseting variables solves the issue.
The issue is caused by double call of write_trailer callback.
It is called for the first time in write_packet when quit flag is set.
Second call comes from ffmpeg.c or may come from other client application.
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit also fixes opengl deinitialization.
Program and shaders where not deleted.
Could impact MacOS implementation based on SDL window.
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
Rename GL_RED_COMPONENT into FF_GL_RED_COMPONENT
to explicity mark it is internal define, not OpenGL API.
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
The stream time_base has been changed to be a multiple of the
device sample_rate. Now the frame_duration computation is simpler
and a message will warn about problematic frame_size values.
Signed-off-by: Federico Simoncelli <fsimonce@redhat.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Setting the v4l2 device parameters may influence video properties
such as width, height and pixel format.
This patch moves v4l2_set_parameters to be executed before fetching
the video properties, avoiding errors such as (pal vs ntsc):
The v4l2 frame is 829440 bytes, but 691200 bytes are expected
Signed-off-by: Federico Simoncelli <fsimonce@redhat.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
The constant may change in libavutil but the library may be compiled
against an older version, thus rejecting a value which is otherwise
supported by the new libavutil.
INT_MAX is used here to denote the max allowed value for a pixel format.
The opt-test code is changed to provide a valid reference example.
Originally written by James Almer <jamrial@gmail.com>
With the following contributions by Timothy Gu <timothygu99@gmail.com>
* Use descriptions of libraries from the pkg-config file generation function
* Use "FFmpeg Project" as CompanyName (suggested by Alexander Strasser)
* Use "FFmpeg" for ProductName as MSDN says "name of the product with which the
file is distributed" [1].
* Use FFmpeg's version (N-xxxxx-gxxxxxxx) for ProductVersion per MSDN [1].
* Only build the .rc files when --enable-small is not enabled.
[1] http://msdn.microsoft.com/en-us/library/windows/desktop/aa381058.aspx
Signed-off-by: James Almer <jamrial@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Add options to control the size of the PulseAudio buffer.
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
SDL_Init() is called on the event handler thread, as required by SDL in
Windows to avoid deadlocks as discovered by Roger Pack.
Fix trac ticket #1743 and #1744.
Add support for following pixel formats:
- AV_PIX_FMT_UYVY422
- AV_PIX_FMT_YUYV422
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
Add ff_ prefix for internal API function.
Change type of param from int into enum AVCodecID as it is more specific.
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
Don't trust provided streams.
Return with error when stream count is not 1 or
provided stream is not an audio stream.
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
Current implementation didn't include duration of
last processed packet.
Device may return negative timestamps without
this correction.
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
Valgrind detects mem leak from XCreateGC.
Free it with XFreeGC.
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
So far fbdev_enc device picked up first video stream and ignored others.
It is required to provide exactly one video stream now.
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
So far pulse device picked up first audio stream and ignored others.
It is required to provide exactly one audio stream now.
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
Current implementation didn't include duration of
last processed packet.
Also remove access to st->cur_dts and replace with pkt->pts.
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
This will avoid errors due to conflicting declarations
with linux kernels prior to 2.6.30.
Reviewed-by: Lukasz M <lukasz.m.luki@gmail.com>
Signed-off-by: Ingo Brückl <ib@wupperonline.de>
Move common fbdev dec/enc for separate file.
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
Rename existing fbdev.c to make it a more meaningful name.
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
Error check should be done by checking negative value, not non-zero.
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
In particular, fix punctuation in docs and make option help messages
grammatically consistent.
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
fbdev->data was allocated with size fbdev->fixinfo.smem_len, release data
in fbdev_read_close() using the same size.
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
This make name of the file more specific
as there is also encoder implementation.
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
With some (buggy) drivers, the VIDIOC_G_STD ioctl returns a std_id that cannot
be matched with any of the enumerated v4l2_standard structures (for example
std_id = 0 or std_id = 0xffffff). Do not fail when we reach the end of the
enumeration without a valid match.
Fixes ticket #2370
Note: This commit message has been modified by Giorgio Vazzana, the original
commit message was:
"Fixed regression for mandatory VIDIOC_ENUMSTD support by v4l2"
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
In particular, print the standard supported by the selected input.
Additionally, use PRIx64 everywhere when printing standards.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'cb0244daaca83ab666798818f74f5181bf6bc387':
bktr: Changed a missed occurrance of open into avpriv_open
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Add one copy of the function into each of the libraries, similarly
to what we do for log2_tab. When using static libs, only one
copy of the file_open.o object file gets included, while when
using shared libraries, each of them get a copy of its own.
This fixes DLL builds with a statically linked C runtime, where
each DLL effectively has got its own instance of the C runtime,
where file descriptors can't be shared across runtimes.
On systems not using msvcrt, the function is not duplicated.
Signed-off-by: Martin Storsjö <martin@martin.st>