Merge commit '4fef648d10bf3bcfd4b8fa5755c1128966a2427c'
authorClément Bœsch <u@pkh.me>
Wed, 15 Mar 2017 21:07:47 +0000 (22:07 +0100)
committerClément Bœsch <u@pkh.me>
Wed, 15 Mar 2017 21:07:47 +0000 (22:07 +0100)
* commit '4fef648d10bf3bcfd4b8fa5755c1128966a2427c':
  Remove the legacy X11 screen grabber

Merged-by: Clément Bœsch <u@pkh.me>
1  2 
Changelog
LICENSE.md
configure
libavdevice/Makefile
libavdevice/alldevices.c
libavdevice/avdevice.h

diff --cc Changelog
+++ b/Changelog
@@@ -2,286 -2,17 +2,288 @@@ Entries are sorted chronologically fro
  releases are sorted from youngest to oldest.
  
  version <next>:
 -- aliases and defaults for Ogg subtypes (opus, spx)
 -- HEVC/H.265 RTP payload format (draft v6) packetizer and depacketizer
 -- avplay now exits by default at the end of playback
 -- XCB-based screen-grabber
 -- creating DASH compatible fragmented MP4, MPEG-DASH segmenting muxer
 -- H.261 RTP payload format (RFC 4587) depacketizer and experimental packetizer
 +- CrystalHD decoder moved to new decode API
 +- add internal ebur128 library, remove external libebur128 dependency
 +- Pro-MPEG CoP #3-R2 FEC protocol
 +- premultiply video filter
 +- Support for spherical videos
 +- configure now fails if autodetect-libraries are requested but not found
 +- PSD Decoder
 +- 16.8 floating point pcm decoder
 +- 24.0 floating point pcm decoder
 +- Apple Pixlet decoder
 +- QDMC audio decoder
 +- NewTek SpeedHQ decoder
 +- MIDI Sample Dump Standard demuxer
 +- readeia608 filter
 +- Sample Dump eXchange demuxer
 +- abitscope multimedia filter
 +- Scenarist Closed Captions demuxer and muxer
 +- threshold filter
 +- midequalizer filter
 +- Optimal Huffman tables for (M)JPEG encoding
 +- FM Screen Capture Codec decoder
 +- native Opus encoder
 +- ScreenPressor decoder
 +- incomplete ClearVideo decoder
 +- Intel QSV video scaling and deinterlacing filters
 +- XPM decoder
++- Removed the legacy X11 screen grabber, use XCB instead
++
 +
 +version 3.2:
 +- libopenmpt demuxer
 +- tee protocol
 +- Changed metadata print option to accept general urls
 +- Alias muxer for Ogg Video (.ogv)
 +- VP8 in Ogg muxing
 +- curves filter doesn't automatically insert points at x=0 and x=1 anymore
 +- 16-bit support in curves filter and selectivecolor filter
 +- OpenH264 decoder wrapper
 +- MediaCodec H.264/HEVC/MPEG-4/VP8/VP9 hwaccel
 +- True Audio (TTA) muxer
 +- crystalizer audio filter
 +- acrusher audio filter
 +- bitplanenoise video filter
 +- floating point support in als decoder
 +- fifo muxer
 +- maskedclamp filter
 +- hysteresis filter
 +- lut2 filter
 +- yuvtestsrc filter
 +- CUDA CUVID H.263/VP8/VP9/10 bit HEVC (Dithered) Decoding
 +- vaguedenoiser filter
 +- added threads option per filter instance
 +- weave filter
 +- gblur filter
 +- avgblur filter
 +- sobel and prewitt filter
 +- MediaCodec HEVC/MPEG-4/VP8/VP9 decoding
 +- Meridian Lossless Packing (MLP) / TrueHD encoder
 +- Non-Local Means (nlmeans) denoising filter
 +- sdl2 output device and ffplay support
 +- sdl1 output device and sdl1 support removed
 +- extended mov edit list support
 +- libfaac encoder removed
 +- Matroska muxer now writes CRC32 elements by default in all Level 1 elements
 +- sidedata video and asidedata audio filter
 +- Changed mapping of rtp MIME type G726 to codec g726le.
 +- spec compliant VAAPI/DXVA2 VC-1 decoding of slices in frame-coded images
 +
 +
 +version 3.1:
 +- DXVA2-accelerated HEVC Main10 decoding
 +- fieldhint filter
 +- loop video filter and aloop audio filter
 +- Bob Weaver deinterlacing filter
 +- firequalizer filter
 +- datascope filter
 +- bench and abench filters
 +- ciescope filter
 +- protocol blacklisting API
 +- MediaCodec H264 decoding
 +- VC-2 HQ RTP payload format (draft v1) depacketizer and packetizer
 +- VP9 RTP payload format (draft v2) packetizer
 +- AudioToolbox audio decoders
 +- AudioToolbox audio encoders
 +- coreimage filter (GPU based image filtering on OSX)
 +- libdcadec removed
 +- bitstream filter for extracting DTS core
 +- ADPCM IMA DAT4 decoder
 +- musx demuxer
 +- aix demuxer
 +- remap filter
 +- hash and framehash muxers
 +- colorspace filter
 +- hdcd filter
 +- readvitc filter
 +- VAAPI-accelerated format conversion and scaling
 +- libnpp/CUDA-accelerated format conversion and scaling
 +- Duck TrueMotion 2.0 Real Time decoder
 +- Wideband Single-bit Data (WSD) demuxer
 +- VAAPI-accelerated H.264/HEVC/MJPEG encoding
 +- DTS Express (LBR) decoder
 +- Generic OpenMAX IL encoder with support for Raspberry Pi
 +- IFF ANIM demuxer & decoder
 +- Direct Stream Transfer (DST) decoder
 +- loudnorm filter
 +- MTAF demuxer and decoder
 +- MagicYUV decoder
 +- OpenExr improvements (tile data and B44/B44A support)
 +- BitJazz SheerVideo decoder
 +- CUDA CUVID H264/HEVC decoder
 +- 10-bit depth support in native utvideo decoder
 +- libutvideo wrapper removed
 +- YUY2 Lossless Codec decoder
 +- VideoToolbox H.264 encoder
 +- VAAPI-accelerated MPEG-2 and VP8 encoding
 +
 +
 +version 3.0:
 +- Common Encryption (CENC) MP4 encoding and decoding support
 +- DXV decoding
 +- extrastereo filter
 +- ocr filter
 +- alimiter filter
 +- stereowiden filter
 +- stereotools filter
 +- rubberband filter
 +- tremolo filter
 +- agate filter
 +- chromakey filter
 +- maskedmerge filter
 +- Screenpresso SPV1 decoding
 +- chromaprint fingerprinting muxer
 +- ffplay dynamic volume control
 +- displace filter
 +- selectivecolor filter
 +- extensive native AAC encoder improvements and removal of experimental flag
 +- ADPCM PSX decoder
 +- 3dostr, dcstr, fsb, genh, vag, xvag, ads, msf, svag & vpk demuxer
 +- zscale filter
 +- wve demuxer
 +- zero-copy Intel QSV transcoding in ffmpeg
 +- shuffleframes filter
 +- SDX2 DPCM decoder
 +- vibrato filter
 +- innoHeim/Rsupport Screen Capture Codec decoder
 +- ADPCM AICA decoder
 +- Interplay ACM demuxer and audio decoder
 +- XMA1 & XMA2 decoder
 +- realtime filter
 +- anoisesrc audio filter source
 +- IVR demuxer
 +- compensationdelay filter
 +- acompressor filter
 +- support encoding 16-bit RLE SGI images
 +- apulsator filter
 +- sidechaingate audio filter
 +- mipsdspr1 option has been renamed to mipsdsp
 +- aemphasis filter
 +- mips32r5 option has been removed
 +- mips64r6 option has been removed
 +- DXVA2-accelerated VP9 decoding
 +- SOFAlizer: virtual binaural acoustics filter
 +- VAAPI VP9 hwaccel
 +- audio high-order multiband parametric equalizer
 +- automatic bitstream filtering
 +- showspectrumpic filter
 +- libstagefright support removed
 +- spectrumsynth filter
 +- ahistogram filter
 +- only seek with the right mouse button in ffplay
 +- toggle full screen when double-clicking with the left mouse button in ffplay
 +- afftfilt filter
 +- convolution filter
 +- libquvi support removed
 +- support for dvaudio in wav and avi
 +- libaacplus and libvo-aacenc support removed
 +- Cineform HD decoder
 +- new DCA decoder with full support for DTS-HD extensions
 +- significant performance improvements in Windows Television (WTV) demuxer
 +- nnedi deinterlacer
 +- streamselect video and astreamselect audio filter
 +- swaprect filter
 +- metadata video and ametadata audio filter
 +- SMPTE VC-2 HQ profile support for the Dirac decoder
 +- SMPTE VC-2 native encoder supporting the HQ profile
 +
 +
 +version 2.8:
 +- colorkey video filter
 +- BFSTM/BCSTM demuxer
 +- little-endian ADPCM_THP decoder
 +- Hap decoder and encoder
 +- DirectDraw Surface image/texture decoder
 +- ssim filter
 +- optional new ASF demuxer
 +- showvolume filter
 +- Many improvements to the JPEG 2000 decoder
 +- Go2Meeting decoding support
 +- adrawgraph audio and drawgraph video filter
 +- removegrain video filter
 +- Intel QSV-accelerated MPEG-2 video and HEVC encoding
 +- Intel QSV-accelerated MPEG-2 video and HEVC decoding
 +- Intel QSV-accelerated VC-1 video decoding
 +- libkvazaar HEVC encoder
 +- erosion, dilation, deflate and inflate video filters
 +- Dynamic Audio Normalizer as dynaudnorm filter
 +- Reverse video and areverse audio filter
 +- Random filter
 +- deband filter
 +- AAC fixed-point decoding
 +- sidechaincompress audio filter
 +- bitstream filter for converting HEVC from MP4 to Annex B
 +- acrossfade audio filter
 +- allyuv and allrgb video sources
 +- atadenoise video filter
 +- OS X VideoToolbox support
 +- aphasemeter filter
 +- showfreqs filter
 +- vectorscope filter
 +- waveform filter
 +- hstack and vstack filter
 +- Support DNx100 (1440x1080@8)
 +- VAAPI hevc hwaccel
 +- VDPAU hevc hwaccel
 +- framerate filter
 +- Switched default encoders for webm to VP9 and Opus
 +- Removed experimental flag from the JPEG 2000 encoder
 +
 +
 +version 2.7:
 +- FFT video filter
 +- TDSC decoder
 +- DTS lossless extension (XLL) decoding (not lossless, disabled by default)
 +- showwavespic filter
 +- DTS decoding through libdcadec
 +- Drop support for nvenc API before 5.0
 +- nvenc HEVC encoder
 +- Detelecine filter
 +- Intel QSV-accelerated H.264 encoding
 +- MMAL-accelerated H.264 decoding
 +- basic APNG encoder and muxer with default extension "apng"
 +- unpack DivX-style packed B-frames in MPEG-4 bitstream filter
 +- WebM Live Chunk Muxer
 +- nvenc level and tier options
 +- chorus filter
 +- Canopus HQ/HQA decoder
 +- Automatically rotate videos based on metadata in ffmpeg
 +- improved Quickdraw compatibility
 +- VP9 high bit-depth and extended colorspaces decoding support
 +- WebPAnimEncoder API when available for encoding and muxing WebP
 +- Direct3D11-accelerated decoding
 +- Support Secure Transport
 +- Multipart JPEG demuxer
 +
 +
 +version 2.6:
 +- nvenc encoder
 +- 10bit spp filter
 +- colorlevels filter
 +- RIFX format for *.wav files
  - RTP/mpegts muxer
 -- VP8 in Ogg demuxing
 +- non continuous cache protocol support
 +- tblend filter
 +- cropdetect support for non 8bpp, absolute (if limit >= 1) and relative (if limit < 1.0) threshold
 +- Camellia symmetric block cipher
  - OpenH264 encoder wrapper
 +- VOC seeking support
 +- Closed caption Decoder
 +- fspp, uspp, pp7 MPlayer postprocessing filters ported to native filters
 +- showpalette filter
 +- Twofish symmetric block cipher
  - Support DNx100 (960x720@8)
 -- Direct3D11-accelerated decoding
 +- eq2 filter ported from libmpcodecs as eq filter
 +- removed libmpcodecs
 +- Changed default DNxHD colour range in QuickTime .mov derivatives to mpeg range
 +- ported softpulldown filter from libmpcodecs as repeatfields filter
 +- dcshift filter
 +- RTP depacketizer for loss tolerant payload format for MP3 audio (RFC 5219)
 +- RTP depacketizer for AC3 payload format (RFC 4184)
 +- palettegen and paletteuse filters
 +- VP9 RTP payload format (draft 0) experimental depacketizer
 +- RTP depacketizer for DV (RFC 6469)
  - DXVA2-accelerated HEVC decoding
  - AAC ELD 480 decoding
  - Intel QSV-accelerated H.264 decoding
diff --cc LICENSE.md
index 640633c,0000000..ba65b05
mode 100644,000000..100644
--- /dev/null
@@@ -1,121 -1,0 +1,120 @@@
- - the X11 grabber in `libavdevice/x11grab.c`
 +# License
 +
 +Most files in FFmpeg are under the GNU Lesser General Public License version 2.1
 +or later (LGPL v2.1+). Read the file `COPYING.LGPLv2.1` for details. Some other
 +files have MIT/X11/BSD-style licenses. In combination the LGPL v2.1+ applies to
 +FFmpeg.
 +
 +Some optional parts of FFmpeg are licensed under the GNU General Public License
 +version 2 or later (GPL v2+). See the file `COPYING.GPLv2` for details. None of
 +these parts are used by default, you have to explicitly pass `--enable-gpl` to
 +configure to activate them. In this case, FFmpeg's license changes to GPL v2+.
 +
 +Specifically, the GPL parts of FFmpeg are:
 +
 +- libpostproc
 +- optional x86 optimization in the files
 +    - `libavcodec/x86/flac_dsp_gpl.asm`
 +    - `libavcodec/x86/idct_mmx.c`
 +    - `libavfilter/x86/vf_removegrain.asm`
 +- the following building and testing tools
 +    - `compat/solaris/make_sunver.pl`
 +    - `doc/t2h.pm`
 +    - `doc/texi2pod.pl`
 +    - `libswresample/swresample-test.c`
 +    - `tests/checkasm/*`
 +    - `tests/tiny_ssim.c`
 +- the following filters in libavfilter:
 +    - `vf_blackframe.c`
 +    - `vf_boxblur.c`
 +    - `vf_colormatrix.c`
 +    - `vf_cover_rect.c`
 +    - `vf_cropdetect.c`
 +    - `vf_delogo.c`
 +    - `vf_eq.c`
 +    - `vf_find_rect.c`
 +    - `vf_fspp.c`
 +    - `vf_geq.c`
 +    - `vf_histeq.c`
 +    - `vf_hqdn3d.c`
 +    - `vf_interlace.c`
 +    - `vf_kerndeint.c`
 +    - `vf_mcdeint.c`
 +    - `vf_mpdecimate.c`
 +    - `vf_owdenoise.c`
 +    - `vf_perspective.c`
 +    - `vf_phase.c`
 +    - `vf_pp.c`
 +    - `vf_pp7.c`
 +    - `vf_pullup.c`
 +    - `vf_repeatfields.c`
 +    - `vf_sab.c`
 +    - `vf_smartblur.c`
 +    - `vf_spp.c`
 +    - `vf_stereo3d.c`
 +    - `vf_super2xsai.c`
 +    - `vf_tinterlace.c`
 +    - `vf_uspp.c`
 +    - `vsrc_mptestsrc.c`
 +
 +Should you, for whatever reason, prefer to use version 3 of the (L)GPL, then
 +the configure parameter `--enable-version3` will activate this licensing option
 +for you. Read the file `COPYING.LGPLv3` or, if you have enabled GPL parts,
 +`COPYING.GPLv3` to learn the exact legal terms that apply in this case.
 +
 +There are a handful of files under other licensing terms, namely:
 +
 +* The files `libavcodec/jfdctfst.c`, `libavcodec/jfdctint_template.c` and
 +  `libavcodec/jrevdct.c` are taken from libjpeg, see the top of the files for
 +  licensing details. Specifically note that you must credit the IJG in the
 +  documentation accompanying your program if you only distribute executables.
 +  You must also indicate any changes including additions and deletions to
 +  those three files in the documentation.
 +* `tests/reference.pnm` is under the expat license.
 +
 +
 +## External libraries
 +
 +FFmpeg can be combined with a number of external libraries, which sometimes
 +affect the licensing of binaries resulting from the combination.
 +
 +### Compatible libraries
 +
 +The following libraries are under GPL:
 +- frei0r
 +- libcdio
 +- librubberband
 +- libvidstab
 +- libx264
 +- libx265
 +- libxavs
 +- libxvid
 +
 +When combining them with FFmpeg, FFmpeg needs to be licensed as GPL as well by
 +passing `--enable-gpl` to configure.
 +
 +The OpenCORE and VisualOn libraries are under the Apache License 2.0. That
 +license is incompatible with the LGPL v2.1 and the GPL v2, but not with
 +version 3 of those licenses. So to combine these libraries with FFmpeg, the
 +license version needs to be upgraded by passing `--enable-version3` to configure.
 +
 +### Incompatible libraries
 +
 +There are certain libraries you can combine with FFmpeg whose licenses are not
 +compatible with the GPL and/or the LGPL. If you wish to enable these
 +libraries, even in circumstances that their license may be incompatible, pass
 +`--enable-nonfree` to configure. But note that if you enable any of these
 +libraries the resulting binary will be under a complex license mix that is
 +more restrictive than the LGPL and that may result in additional obligations.
 +It is possible that these restrictions cause the resulting binary to be
 +unredistributable.
 +
 +The Fraunhofer FDK AAC and OpenSSL libraries are under licenses which are
 +incompatible with the GPLv2 and v3. To the best of our knowledge, they are
 +compatible with the LGPL.
 +
 +The NVENC library, while its header file is licensed under the compatible MIT
 +license, requires a proprietary binary blob at run time, and is deemed to be
 +incompatible with the GPL. We are not certain if it is compatible with the
 +LGPL, but we require `--enable-nonfree` even with LGPL configurations in case
 +it is not.
diff --cc configure
+++ b/configure
@@@ -198,118 -182,66 +198,117 @@@ External library support
    libraries must be explicitly enabled.
  
    Also note that the following help text describes the purpose of the libraries
 -  themselves, not all their features will necessarily be usable by Libav.
 -
 -  --enable-avisynth          video frameserver
 -  --enable-bzlib             bzip2 compression [autodetect]
 -  --enable-frei0r            video filtering plugins
 -  --enable-gnutls            crypto
 -  --enable-libbs2b           Bauer stereophonic-to-binaural DSP
 -  --enable-libcdio           audio CD input
 -  --enable-libdc1394         IEEE 1394/Firewire camera input
 -  --enable-libdcadec         DCA audio decoding
 -  --enable-libfaac           AAC audio encoding
 -  --enable-libfdk-aac        AAC audio encoding/decoding
 -  --enable-libfontconfig     font configuration and management
 -  --enable-libfreetype       font rendering
 -  --enable-libgsm            GSM audio encoding/decoding
 -  --enable-libilbc           ILBC audio encoding/decoding
 -  --enable-libkvazaar        HEVC video encoding
 -  --enable-libmp3lame        MP3 audio encoding
 -  --enable-libopencore-amrnb AMR-NB audio encoding/decoding
 -  --enable-libopencore-amrwb AMR-WB audio decoding
 -  --enable-libopencv         computer vision
 -  --enable-libopenh264       H.264 video encoding/decoding
 -  --enable-libopenjpeg       JPEG 2000 image encoding/decoding
 -  --enable-libopus           Opus audio encoding/decoding
 -  --enable-libpulse          Pulseaudio sound server
 -  --enable-librtmp           RTMP streaming
 -  --enable-libschroedinger   Dirac video encoding/decoding
 -  --enable-libsnappy         snappy compression
 -  --enable-libspeex          Speex audio encoding/decoding
 -  --enable-libtheora         Theora video encoding/decoding
 -  --enable-libtwolame        MP2 audio encoding
 -  --enable-libvo-aacenc      AAC audio encoding
 -  --enable-libvo-amrwbenc    AMR-WB audio encoding
 -  --enable-libvorbis         Vorbis audio encoding/decoding
 -  --enable-libvpx            VP* video encoding/decoding
 -  --enable-libwavpack        Wavpack audio encoding/decoding
 -  --enable-libwebp           WebP image encoding/decoding
 -  --enable-libx264           H.264 video encoding
 -  --enable-libx265           HEVC video encoding
 -  --enable-libxavs           Chinese AVS video encoding
 -  --enable-libxcb            X window system protocol communication
 -  --enable-libxcb-shm        X11 shm communication [auto]
 -  --enable-libxcb-xfixes     X11 mouse rendering [auto]
 -  --enable-libxvid           MPEG-4 ASP video encoding
 -  --enable-openssl           crypto
 -  --enable-zlib              compression [autodetect]
 +  themselves, not all their features will necessarily be usable by FFmpeg.
 +
 +  --enable-avisynth        enable reading of AviSynth script files [no]
 +  --disable-bzlib          disable bzlib [autodetect]
 +  --enable-chromaprint     enable audio fingerprinting with chromaprint [no]
 +  --enable-frei0r          enable frei0r video filtering [no]
 +  --enable-gcrypt          enable gcrypt, needed for rtmp(t)e support
 +                           if openssl, librtmp or gmp is not used [no]
 +  --enable-gmp             enable gmp, needed for rtmp(t)e support
 +                           if openssl or librtmp is not used [no]
 +  --enable-gnutls          enable gnutls, needed for https support
 +                           if openssl is not used [no]
 +  --disable-iconv          disable iconv [autodetect]
 +  --enable-jni             enable JNI support [no]
 +  --enable-ladspa          enable LADSPA audio filtering [no]
 +  --enable-libass          enable libass subtitles rendering,
 +                           needed for subtitles and ass filter [no]
 +  --enable-libbluray       enable BluRay reading using libbluray [no]
 +  --enable-libbs2b         enable bs2b DSP library [no]
 +  --enable-libcaca         enable textual display using libcaca [no]
 +  --enable-libcelt         enable CELT decoding via libcelt [no]
 +  --enable-libcdio         enable audio CD grabbing with libcdio [no]
 +  --enable-libdc1394       enable IIDC-1394 grabbing using libdc1394
 +                           and libraw1394 [no]
 +  --enable-libfdk-aac      enable AAC de/encoding via libfdk-aac [no]
 +  --enable-libflite        enable flite (voice synthesis) support via libflite [no]
 +  --enable-libfontconfig   enable libfontconfig, useful for drawtext filter [no]
 +  --enable-libfreetype     enable libfreetype, needed for drawtext filter [no]
 +  --enable-libfribidi      enable libfribidi, improves drawtext filter [no]
 +  --enable-libgme          enable Game Music Emu via libgme [no]
 +  --enable-libgsm          enable GSM de/encoding via libgsm [no]
 +  --enable-libiec61883     enable iec61883 via libiec61883 [no]
 +  --enable-libilbc         enable iLBC de/encoding via libilbc [no]
 +  --enable-libkvazaar      enable HEVC encoding via libkvazaar [no]
 +  --enable-libmodplug      enable ModPlug via libmodplug [no]
 +  --enable-libmp3lame      enable MP3 encoding via libmp3lame [no]
 +  --enable-libnut          enable NUT (de)muxing via libnut,
 +                           native (de)muxer exists [no]
 +  --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
 +  --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
 +  --enable-libopencv       enable video filtering via libopencv [no]
 +  --enable-libopenh264     enable H.264 encoding via OpenH264 [no]
 +  --enable-libopenjpeg     enable JPEG 2000 de/encoding via OpenJPEG [no]
 +  --enable-libopenmpt      enable decoding tracked files via libopenmpt [no]
 +  --enable-libopus         enable Opus de/encoding via libopus [no]
 +  --enable-libpulse        enable Pulseaudio input via libpulse [no]
 +  --enable-librubberband   enable rubberband needed for rubberband filter [no]
 +  --enable-librtmp         enable RTMP[E] support via librtmp [no]
 +  --enable-libschroedinger enable Dirac de/encoding via libschroedinger [no]
 +  --enable-libshine        enable fixed-point MP3 encoding via libshine [no]
 +  --enable-libsmbclient    enable Samba protocol via libsmbclient [no]
 +  --enable-libsnappy       enable Snappy compression, needed for hap encoding [no]
 +  --enable-libsoxr         enable Include libsoxr resampling [no]
 +  --enable-libspeex        enable Speex de/encoding via libspeex [no]
 +  --enable-libssh          enable SFTP protocol via libssh [no]
 +  --enable-libtesseract    enable Tesseract, needed for ocr filter [no]
 +  --enable-libtheora       enable Theora encoding via libtheora [no]
 +  --enable-libtwolame      enable MP2 encoding via libtwolame [no]
 +  --enable-libv4l2         enable libv4l2/v4l-utils [no]
 +  --enable-libvidstab      enable video stabilization using vid.stab [no]
 +  --enable-libvo-amrwbenc  enable AMR-WB encoding via libvo-amrwbenc [no]
 +  --enable-libvorbis       enable Vorbis en/decoding via libvorbis,
 +                           native implementation exists [no]
 +  --enable-libvpx          enable VP8 and VP9 de/encoding via libvpx [no]
 +  --enable-libwavpack      enable wavpack encoding via libwavpack [no]
 +  --enable-libwebp         enable WebP encoding via libwebp [no]
 +  --enable-libx264         enable H.264 encoding via x264 [no]
 +  --enable-libx265         enable HEVC encoding via x265 [no]
 +  --enable-libxavs         enable AVS encoding via xavs [no]
 +  --enable-libxcb          enable X11 grabbing using XCB [autodetect]
 +  --enable-libxcb-shm      enable X11 grabbing shm communication [autodetect]
 +  --enable-libxcb-xfixes   enable X11 grabbing mouse rendering [autodetect]
 +  --enable-libxcb-shape    enable X11 grabbing shape rendering [autodetect]
 +  --enable-libxvid         enable Xvid encoding via xvidcore,
 +                           native MPEG-4/Xvid encoder exists [no]
 +  --enable-libzimg         enable z.lib, needed for zscale filter [no]
 +  --enable-libzmq          enable message passing via libzmq [no]
 +  --enable-libzvbi         enable teletext support via libzvbi [no]
 +  --disable-lzma           disable lzma [autodetect]
 +  --enable-decklink        enable Blackmagic DeckLink I/O support [no]
 +  --enable-mediacodec      enable Android MediaCodec support [no]
 +  --enable-netcdf          enable NetCDF, needed for sofalizer filter [no]
 +  --enable-openal          enable OpenAL 1.1 capture support [no]
 +  --enable-opencl          enable OpenCL code
 +  --enable-opengl          enable OpenGL rendering [no]
 +  --enable-openssl         enable openssl, needed for https support
 +                           if gnutls is not used [no]
 +  --disable-schannel       disable SChannel SSP, needed for TLS support on
 +                           Windows if openssl and gnutls are not used [autodetect]
 +  --disable-sdl2           disable sdl2 [autodetect]
 +  --disable-securetransport disable Secure Transport, needed for TLS support
 +                           on OSX if openssl and gnutls are not used [autodetect]
-   --enable-x11grab         enable X11 grabbing (legacy) [no]
 +  --disable-xlib           disable xlib [autodetect]
 +  --disable-zlib           disable zlib [autodetect]
  
    The following libraries provide various hardware acceleration features:
 -  --enable-cuda    Nvidia CUDA (dynamically linked)
 -  --enable-d3d11va Microsoft Direct3D 11 video acceleration [auto]
 -  --enable-dxva2   Microsoft DirectX 9 video acceleration [auto]
 -  --enable-libmfx  Intel MediaSDK (AKA Quick Sync Video)
 -  --enable-libnpp  Nvidia CUDA processing
 -  --enable-mmal    Broadcom Multi-Media Abstraction Layer (Raspberry Pi)
 -  --enable-nvenc   Nvidia video encoding
 -  --enable-omx     OpenMAX IL
 -  --enable-omx-rpi OpenMAX IL for Raspberry Pi
 -  --enable-vaapi   Video Acceleration API (mainly Unix/Intel)
 -  --enable-vda     Apple Video Decode Acceleration [auto]
 -  --enable-vdpau   Nvidia Video Decode and Presentation API for Unix [auto]
 +  --disable-audiotoolbox   disable Apple AudioToolbox code [autodetect]
 +  --disable-cuda           disable dynamically linked Nvidia CUDA code [autodetect]
 +  --disable-cuvid          disable Nvidia CUVID support [autodetect]
 +  --disable-d3d11va        disable Microsoft Direct3D 11 video acceleration code [autodetect]
 +  --disable-dxva2          disable Microsoft DirectX 9 video acceleration code [autodetect]
 +  --enable-libmfx          enable Intel MediaSDK (AKA Quick Sync Video) code via libmfx [no]
 +  --enable-libnpp          enable Nvidia Performance Primitives-based code [no]
 +  --enable-mmal            enable Broadcom Multi-Media Abstraction Layer (Raspberry Pi) via MMAL [no]
 +  --disable-nvenc          disable Nvidia video encoding code [autodetect]
 +  --enable-omx             enable OpenMAX IL code [no]
 +  --enable-omx-rpi         enable OpenMAX IL code for Raspberry Pi [no]
 +  --disable-vaapi          disable Video Acceleration API (mainly Unix/Intel) code [autodetect]
 +  --disable-vda            disable Apple Video Decode Acceleration code [autodetect]
 +  --disable-vdpau          disable Nvidia Video Decode and Presentation API for Unix code [autodetect]
 +  --disable-videotoolbox   disable VideoToolbox code [autodetect]
  
  Toolchain options:
    --arch=ARCH              select architecture [$arch]
@@@ -3022,25 -2362,14 +3020,24 @@@ opengl_outdev_deps="opengl
  oss_indev_deps_any="soundcard_h sys_soundcard_h"
  oss_outdev_deps_any="soundcard_h sys_soundcard_h"
  pulse_indev_deps="libpulse"
 +pulse_outdev_deps="libpulse"
 +qtkit_indev_extralibs="-framework QTKit -framework Foundation -framework QuartzCore"
 +qtkit_indev_select="qtkit"
 +sdl2_outdev_deps="sdl2"
  sndio_indev_deps="sndio_h"
  sndio_outdev_deps="sndio_h"
 +v4l_indev_deps="linux_videodev_h"
  v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
 +v4l2_outdev_deps_any="linux_videodev2_h sys_videoio_h"
  vfwcap_indev_deps="capCreateCaptureWindow vfwcap_defines"
  vfwcap_indev_extralibs="-lavicap32"
- x11grab_indev_deps="x11grab"
  x11grab_xcb_indev_deps="libxcb"
 +xv_outdev_deps="X11_extensions_Xvlib_h XvGetPortAttribute"
 +xv_outdev_extralibs="-lXv -lX11 -lXext"
  
  # protocols
 +async_protocol_deps="threads"
 +bluray_protocol_deps="libbluray"
  ffrtmpcrypt_protocol_deps="!librtmp_protocol"
  ffrtmpcrypt_protocol_deps_any="gcrypt gmp openssl"
  ffrtmpcrypt_protocol_select="tcp_protocol"
@@@ -6029,57 -4747,27 +6026,51 @@@ if enabled libcdio; the
      die "ERROR: No usable libcdio/cdparanoia found"
  fi
  
 -check_lib X11/Xlib.h XOpenDisplay -lX11 && enable xlib
 +enabled xlib &&
 +    check_lib X11/Xlib.h XOpenDisplay -lX11 || disable xlib
  
 -if enabled libxcb; then
 -    check_pkg_config xcb-shape xcb/shape.h xcb_shape_rectangles || {
 -        enabled libxcb && die "ERROR: libxcb not found";
 +if ! disabled libxcb; then
 +    check_pkg_config "xcb >= 1.4" xcb/xcb.h xcb_connect || {
 +        enabled libxcb && die "ERROR: libxcb >= 1.4 not found";
-     } && disable x11grab && enable libxcb
+     } && enable libxcb
  
 -    disabled libxcb_shm ||
 +if enabled libxcb; then
 +    disabled libxcb_shm || {
          check_pkg_config xcb-shm xcb/shm.h xcb_shm_attach || {
              enabled libxcb_shm && die "ERROR: libxcb_shm not found";
 -        } && check_header sys/shm.h && enable libxcb_shm
 +        } && check_header sys/shm.h && enable libxcb_shm; }
  
 -    disabled libxcb_xfixes ||
 +    disabled libxcb_xfixes || {
          check_pkg_config xcb-xfixes xcb/xfixes.h xcb_xfixes_get_cursor_image || {
              enabled libxcb_xfixes && die "ERROR: libxcb_xfixes not found";
 -        } && enable libxcb_xfixes
 +        } && enable libxcb_xfixes; }
 +
 +    disabled libxcb_shape || {
 +        check_pkg_config xcb-shape xcb/shape.h xcb_shape_get_rectangles || {
 +            enabled libxcb_shape && die "ERROR: libxcb_shape not found";
 +        } && enable libxcb_shape; }
  
 -    add_cflags "$xcb_event_cflags $xcb_shm_cflags $xcb_xfixes_cflags"
 -    add_extralibs "$xcb_event_libs $xcb_shm_libs $xcb_xfixes_libs"
 +    add_cflags $xcb_cflags $xcb_shm_cflags $xcb_xfixes_cflags $xcb_shape_cflags
 +    add_extralibs $xcb_libs $xcb_shm_libs $xcb_xfixes_libs $xcb_shape_libs
 +fi
  fi
  
- if enabled x11grab; then
-     enabled xlib || die "ERROR: Xlib not found"
-     require Xext X11/extensions/XShm.h XShmCreateImage -lXext
-     require Xfixes X11/extensions/Xfixes.h XFixesGetCursorImage -lXfixes
- fi
 +check_func_headers "windows.h" CreateDIBSection "$gdigrab_indev_extralibs"
 +
 +enabled dxva2api_h &&
 +    check_cc <<EOF && enable dxva2api_cobj
 +#define _WIN32_WINNT 0x0600
 +#define COBJMACROS
 +#include <windows.h>
 +#include <d3d9.h>
 +#include <dxva2api.h>
 +int main(void) { IDirectXVideoDecoder *o = NULL; IDirectXVideoDecoder_Release(o); return 0; }
 +EOF
 +
 +enabled vaapi &&
 +    check_lib va/va.h vaInitialize -lva ||
 +    disable vaapi
 +
  enabled vaapi &&
      check_code cc "va/va.h" "vaCreateSurfaces(0, 0, 0, 0, 0, 0, 0, 0)" ||
      disable vaapi
@@@ -12,44 -9,21 +12,43 @@@ OBJS    = alldevices.
  OBJS-$(HAVE_LIBC_MSVCRT)                 += file_open.o
  
  # input/output devices
 -OBJS-$(CONFIG_ALSA_INDEV)                += alsa_dec.o alsa.o
 +OBJS-$(CONFIG_ALSA_INDEV)                += alsa_dec.o alsa.o timefilter.o
  OBJS-$(CONFIG_ALSA_OUTDEV)               += alsa_enc.o alsa.o
 -OBJS-$(CONFIG_AVFOUNDATION_INDEV)        += avfoundation_dec.o
 +OBJS-$(CONFIG_AVFOUNDATION_INDEV)        += avfoundation.o
  OBJS-$(CONFIG_BKTR_INDEV)                += bktr.o
 +OBJS-$(CONFIG_CACA_OUTDEV)               += caca.o
 +OBJS-$(CONFIG_DECKLINK_OUTDEV)           += decklink_enc.o decklink_enc_c.o decklink_common.o
 +OBJS-$(CONFIG_DECKLINK_INDEV)            += decklink_dec.o decklink_dec_c.o decklink_common.o
 +OBJS-$(CONFIG_DSHOW_INDEV)               += dshow_crossbar.o dshow.o dshow_enummediatypes.o \
 +                                            dshow_enumpins.o dshow_filter.o \
 +                                            dshow_pin.o dshow_common.o
  OBJS-$(CONFIG_DV1394_INDEV)              += dv1394.o
 -OBJS-$(CONFIG_FBDEV_INDEV)               += fbdev.o
 +OBJS-$(CONFIG_FBDEV_INDEV)               += fbdev_dec.o \
 +                                            fbdev_common.o
 +OBJS-$(CONFIG_FBDEV_OUTDEV)              += fbdev_enc.o \
 +                                            fbdev_common.o
 +OBJS-$(CONFIG_GDIGRAB_INDEV)             += gdigrab.o
 +OBJS-$(CONFIG_IEC61883_INDEV)            += iec61883.o
  OBJS-$(CONFIG_JACK_INDEV)                += jack.o timefilter.o
 +OBJS-$(CONFIG_LAVFI_INDEV)               += lavfi.o
 +OBJS-$(CONFIG_OPENAL_INDEV)              += openal-dec.o
 +OBJS-$(CONFIG_OPENGL_OUTDEV)             += opengl_enc.o
  OBJS-$(CONFIG_OSS_INDEV)                 += oss_dec.o oss.o
  OBJS-$(CONFIG_OSS_OUTDEV)                += oss_enc.o oss.o
 -OBJS-$(CONFIG_PULSE_INDEV)               += pulse.o
 +OBJS-$(CONFIG_PULSE_INDEV)               += pulse_audio_dec.o \
 +                                            pulse_audio_common.o timefilter.o
 +OBJS-$(CONFIG_PULSE_OUTDEV)              += pulse_audio_enc.o \
 +                                            pulse_audio_common.o
 +OBJS-$(CONFIG_QTKIT_INDEV)               += qtkit.o
 +OBJS-$(CONFIG_SDL2_OUTDEV)               += sdl2.o
  OBJS-$(CONFIG_SNDIO_INDEV)               += sndio_dec.o sndio.o
  OBJS-$(CONFIG_SNDIO_OUTDEV)              += sndio_enc.o sndio.o
 -OBJS-$(CONFIG_V4L2_INDEV)                += v4l2.o
 +OBJS-$(CONFIG_V4L2_INDEV)                += v4l2.o v4l2-common.o timefilter.o
 +OBJS-$(CONFIG_V4L2_OUTDEV)               += v4l2enc.o v4l2-common.o
 +OBJS-$(CONFIG_V4L_INDEV)                 += v4l.o
  OBJS-$(CONFIG_VFWCAP_INDEV)              += vfwcap.o
- OBJS-$(CONFIG_X11GRAB_INDEV)             += x11grab.o
  OBJS-$(CONFIG_X11GRAB_XCB_INDEV)         += xcbgrab.o
 +OBJS-$(CONFIG_XV_OUTDEV)                 += xv.o
  
  # external libraries
  OBJS-$(CONFIG_LIBCDIO_INDEV)             += libcdio.o
@@@ -44,28 -50,15 +44,27 @@@ static void register_all(void
      REGISTER_INOUTDEV(ALSA,             alsa);
      REGISTER_INDEV   (AVFOUNDATION,     avfoundation);
      REGISTER_INDEV   (BKTR,             bktr);
 +    REGISTER_OUTDEV  (CACA,             caca);
 +    REGISTER_INOUTDEV(DECKLINK,         decklink);
 +    REGISTER_INDEV   (DSHOW,            dshow);
      REGISTER_INDEV   (DV1394,           dv1394);
 -    REGISTER_INDEV   (FBDEV,            fbdev);
 +    REGISTER_INOUTDEV(FBDEV,            fbdev);
 +    REGISTER_INDEV   (GDIGRAB,          gdigrab);
 +    REGISTER_INDEV   (IEC61883,         iec61883);
      REGISTER_INDEV   (JACK,             jack);
 +    REGISTER_INDEV   (LAVFI,            lavfi);
 +    REGISTER_INDEV   (OPENAL,           openal);
 +    REGISTER_OUTDEV  (OPENGL,           opengl);
      REGISTER_INOUTDEV(OSS,              oss);
 -    REGISTER_INDEV   (PULSE,            pulse);
 +    REGISTER_INOUTDEV(PULSE,            pulse);
 +    REGISTER_INDEV   (QTKIT,            qtkit);
 +    REGISTER_OUTDEV  (SDL2,             sdl2);
      REGISTER_INOUTDEV(SNDIO,            sndio);
 -    REGISTER_INDEV   (V4L2,             v4l2);
 +    REGISTER_INOUTDEV(V4L2,             v4l2);
 +//    REGISTER_INDEV   (V4L,              v4l
      REGISTER_INDEV   (VFWCAP,           vfwcap);
-     REGISTER_INDEV   (X11GRAB,          x11grab);
      REGISTER_INDEV   (X11GRAB_XCB,      x11grab_xcb);
 +    REGISTER_OUTDEV  (XV,               xv);
  
      /* external libraries */
      REGISTER_INDEV   (LIBCDIO,          libcdio);
Simple merge