From patchwork Fri Mar 10 22:06:46 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sanchit Sinha X-Patchwork-Id: 2873 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.50.79 with SMTP id y76csp252268vsy; Fri, 10 Mar 2017 14:13:57 -0800 (PST) X-Received: by 10.28.44.66 with SMTP id s63mr810190wms.77.1489184037501; Fri, 10 Mar 2017 14:13:57 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id l28si14523558wrl.237.2017.03.10.14.13.56; Fri, 10 Mar 2017 14:13:57 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@iiitd.ac.in; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 50EB66891DD; Sat, 11 Mar 2017 00:13:38 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr0-f170.google.com (mail-wr0-f170.google.com [209.85.128.170]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 657BE6883CF for ; Sat, 11 Mar 2017 00:13:31 +0200 (EET) Received: by mail-wr0-f170.google.com with SMTP id l37so72940643wrc.1 for ; Fri, 10 Mar 2017 14:13:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iiitd.ac.in; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=BnaeIk44glKNVbcSWhU7TsVbXpO5+re6l8mfQJVSK5E=; b=C2p6/kVHpVwYHgT3lFEIPW5AnHNMRpXqRrw6yr2LjvmsiKr1jiLHg3NZ6dWtoSkKDS mwbnH/OWcxvKEVAER2hHwGonMx6A9lTi/VoDXFnuaCcKPDxViidBl++KEKsxcVmKp7YI deeBUMi3lYJ0CNIgO4Xh9AxYkOnbs/VAhW9eQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=BnaeIk44glKNVbcSWhU7TsVbXpO5+re6l8mfQJVSK5E=; b=QiFngUwhzEjWzTKrLgS7mWHW51aV1e2NdzItodSb8658DafKx1HFoK40uZ8tSh2rWX rgjCr6OYhM2m0Xr2pUvABmMjtLm39L5z8dgyxKPvVZpq31pOer6Ppimfkk9jvDDYOJzS jLgRC4lgS8OgdkZsRC3kAS7eipIOqXr/8epvuZ8ypLSsTW8PERDZG3iAl8KqZFacBLIi qwz7CdS20YQuJUFG65cxYjl1O/tbz9/Ezl9sGVRxE49vtmNPDPDfHAuFOPt0ya1wTQwU PfeHjGmOcpcRoCtCIWiYw7eZhQnmWrcXX0K+wh9GdNCBnUlBcMsXEgGTc0HWvU4N8+g2 MeOw== X-Gm-Message-State: AMke39lVpnfVJVPvZT+jPlYN6PFmA3GSikK2jv1tVVKiEkvONpby8tZzOA8rA36mGJlVYnqZ+9oSOCx7YYyUud6x X-Received: by 10.223.182.167 with SMTP id j39mr16719526wre.152.1489183607494; Fri, 10 Mar 2017 14:06:47 -0800 (PST) MIME-Version: 1.0 Received: by 10.80.139.131 with HTTP; Fri, 10 Mar 2017 14:06:46 -0800 (PST) In-Reply-To: References: From: Sanchit Sinha Date: Sat, 11 Mar 2017 03:36:46 +0530 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.20 Subject: Re: [FFmpeg-devel] [PATCH] libavfilter/af_ambisonic.c Added File for Ambisonic Filter X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Hi, I specific changes we talked about. Also updated apart from af_ambisonic.c : allfilters.c, Makefile and Changelog. From b74755ae0ea6741f01d2c1b2c79056984674c331 Mon Sep 17 00:00:00 2001 From: Sanchit Sinha Date: Sat, 11 Mar 2017 03:31:51 +0530 Subject: [PATCH] Changes to af_ambisonic, Makefile, allfilters.c and Changelog --- Changelog | 1591 ++++++++++++++++++++++++++++++++++++++++++++ libavfilter/Makefile | 375 +++++++++++ libavfilter/af_ambisonic.c | 137 ++++ libavfilter/allfilters.c | 383 +++++++++++ 4 files changed, 2486 insertions(+) create mode 100644 Changelog create mode 100644 libavfilter/Makefile create mode 100644 libavfilter/af_ambisonic.c create mode 100644 libavfilter/allfilters.c +} diff --git a/Changelog b/Changelog new file mode 100644 index 0000000..155c309 --- /dev/null +++ b/Changelog @@ -0,0 +1,1591 @@ +Entries are sorted chronologically from oldest to youngest within each release, +releases are sorted from youngest to oldest. + +version : +- 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 +- Ambisonic Decoder + +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 +- 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) +- 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 +- DSS SP decoder and DSS demuxer +- Fix stsd atom corruption in DNxHD QuickTimes +- Canopus HQX decoder +- RTP depacketization of T.140 text (RFC 4103) +- Port MIPS optimizations to 64-bit + + +version 2.5: +- HEVC/H.265 RTP payload format (draft v6) packetizer +- SUP/PGS subtitle demuxer +- ffprobe -show_pixel_formats option +- CAST128 symmetric block cipher, ECB mode +- STL subtitle demuxer and decoder +- libutvideo YUV 4:2:2 10bit support +- XCB-based screen-grabber +- UDP-Lite support (RFC 3828) +- xBR scaling filter +- AVFoundation screen capturing support +- ffserver supports codec private options +- creating DASH compatible fragmented MP4, MPEG-DASH segmenting muxer +- WebP muxer with animated WebP support +- zygoaudio decoding support +- APNG demuxer +- postproc visualization support + + +version 2.4: +- Icecast protocol +- ported lenscorrection filter from frei0r filter +- large optimizations in dctdnoiz to make it usable +- ICY metadata are now requested by default with the HTTP protocol +- support for using metadata in stream specifiers in fftools +- LZMA compression support in TIFF decoder +- H.261 RTP payload format (RFC 4587) depacketizer and experimental packetizer +- HEVC/H.265 RTP payload format (draft v6) depacketizer +- added codecview filter to visualize information exported by some codecs +- Matroska 3D support thorugh side data +- HTML generation using texi2html is deprecated in favor of makeinfo/texi2any +- silenceremove filter + + +version 2.3: +- AC3 fixed-point decoding +- shuffleplanes filter +- subfile protocol +- Phantom Cine demuxer +- replaygain data export +- VP7 video decoder +- Alias PIX image encoder and decoder +- Improvements to the BRender PIX image decoder +- Improvements to the XBM decoder +- QTKit input device +- improvements to OpenEXR image decoder +- support decoding 16-bit RLE SGI images +- GDI screen grabbing for Windows +- alternative rendition support for HTTP Live Streaming +- AVFoundation input device +- Direct Stream Digital (DSD) decoder +- Magic Lantern Video (MLV) demuxer +- On2 AVC (Audio for Video) decoder +- support for decoding through DXVA2 in ffmpeg +- libbs2b-based stereo-to-binaural audio filter +- libx264 reference frames count limiting depending on level +- native Opus decoder +- display matrix export and rotation API +- WebVTT encoder +- showcqt multimedia filter +- zoompan filter +- signalstats filter +- hqx filter (hq2x, hq3x, hq4x) +- flanger filter +- Image format auto-detection +- LRC demuxer and muxer +- Samba protocol (via libsmbclient) +- WebM DASH Manifest muxer +- libfribidi support in drawtext + + +version 2.2: + +- HNM version 4 demuxer and video decoder +- Live HDS muxer +- setsar/setdar filters now support variables in ratio expressions +- elbg filter +- string validation in ffprobe +- support for decoding through VDPAU in ffmpeg (the -hwaccel option) +- complete Voxware MetaSound decoder +- remove mp3_header_compress bitstream filter +- Windows resource files for shared libraries +- aeval filter +- stereoscopic 3d metadata handling +- WebP encoding via libwebp +- ATRAC3+ decoder +- VP8 in Ogg demuxing +- side & metadata support in NUT +- framepack filter +- XYZ12 rawvideo support in NUT +- Exif metadata support in WebP decoder +- OpenGL device +- Use metadata_header_padding to control padding in ID3 tags (currently used in + MP3, AIFF, and OMA files), FLAC header, and the AVI "junk" block. +- Mirillis FIC video decoder +- Support DNx444 +- libx265 encoder +- dejudder filter +- Autodetect VDA like all other hardware accelerations +- aliases and defaults for Ogg subtypes (opus, spx) + + +version 2.1: + +- aecho filter +- perspective filter ported from libmpcodecs +- ffprobe -show_programs option +- compand filter +- RTMP seek support +- when transcoding with ffmpeg (i.e. not streamcopying), -ss is now accurate + even when used as an input option. Previous behavior can be restored with + the -noaccurate_seek option. +- ffmpeg -t option can now be used for inputs, to limit the duration of + data read from an input file +- incomplete Voxware MetaSound decoder +- read EXIF metadata from JPEG +- DVB teletext decoder +- phase filter ported from libmpcodecs +- w3fdif filter +- Opus support in Matroska +- FFV1 version 1.3 is stable and no longer experimental +- FFV1: YUVA(444,422,420) 9, 10 and 16 bit support +- changed DTS stream id in lavf mpeg ps muxer from 0x8a to 0x88, to be + more consistent with other muxers. +- adelay filter +- pullup filter ported from libmpcodecs +- ffprobe -read_intervals option +- Lossless and alpha support for WebP decoder +- Error Resilient AAC syntax (ER AAC LC) decoding +- Low Delay AAC (ER AAC LD) decoding +- mux chapters in ASF files +- SFTP protocol (via libssh) +- libx264: add ability to encode in YUVJ422P and YUVJ444P +- Fraps: use BT.709 colorspace by default for yuv, as reference fraps decoder does +- make decoding alpha optional for prores, ffv1 and vp6 by setting + the skip_alpha flag. +- ladspa wrapper filter +- native VP9 decoder +- dpx parser +- max_error_rate parameter in ffmpeg +- PulseAudio output device +- ReplayGain scanner +- Enhanced Low Delay AAC (ER AAC ELD) decoding (no LD SBR support) +- Linux framebuffer output device +- HEVC decoder +- raw HEVC, HEVC in MOV/MP4, HEVC in Matroska, HEVC in MPEG-TS demuxing +- mergeplanes filter + + +version 2.0: + +- curves filter +- reference-counting for AVFrame and AVPacket data +- ffmpeg now fails when input options are used for output file + or vice versa +- support for Monkey's Audio versions from 3.93 +- perms and aperms filters +- audio filtering support in ffplay +- 10% faster aac encoding on x86 and MIPS +- sine audio filter source +- WebP demuxing and decoding support +- ffmpeg options -filter_script and -filter_complex_script, which allow a + filtergraph description to be read from a file +- OpenCL support +- audio phaser filter +- separatefields filter +- libquvi demuxer +- uniform options syntax across all filters +- telecine filter +- interlace filter +- smptehdbars source +- inverse telecine filters (fieldmatch and decimate) +- colorbalance filter +- colorchannelmixer filter +- The matroska demuxer can now output proper verbatim ASS packets. It will + become the default at the next libavformat major bump. +- decent native animated GIF encoding +- asetrate filter +- interleave filter +- timeline editing with filters +- vidstabdetect and vidstabtransform filters for video stabilization using + the vid.stab library +- astats filter +- trim and atrim filters +- ffmpeg -t and -ss (output-only) options are now sample-accurate when + transcoding audio +- Matroska muxer can now put the index at the beginning of the file. +- extractplanes filter +- avectorscope filter +- ADPCM DTK decoder +- ADP demuxer +- RSD demuxer +- RedSpark demuxer +- ADPCM IMA Radical decoder +- zmq filters +- DCT denoiser filter (dctdnoiz) +- Wavelet denoiser filter ported from libmpcodecs as owdenoise (formerly "ow") +- Apple Intermediate Codec decoder +- Escape 130 video decoder +- FTP protocol support +- V4L2 output device +- 3D LUT filter (lut3d) +- SMPTE 302M audio encoder +- support for slice multithreading in libavfilter +- Hald CLUT support (generation and filtering) +- VC-1 interlaced B-frame support +- support for WavPack muxing (raw and in Matroska) +- XVideo output device +- vignette filter +- True Audio (TTA) encoder +- Go2Webinar decoder +- mcdeint filter ported from libmpcodecs +- sab filter ported from libmpcodecs +- ffprobe -show_chapters option +- WavPack encoding through libwavpack +- rotate filter +- spp filter ported from libmpcodecs +- libgme support +- psnr filter + + +version 1.2: + +- VDPAU hardware acceleration through normal hwaccel +- SRTP support +- Error diffusion dither in Swscale +- Chained Ogg support +- Theora Midstream reconfiguration support +- EVRC decoder +- audio fade filter +- filtering audio with unknown channel layout +- allpass, bass, bandpass, bandreject, biquad, equalizer, highpass, lowpass + and treble audio filter +- improved showspectrum filter, with multichannel support and sox-like colors +- histogram filter +- tee muxer +- il filter ported from libmpcodecs +- support ID3v2 tags in ASF files +- encrypted TTA stream decoding support +- RF64 support in WAV muxer +- noise filter ported from libmpcodecs +- Subtitles character encoding conversion +- blend filter +- stereo3d filter ported from libmpcodecs + + +version 1.1: + +- stream disposition information printing in ffprobe +- filter for loudness analysis following EBU R128 +- Opus encoder using libopus +- ffprobe -select_streams option +- Pinnacle TARGA CineWave YUV16 decoder +- TAK demuxer, decoder and parser +- DTS-HD demuxer +- remove -same_quant, it hasn't worked for years +- FFM2 support +- X-Face image encoder and decoder +- 24-bit FLAC encoding +- multi-channel ALAC encoding up to 7.1 +- metadata (INFO tag) support in WAV muxer +- subtitles raw text decoder +- support for building DLLs using MSVC +- LVF demuxer +- ffescape tool +- metadata (info chunk) support in CAF muxer +- field filter ported from libmpcodecs +- AVR demuxer +- geq filter ported from libmpcodecs +- remove ffserver daemon mode +- AST muxer/demuxer +- new expansion syntax for drawtext +- BRender PIX image decoder +- ffprobe -show_entries option +- ffprobe -sections option +- ADPCM IMA Dialogic decoder +- BRSTM demuxer +- animated GIF decoder and demuxer +- PVF demuxer +- subtitles filter +- IRCAM muxer/demuxer +- Paris Audio File demuxer +- Virtual concatenation demuxer +- VobSub demuxer +- JSON captions for TED talks decoding support +- SOX Resampler support in libswresample +- aselect filter +- SGI RLE 8-bit / Silicon Graphics RLE 8-bit video decoder +- Silicon Graphics Motion Video Compressor 1 & 2 decoder +- Silicon Graphics Movie demuxer +- apad filter +- Resolution & pixel format change support with multithreading for H.264 +- documentation split into per-component manuals +- pp (postproc) filter ported from MPlayer +- NIST Sphere demuxer +- MPL2, VPlayer, MPlayer, AQTitle, PJS and SubViewer v1 subtitles demuxers and decoders +- Sony Wave64 muxer +- adobe and limelight publisher authentication in RTMP +- data: URI scheme +- support building on the Plan 9 operating system +- kerndeint filter ported from MPlayer +- histeq filter ported from VirtualDub +- Megalux Frame demuxer +- 012v decoder +- Improved AVC Intra decoding support + + +version 1.0: + +- INI and flat output in ffprobe +- Scene detection in libavfilter +- Indeo Audio decoder +- channelsplit audio filter +- setnsamples audio filter +- atempo filter +- ffprobe -show_data option +- RTMPT protocol support +- iLBC encoding/decoding via libilbc +- Microsoft Screen 1 decoder +- join audio filter +- audio channel mapping filter +- Microsoft ATC Screen decoder +- RTSP listen mode +- TechSmith Screen Codec 2 decoder +- AAC encoding via libfdk-aac +- Microsoft Expression Encoder Screen decoder +- RTMPS protocol support +- RTMPTS protocol support +- RTMPE protocol support +- RTMPTE protocol support +- showwaves and showspectrum filter +- LucasArts SMUSH SANM playback support +- LucasArts SMUSH VIMA audio decoder (ADPCM) +- LucasArts SMUSH demuxer +- SAMI, RealText and SubViewer demuxers and decoders +- Heart Of Darkness PAF playback support +- iec61883 device +- asettb filter +- new option: -progress +- 3GPP Timed Text encoder/decoder +- GeoTIFF decoder support +- ffmpeg -(no)stdin option +- Opus decoder using libopus +- caca output device using libcaca +- alphaextract and alphamerge filters +- concat filter +- flite filter +- Canopus Lossless Codec decoder +- bitmap subtitles in filters (experimental and temporary) +- MP2 encoding via TwoLAME +- bmp parser +- smptebars source +- asetpts filter +- hue filter +- ICO muxer +- SubRip encoder and decoder without embedded timing +- edge detection filter +- framestep filter +- ffmpeg -shortest option is now per-output file + -pass and -passlogfile are now per-output stream +- volume measurement filter +- Ut Video encoder +- Microsoft Screen 2 decoder +- smartblur filter ported from MPlayer +- CPiA decoder +- decimate filter ported from MPlayer +- RTP depacketization of JPEG +- Smooth Streaming live segmenter muxer +- F4V muxer +- sendcmd and asendcmd filters +- WebVTT demuxer and decoder (simple tags supported) +- RTP packetization of JPEG +- faststart option in the MOV/MP4 muxer +- support for building with MSVC + + +version 0.11: + +- Fixes: CVE-2012-2772, CVE-2012-2774, CVE-2012-2775, CVE-2012-2776, CVE-2012-2777, + CVE-2012-2779, CVE-2012-2782, CVE-2012-2783, CVE-2012-2784, CVE-2012-2785, + CVE-2012-2786, CVE-2012-2787, CVE-2012-2788, CVE-2012-2789, CVE-2012-2790, + CVE-2012-2791, CVE-2012-2792, CVE-2012-2793, CVE-2012-2794, CVE-2012-2795, + CVE-2012-2796, CVE-2012-2797, CVE-2012-2798, CVE-2012-2799, CVE-2012-2800, + CVE-2012-2801, CVE-2012-2802, CVE-2012-2803, CVE-2012-2804, +- v408 Quicktime and Microsoft AYUV Uncompressed 4:4:4:4 encoder and decoder +- setfield filter +- CDXL demuxer and decoder +- Apple ProRes encoder +- ffprobe -count_packets and -count_frames options +- Sun Rasterfile Encoder +- ID3v2 attached pictures reading and writing +- WMA Lossless decoder +- bluray protocol +- blackdetect filter +- libutvideo encoder wrapper (--enable-libutvideo) +- swapuv filter +- bbox filter +- XBM encoder and decoder +- RealAudio Lossless decoder +- ZeroCodec decoder +- tile video filter +- Metal Gear Solid: The Twin Snakes demuxer +- OpenEXR image decoder +- removelogo filter +- drop support for ffmpeg without libavfilter +- drawtext video filter: fontconfig support +- ffmpeg -benchmark_all option +- super2xsai filter ported from libmpcodecs +- add libavresample audio conversion library for compatibility +- MicroDVD decoder +- Avid Meridien (AVUI) encoder and decoder +- accept + prefix to -pix_fmt option to disable automatic conversions. +- complete audio filtering in libavfilter and ffmpeg +- add fps filter +- vorbis parser +- png parser +- audio mix filter +- ffv1: support (draft) version 1.3 + + +version 0.10: + +- Fixes: CVE-2011-3929, CVE-2011-3934, CVE-2011-3935, CVE-2011-3936, + CVE-2011-3937, CVE-2011-3940, CVE-2011-3941, CVE-2011-3944, + CVE-2011-3945, CVE-2011-3946, CVE-2011-3947, CVE-2011-3949, + CVE-2011-3950, CVE-2011-3951, CVE-2011-3952 +- v410 Quicktime Uncompressed 4:4:4 10-bit encoder and decoder +- SBaGen (SBG) binaural beats script demuxer +- OpenMG Audio muxer +- Timecode extraction in DV and MOV +- thumbnail video filter +- XML output in ffprobe +- asplit audio filter +- tinterlace video filter +- astreamsync audio filter +- amerge audio filter +- ISMV (Smooth Streaming) muxer +- GSM audio parser +- SMJPEG muxer +- XWD encoder and decoder +- Automatic thread count based on detection number of (available) CPU cores +- y41p Brooktree Uncompressed 4:1:1 12-bit encoder and decoder +- ffprobe -show_error option +- Avid 1:1 10-bit RGB Packer codec +- v308 Quicktime Uncompressed 4:4:4 encoder and decoder +- yuv4 libquicktime packed 4:2:0 encoder and decoder +- ffprobe -show_frames option +- silencedetect audio filter +- ffprobe -show_program_version, -show_library_versions, -show_versions options +- rv34: frame-level multi-threading +- optimized iMDCT transform on x86 using SSE for for mpegaudiodec +- Improved PGS subtitle decoder +- dumpgraph option to lavfi device +- r210 and r10k encoders +- ffwavesynth decoder +- aviocat tool +- ffeval tool +- support encoding and decoding 4-channel SGI images + + +version 0.9: + +- openal input device added +- boxblur filter added +- BWF muxer +- Flash Screen Video 2 decoder +- lavfi input device added +- added avconv, which is almost the same for now, except +for a few incompatible changes in the options, which will hopefully make them +easier to use. The changes are: + * The options placement is now strictly enforced! While in theory the + options for ffmpeg should be given in [input options] -i INPUT [output + options] OUTPUT order, in practice it was possible to give output options + before the -i and it mostly worked. Except when it didn't - the behavior was + a bit inconsistent. In avconv, it is not possible to mix input and output + options. All non-global options are reset after an input or output filename. + * All per-file options are now truly per-file - they apply only to the next + input or output file and specifying different values for different files + will now work properly (notably -ss and -t options). + * All per-stream options are now truly per-stream - it is possible to + specify which stream(s) should a given option apply to. See the Stream + specifiers section in the avconv manual for details. + * In ffmpeg some options (like -newvideo/-newaudio/...) are irregular in the + sense that they're specified after the output filename instead of before, + like all other options. In avconv this irregularity is removed, all options + apply to the next input or output file. + * -newvideo/-newaudio/-newsubtitle options were removed. Not only were they + irregular and highly confusing, they were also redundant. In avconv the -map + option will create new streams in the output file and map input streams to + them. E.g. avconv -i INPUT -map 0 OUTPUT will create an output stream for + each stream in the first input file. + * The -map option now has slightly different and more powerful syntax: + + Colons (':') are used to separate file index/stream type/stream index + instead of dots. Comma (',') is used to separate the sync stream instead + of colon.. This is done for consistency with other options. + + It's possible to specify stream type. E.g. -map 0:a:2 creates an + output stream from the third input audio stream. + + Omitting the stream index now maps all the streams of the given type, + not just the first. E.g. -map 0:s creates output streams for all the + subtitle streams in the first input file. + + Since -map can now match multiple streams, negative mappings were + introduced. Negative mappings disable some streams from an already + defined map. E.g. '-map 0 -map -0:a:1' means 'create output streams for + all the stream in the first input file, except for the second audio + stream'. + * There is a new option -c (or -codec) for choosing the decoder/encoder to + use, which makes it possible to precisely specify target stream(s) consistently with + other options. E.g. -c:v lib264 sets the codec for all video streams, -c:a:0 + libvorbis sets the codec for the first audio stream and -c copy copies all + the streams without reencoding. Old -vcodec/-acodec/-scodec options are now + aliases to -c:v/a/s + * It is now possible to precisely specify which stream should an AVOption + apply to. E.g. -b:v:0 2M sets the bitrate for the first video stream, while + -b:a 128k sets the bitrate for all audio streams. Note that the old -ab 128k + syntax is deprecated and will stop working soon. + * -map_chapters now takes only an input file index and applies to the next + output file. This is consistent with how all the other options work. + * -map_metadata now takes only an input metadata specifier and applies to + the next output file. Output metadata specifier is now part of the option + name, similarly to the AVOptions/map/codec feature above. + * -metadata can now be used to set metadata on streams and chapters, e.g. + -metadata:s:1 language=eng sets the language of the first stream to 'eng'. + This made -vlang/-alang/-slang options redundant, so they were removed. + * -qscale option now uses stream specifiers and applies to all streams, not + just video. I.e. plain -qscale number would now apply to all streams. To get + the old behavior, use -qscale:v. Also there is now a shortcut -q for -qscale + and -aq is now an alias for -q:a. + * -vbsf/-absf/-sbsf options were removed and replaced by a -bsf option which + uses stream specifiers. Use -bsf:v/a/s instead of the old options. + * -itsscale option now uses stream specifiers, so its argument is only the + scale parameter. + * -intra option was removed, use -g 0 for the same effect. + * -psnr option was removed, use -flags +psnr for the same effect. + * -vf option is now an alias to the new -filter option, which uses stream specifiers. + * -vframes/-aframes/-dframes options are now aliases to the new -frames option. + * -vtag/-atag/-stag options are now aliases to the new -tag option. +- XMV demuxer +- LOAS demuxer +- ashowinfo filter added +- Windows Media Image decoder +- amovie source added +- LATM muxer/demuxer +- Speex encoder via libspeex +- JSON output in ffprobe +- WTV muxer +- Optional C++ Support (needed for libstagefright) +- H.264 Decoding on Android via Stagefright +- Prores decoder +- BIN/XBIN/ADF/IDF text file decoder +- aconvert audio filter added +- audio support to lavfi input device added +- libcdio-paranoia input device for audio CD grabbing +- Apple ProRes decoder +- CELT in Ogg demuxing +- G.723.1 demuxer and decoder +- libmodplug support (--enable-libmodplug) +- VC-1 interlaced decoding +- libutvideo wrapper (--enable-libutvideo) +- aevalsrc audio source added +- Ut Video decoder +- Speex encoding via libspeex +- 4:2:2 H.264 decoding support +- 4:2:2 and 4:4:4 H.264 encoding with libx264 +- Pulseaudio input device +- Prores encoder +- Video Decoder Acceleration (VDA) HWAccel module. +- replacement Indeo 3 decoder +- new ffmpeg option: -map_channel +- volume audio filter added +- earwax audio filter added +- libv4l2 support (--enable-libv4l2) +- TLS/SSL and HTTPS protocol support +- AVOptions API rewritten and documented +- most of CODEC_FLAG2_*, some CODEC_FLAG_* and many codec-specific fields in + AVCodecContext deprecated. Codec private options should be used instead. +- Properly working defaults in libx264 wrapper, support for native presets. +- Encrypted OMA files support +- Discworld II BMV decoding support +- VBLE Decoder +- OS X Video Decoder Acceleration (VDA) support +- compact and csv output in ffprobe +- pan audio filter +- IFF Amiga Continuous Bitmap (ACBM) decoder +- ass filter +- CRI ADX audio format muxer and demuxer +- Playstation Portable PMP format demuxer +- Microsoft Windows ICO demuxer +- life source +- PCM format support in OMA demuxer +- CLJR encoder +- new option: -report +- Dxtory capture format decoder +- cellauto source +- Simple segmenting muxer +- Indeo 4 decoder +- SMJPEG demuxer + + +version 0.8: + +- many many things we forgot because we rather write code than changelogs +- WebM support in Matroska de/muxer +- low overhead Ogg muxing +- MMS-TCP support +- VP8 de/encoding via libvpx +- Demuxer for On2's IVF format +- Pictor/PC Paint decoder +- HE-AAC v2 decoder +- HE-AAC v2 encoding with libaacplus +- libfaad2 wrapper removed +- DTS-ES extension (XCh) decoding support +- native VP8 decoder +- RTSP tunneling over HTTP +- RTP depacketization of SVQ3 +- -strict inofficial replaced by -strict unofficial +- ffplay -exitonkeydown and -exitonmousedown options added +- native GSM / GSM MS decoder +- RTP depacketization of QDM2 +- ANSI/ASCII art playback system +- Lego Mindstorms RSO de/muxer +- libavcore added (and subsequently removed) +- SubRip subtitle file muxer and demuxer +- Chinese AVS encoding via libxavs +- ffprobe -show_packets option added +- RTP packetization of Theora and Vorbis +- RTP depacketization of MP4A-LATM +- RTP packetization and depacketization of VP8 +- hflip filter +- Apple HTTP Live Streaming demuxer +- a64 codec +- MMS-HTTP support +- G.722 ADPCM audio encoder/decoder +- R10k video decoder +- ocv_smooth filter +- frei0r wrapper filter +- change crop filter syntax to width:height:x:y +- make the crop filter accept parametric expressions +- make ffprobe accept AVFormatContext options +- yadif filter +- blackframe filter +- Demuxer for Leitch/Harris' VR native stream format (LXF) +- RTP depacketization of the X-QT QuickTime format +- SAP (Session Announcement Protocol, RFC 2974) muxer and demuxer +- cropdetect filter +- ffmpeg -crop* options removed +- transpose filter added +- ffmpeg -force_key_frames option added +- demuxer for receiving raw rtp:// URLs without an SDP description +- single stream LATM/LOAS decoder +- setpts filter added +- Win64 support for optimized x86 assembly functions +- MJPEG/AVI1 to JPEG/JFIF bitstream filter +- ASS subtitle encoder and decoder +- IEC 61937 encapsulation for E-AC-3, TrueHD, DTS-HD (for HDMI passthrough) +- overlay filter added +- rename aspect filter to setdar, and pixelaspect to setsar +- IEC 61937 demuxer +- Mobotix .mxg demuxer +- frei0r source added +- hqdn3d filter added +- RTP depacketization of QCELP +- FLAC parser added +- gradfun filter added +- AMR-WB decoder +- replace the ocv_smooth filter with a more generic ocv filter +- Windows Televison (WTV) demuxer +- FFmpeg metadata format muxer and demuxer +- SubRip (srt) subtitle encoder and decoder +- floating-point AC-3 encoder added +- Lagarith decoder +- ffmpeg -copytb option added +- IVF muxer added +- Wing Commander IV movies decoder added +- movie source added +- Bink version 'b' audio and video decoder +- Bitmap Brothers JV playback system +- Apple HTTP Live Streaming protocol handler +- sndio support for playback and record +- Linux framebuffer input device added +- Chronomaster DFA decoder +- DPX image encoder +- MicroDVD subtitle file muxer and demuxer +- Playstation Portable PMP format demuxer +- fieldorder video filter added +- AAC encoding via libvo-aacenc +- AMR-WB encoding via libvo-amrwbenc +- xWMA demuxer +- Mobotix MxPEG decoder +- VP8 frame-multithreading +- NEON optimizations for VP8 +- Lots of deprecated API cruft removed +- fft and imdct optimizations for AVX (Sandy Bridge) processors +- showinfo filter added +- SMPTE 302M AES3 audio decoder +- Apple Core Audio Format muxer +- 9 bits and 10 bits per sample support in the H.264 decoder +- 9 bits and 10 bits FFV1 encoding / decoding +- split filter added +- select filter added +- sdl output device added +- libmpcodecs video filter support (3 times as many filters than before) +- mpeg2 aspect ratio dection fixed +- libxvid aspect pickiness fixed +- Frame multithreaded decoding +- E-AC-3 audio encoder +- ac3enc: add channel coupling support +- floating-point sample format support to the ac3, eac3, dca, aac, and vorbis decoders. +- H264/MPEG frame-level multi-threading +- All av_metadata_* functions renamed to av_dict_* and moved to libavutil +- 4:4:4 H.264 decoding support +- 10-bit H.264 optimizations for x86 +- lut, lutrgb, and lutyuv filters added +- buffersink libavfilter sink added +- Bump libswscale for recently reported ABI break +- New J2K encoder (via OpenJPEG) + + +version 0.7: + +- all the changes for 0.8, but keeping API/ABI compatibility with the 0.6 release + + +version 0.6: + +- PB-frame decoding for H.263 +- deprecated vhook subsystem removed +- deprecated old scaler removed +- VQF demuxer +- Alpha channel scaler +- PCX encoder +- RTP packetization of H.263 +- RTP packetization of AMR +- RTP depacketization of Vorbis +- CorePNG decoding support +- Cook multichannel decoding support +- introduced avlanguage helpers in libavformat +- 8088flex TMV demuxer and decoder +- per-stream language-tags extraction in asfdec +- V210 decoder and encoder +- remaining GPL parts in AC-3 decoder converted to LGPL +- QCP demuxer +- SoX native format muxer and demuxer +- AMR-NB decoding/encoding, AMR-WB decoding via OpenCORE libraries +- DPX image decoder +- Electronic Arts Madcow decoder +- DivX (XSUB) subtitle encoder +- nonfree libamr support for AMR-NB/WB decoding/encoding removed +- experimental AAC encoder +- RTP depacketization of ASF and RTSP from WMS servers +- RTMP support in libavformat +- noX handling for OPT_BOOL X options +- Wave64 demuxer +- IEC-61937 compatible Muxer +- TwinVQ decoder +- Bluray (PGS) subtitle decoder +- LPCM support in MPEG-TS (HDMV RID as found on Blu-ray disks) +- WMA Pro decoder +- Core Audio Format demuxer +- ATRAC1 decoder +- MD STUDIO audio demuxer +- RF64 support in WAV demuxer +- MPEG-4 Audio Lossless Coding (ALS) decoder +- -formats option split into -formats, -codecs, -bsfs, and -protocols +- IV8 demuxer +- CDG demuxer and decoder +- R210 decoder +- Auravision Aura 1 and 2 decoders +- Deluxe Paint Animation playback system +- SIPR decoder +- Adobe Filmstrip muxer and demuxer +- RTP depacketization of H.263 +- Bink demuxer and audio/video decoders +- enable symbol versioning by default for linkers that support it +- IFF PBM/ILBM bitmap decoder +- concat protocol +- Indeo 5 decoder +- RTP depacketization of AMR +- WMA Voice decoder +- ffprobe tool +- AMR-NB decoder +- RTSP muxer +- HE-AAC v1 decoder +- Kega Game Video (KGV1) decoder +- VorbisComment writing for FLAC, Ogg FLAC and Ogg Speex files +- RTP depacketization of Theora +- HTTP Digest authentication +- RTMP/RTMPT/RTMPS/RTMPE/RTMPTE protocol support via librtmp +- Psygnosis YOP demuxer and video decoder +- spectral extension support in the E-AC-3 decoder +- unsharp video filter +- RTP hinting in the mov/3gp/mp4 muxer +- Dirac in Ogg demuxing +- seek to keyframes in Ogg +- 4:2:2 and 4:4:4 Theora decoding +- 35% faster VP3/Theora decoding +- faster AAC decoding +- faster H.264 decoding +- RealAudio 1.0 (14.4K) encoder + + +version 0.5: + +- DV50 AKA DVCPRO50 encoder, decoder, muxer and demuxer +- TechSmith Camtasia (TSCC) video decoder +- IBM Ultimotion (ULTI) video decoder +- Sierra Online audio file demuxer and decoder +- Apple QuickDraw (qdrw) video decoder +- Creative ADPCM audio decoder (16 bits as well as 8 bits schemes) +- Electronic Arts Multimedia (WVE/UV2/etc.) file demuxer +- Miro VideoXL (VIXL) video decoder +- H.261 video encoder +- QPEG video decoder +- Nullsoft Video (NSV) file demuxer +- Shorten audio decoder +- LOCO video decoder +- Apple Lossless Audio Codec (ALAC) decoder +- Winnov WNV1 video decoder +- Autodesk Animator Studio Codec (AASC) decoder +- Indeo 2 video decoder +- Fraps FPS1 video decoder +- Snow video encoder/decoder +- Sonic audio encoder/decoder +- Vorbis audio decoder +- Macromedia ADPCM decoder +- Duck TrueMotion 2 video decoder +- support for decoding FLX and DTA extensions in FLIC files +- H.264 custom quantization matrices support +- ffserver fixed, it should now be usable again +- QDM2 audio decoder +- Real Cooker audio decoder +- TrueSpeech audio decoder +- WMA2 audio decoder fixed, now all files should play correctly +- RealAudio 14.4 and 28.8 decoders fixed +- JPEG-LS decoder +- build system improvements +- tabs and trailing whitespace removed from the codebase +- CamStudio video decoder +- AIFF/AIFF-C audio format, encoding and decoding +- ADTS AAC file reading and writing +- Creative VOC file reading and writing +- American Laser Games multimedia (*.mm) playback system +- Zip Motion Blocks Video decoder +- improved Theora/VP3 decoder +- True Audio (TTA) decoder +- AVS demuxer and video decoder +- JPEG-LS encoder +- Smacker demuxer and decoder +- NuppelVideo/MythTV demuxer and RTjpeg decoder +- KMVC decoder +- MPEG-2 intra VLC support +- MPEG-2 4:2:2 encoder +- Flash Screen Video decoder +- GXF demuxer +- Chinese AVS decoder +- GXF muxer +- MXF demuxer +- VC-1/WMV3/WMV9 video decoder +- MacIntel support +- AviSynth support +- VMware video decoder +- VP5 video decoder +- VP6 video decoder +- WavPack lossless audio decoder +- Targa (.TGA) picture decoder +- Vorbis audio encoder +- Delphine Software .cin demuxer/audio and video decoder +- Tiertex .seq demuxer/video decoder +- MTV demuxer +- TIFF picture encoder and decoder +- GIF picture decoder +- Intel Music Coder decoder +- Zip Motion Blocks Video encoder +- Musepack decoder +- Flash Screen Video encoder +- Theora encoding via libtheora +- BMP encoder +- WMA encoder +- GSM-MS encoder and decoder +- DCA decoder +- DXA demuxer and decoder +- DNxHD decoder +- Gamecube movie (.THP) playback system +- Blackfin optimizations +- Interplay C93 demuxer and video decoder +- Bethsoft VID demuxer and video decoder +- CRYO APC demuxer +- ATRAC3 decoder +- V.Flash PTX decoder +- RoQ muxer, RoQ audio encoder +- Renderware TXD demuxer and decoder +- extern C declarations for C++ removed from headers +- sws_flags command line option +- codebook generator +- RoQ video encoder +- QTRLE encoder +- OS/2 support removed and restored again +- AC-3 decoder +- NUT muxer +- additional SPARC (VIS) optimizations +- Matroska muxer +- slice-based parallel H.264 decoding +- Monkey's Audio demuxer and decoder +- AMV audio and video decoder +- DNxHD encoder +- H.264 PAFF decoding +- Nellymoser ASAO decoder +- Beam Software SIFF demuxer and decoder +- libvorbis Vorbis decoding removed in favor of native decoder +- IntraX8 (J-Frame) subdecoder for WMV2 and VC-1 +- Ogg (Theora, Vorbis and FLAC) muxer +- The "device" muxers and demuxers are now in a new libavdevice library +- PC Paintbrush PCX decoder +- Sun Rasterfile decoder +- TechnoTrend PVA demuxer +- Linux Media Labs MPEG-4 (LMLM4) demuxer +- AVM2 (Flash 9) SWF muxer +- QT variant of IMA ADPCM encoder +- VFW grabber +- iPod/iPhone compatible mp4 muxer +- Mimic decoder +- MSN TCP Webcam stream demuxer +- RL2 demuxer / decoder +- IFF demuxer +- 8SVX audio decoder +- non-recursive Makefiles +- BFI demuxer +- MAXIS EA XA (.xa) demuxer / decoder +- BFI video decoder +- OMA demuxer +- MLP/TrueHD decoder +- Electronic Arts CMV decoder +- Motion Pixels Video decoder +- Motion Pixels MVI demuxer +- removed animated GIF decoder/demuxer +- D-Cinema audio muxer +- Electronic Arts TGV decoder +- Apple Lossless Audio Codec (ALAC) encoder +- AAC decoder +- floating point PCM encoder/decoder +- MXF muxer +- DV100 AKA DVCPRO HD decoder and demuxer +- E-AC-3 support added to AC-3 decoder +- Nellymoser ASAO encoder +- ASS and SSA demuxer and muxer +- liba52 wrapper removed +- SVQ3 watermark decoding support +- Speex decoding via libspeex +- Electronic Arts TGQ decoder +- RV40 decoder +- QCELP / PureVoice decoder +- RV30 decoder +- hybrid WavPack support +- R3D REDCODE demuxer +- ALSA support for playback and record +- Electronic Arts TQI decoder +- OpenJPEG based JPEG 2000 decoder +- NC (NC4600) camera file demuxer +- Gopher client support +- MXF D-10 muxer +- generic metadata API +- flash ScreenVideo2 encoder + + +version 0.4.9-pre1: + +- DV encoder, DV muxer +- Microsoft RLE video decoder +- Microsoft Video-1 decoder +- Apple Animation (RLE) decoder +- Apple Graphics (SMC) decoder +- Apple Video (RPZA) decoder +- Cinepak decoder +- Sega FILM (CPK) file demuxer +- Westwood multimedia support (VQA & AUD files) +- Id Quake II CIN playback support +- 8BPS video decoder +- FLIC playback support +- RealVideo 2.0 (RV20) decoder +- Duck TrueMotion v1 (DUCK) video decoder +- Sierra VMD demuxer and video decoder +- MSZH and ZLIB decoder support +- SVQ1 video encoder +- AMR-WB support +- PPC optimizations +- rate distortion optimal cbp support +- rate distorted optimal ac prediction for MPEG-4 +- rate distorted optimal lambda->qp support +- AAC encoding with libfaac +- Sunplus JPEG codec (SP5X) support +- use Lagrange multiplier instead of QP for ratecontrol +- Theora/VP3 decoding support +- XA and ADX ADPCM codecs +- export MPEG-2 active display area / pan scan +- Add support for configuring with IBM XLC +- floating point AAN DCT +- initial support for zygo video (not complete) +- RGB ffv1 support +- new audio/video parser API +- av_log() system +- av_read_frame() and av_seek_frame() support +- missing last frame fixes +- seek by mouse in ffplay +- noise reduction of DCT coefficients +- H.263 OBMC & 4MV support +- H.263 alternative inter vlc support +- H.263 loop filter +- H.263 slice structured mode +- interlaced DCT support for MPEG-2 encoding +- stuffing to stay above min_bitrate +- MB type & QP visualization +- frame stepping for ffplay +- interlaced motion estimation +- alternate scantable support +- SVCD scan offset support +- closed GOP support +- SSE2 FDCT +- quantizer noise shaping +- G.726 ADPCM audio codec +- MS ADPCM encoding +- multithreaded/SMP motion estimation +- multithreaded/SMP encoding for MPEG-1/MPEG-2/MPEG-4/H.263 +- multithreaded/SMP decoding for MPEG-2 +- FLAC decoder +- Metrowerks CodeWarrior suppport +- H.263+ custom pcf support +- nicer output for 'ffmpeg -formats' +- Matroska demuxer +- SGI image format, encoding and decoding +- H.264 loop filter support +- H.264 CABAC support +- nicer looking arrows for the motion vector visualization +- improved VCD support +- audio timestamp drift compensation +- MPEG-2 YUV 422/444 support +- polyphase kaiser windowed sinc and blackman nuttall windowed sinc audio resample +- better image scaling +- H.261 support +- correctly interleave packets during encoding +- VIS optimized motion compensation +- intra_dc_precision>0 encoding support +- support reuse of motion vectors/MB types/field select values of the source video +- more accurate deblock filter +- padding support +- many optimizations and bugfixes +- FunCom ISS audio file demuxer and according ADPCM decoding + + +version 0.4.8: + +- MPEG-2 video encoding (Michael) +- Id RoQ playback subsystem (Mike Melanson and Tim Ferguson) +- Wing Commander III Movie (.mve) file playback subsystem (Mike Melanson + and Mario Brito) +- Xan DPCM audio decoder (Mario Brito) +- Interplay MVE playback subsystem (Mike Melanson) +- Duck DK3 and DK4 ADPCM audio decoders (Mike Melanson) + + +version 0.4.7: + +- RealAudio 1.0 (14_4) and 2.0 (28_8) native decoders. Author unknown, code from mplayerhq + (originally from public domain player for Amiga at http://www.honeypot.net/audio) +- current version now also compiles with older GCC (Fabrice) +- 4X multimedia playback system including 4xm file demuxer (Mike + Melanson), and 4X video and audio codecs (Michael) +- Creative YUV (CYUV) decoder (Mike Melanson) +- FFV1 codec (our very simple lossless intra only codec, compresses much better + than HuffYUV) (Michael) +- ASV1 (Asus), H.264, Intel indeo3 codecs have been added (various) +- tiny PNG encoder and decoder, tiny GIF decoder, PAM decoder (PPM with + alpha support), JPEG YUV colorspace support. (Fabrice Bellard) +- ffplay has been replaced with a newer version which uses SDL (optionally) + for multiplatform support (Fabrice) +- Sorenson Version 3 codec (SVQ3) support has been added (decoding only) - donated + by anonymous +- AMR format has been added (Johannes Carlsson) +- 3GP support has been added (Johannes Carlsson) +- VP3 codec has been added (Mike Melanson) +- more MPEG-1/2 fixes +- better multiplatform support, MS Visual Studio fixes (various) +- AltiVec optimizations (Magnus Damn and others) +- SH4 processor support has been added (BERO) +- new public interfaces (avcodec_get_pix_fmt) (Roman Shaposhnick) +- VOB streaming support (Brian Foley) +- better MP3 autodetection (Andriy Rysin) +- qpel encoding (Michael) +- 4mv+b frames encoding finally fixed (Michael) +- chroma ME (Michael) +- 5 comparison functions for ME (Michael) +- B-frame encoding speedup (Michael) +- WMV2 codec (unfinished - Michael) +- user specified diamond size for EPZS (Michael) +- Playstation STR playback subsystem, still experimental (Mike and Michael) +- ASV2 codec (Michael) +- CLJR decoder (Alex) + +.. And lots more new enhancements and fixes. + + +version 0.4.6: + +- completely new integer only MPEG audio layer 1/2/3 decoder rewritten + from scratch +- Recoded DCT and motion vector search with gcc (no longer depends on nasm) +- fix quantization bug in AC3 encoder +- added PCM codecs and format. Corrected WAV/AVI/ASF PCM issues +- added prototype ffplay program +- added GOB header parsing on H.263/H.263+ decoder (Juanjo) +- bug fix on MCBPC tables of H.263 (Juanjo) +- bug fix on DC coefficients of H.263 (Juanjo) +- added Advanced Prediction Mode on H.263/H.263+ decoder (Juanjo) +- now we can decode H.263 streams found in QuickTime files (Juanjo) +- now we can decode H.263 streams found in VIVO v1 files(Juanjo) +- preliminary RTP "friendly" mode for H.263/H.263+ coding. (Juanjo) +- added GOB header for H.263/H.263+ coding on RTP mode (Juanjo) +- now H.263 picture size is returned on the first decoded frame (Juanjo) +- added first regression tests +- added MPEG-2 TS demuxer +- new demux API for libav +- more accurate and faster IDCT (Michael) +- faster and entropy-controlled motion search (Michael) +- two pass video encoding (Michael) +- new video rate control (Michael) +- added MSMPEG4V1, MSMPEGV2 and WMV1 support (Michael) +- great performance improvement of video encoders and decoders (Michael) +- new and faster bit readers and vlc parsers (Michael) +- high quality encoding mode: tries all macroblock/VLC types (Michael) +- added DV video decoder +- preliminary RTP/RTSP support in ffserver and libavformat +- H.263+ AIC decoding/encoding support (Juanjo) +- VCD MPEG-PS mode (Juanjo) +- PSNR stuff (Juanjo) +- simple stats output (Juanjo) +- 16-bit and 15-bit RGB/BGR/GBR support (Bisqwit) + + +version 0.4.5: + +- some header fixes (Zdenek Kabelac ) +- many MMX optimizations (Nick Kurshev ) +- added configure system (actually a small shell script) +- added MPEG audio layer 1/2/3 decoding using LGPL'ed mpglib by + Michael Hipp (temporary solution - waiting for integer only + decoder) +- fixed VIDIOCSYNC interrupt +- added Intel H.263 decoding support ('I263' AVI fourCC) +- added Real Video 1.0 decoding (needs further testing) +- simplified image formats again. Added PGM format (=grey + pgm). Renamed old PGM to PGMYUV. +- fixed msmpeg4 slice issues (tell me if you still find problems) +- fixed OpenDivX bugs with newer versions (added VOL header decoding) +- added support for MPlayer interface +- added macroblock skip optimization +- added MJPEG decoder +- added mmx/mmxext IDCT from libmpeg2 +- added pgmyuvpipe, ppm, and ppm_pipe formats (original patch by Celer + ) +- added pixel format conversion layer (e.g. for MJPEG or PPM) +- added deinterlacing option +- MPEG-1/2 fixes +- MPEG-4 vol header fixes (Jonathan Marsden ) +- ARM optimizations (Lionel Ulmer ). +- Windows porting of file converter +- added MJPEG raw format (input/output) +- added JPEG image format support (input/output) + + +version 0.4.4: + +- fixed some std header definitions (Bjorn Lindgren + ). +- added MPEG demuxer (MPEG-1 and 2 compatible). +- added ASF demuxer +- added prototype RM demuxer +- added AC3 decoding (done with libac3 by Aaron Holtzman) +- added decoding codec parameter guessing (.e.g. for MPEG, because the + header does not include them) +- fixed header generation in MPEG-1, AVI and ASF muxer: wmplayer can now + play them (only tested video) +- fixed H.263 white bug +- fixed phase rounding in img resample filter +- add MMX code for polyphase img resample filter +- added CPU autodetection +- added generic title/author/copyright/comment string handling (ASF and RM + use them) +- added SWF demux to extract MP3 track (not usable yet because no MP3 + decoder) +- added fractional frame rate support +- codecs are no longer searched by read_header() (should fix ffserver + segfault) + + +version 0.4.3: + +- BGR24 patch (initial patch by Jeroen Vreeken ) +- fixed raw yuv output +- added motion rounding support in MPEG-4 +- fixed motion bug rounding in MSMPEG4 +- added B-frame handling in video core +- added full MPEG-1 decoding support +- added partial (frame only) MPEG-2 support +- changed the FOURCC code for H.263 to "U263" to be able to see the + +AVI/H.263 file with the UB Video H.263+ decoder. MPlayer works with + this +codec ;) (JuanJo). +- Halfpel motion estimation after MB type selection (JuanJo) +- added pgm and .Y.U.V output format +- suppressed 'img:' protocol. Simply use: /tmp/test%d.[pgm|Y] as input or + output. +- added pgmpipe I/O format (original patch from Martin Aumueller + , but changed completely since we use a format + instead of a protocol) + + +version 0.4.2: + +- added H.263/MPEG-4/MSMPEG4 decoding support. MPEG-4 decoding support + (for OpenDivX) is almost complete: 8x8 MVs and rounding are + missing. MSMPEG4 support is complete. +- added prototype MPEG-1 decoder. Only I- and P-frames handled yet (it + can decode ffmpeg MPEGs :-)). +- added libavcodec API documentation (see apiexample.c). +- fixed image polyphase bug (the bottom of some images could be + greenish) +- added support for non clipped motion vectors (decoding only) + and image sizes non-multiple of 16 +- added support for AC prediction (decoding only) +- added file overwrite confirmation (can be disabled with -y) +- added custom size picture to H.263 using H.263+ (Juanjo) + + +version 0.4.1: + +- added MSMPEG4 (aka DivX) compatible encoder. Changed default codec + of AVI and ASF to DIV3. +- added -me option to set motion estimation method + (default=log). suppressed redundant -hq option. +- added options -acodec and -vcodec to force a given codec (useful for + AVI for example) +- fixed -an option +- improved dct_quantize speed +- factorized some motion estimation code + + +version 0.4.0: + +- removing grab code from ffserver and moved it to ffmpeg. Added + multistream support to ffmpeg. +- added timeshifting support for live feeds (option ?date=xxx in the + URL) +- added high quality image resize code with polyphase filter (need + mmx/see optimization). Enable multiple image size support in ffserver. +- added multi live feed support in ffserver +- suppressed master feature from ffserver (it should be done with an + external program which opens the .ffm url and writes it to another + ffserver) +- added preliminary support for video stream parsing (WAV and AVI half + done). Added proper support for audio/video file conversion in + ffmpeg. +- added preliminary support for video file sending from ffserver +- redesigning I/O subsystem: now using URL based input and output + (see avio.h) +- added WAV format support +- added "tty user interface" to ffmpeg to stop grabbing gracefully +- added MMX/SSE optimizations to SAD (Sums of Absolutes Differences) + (Juan J. Sierralta P. a.k.a. "Juanjo" ) +- added MMX DCT from mpeg2_movie 1.5 (Juanjo) +- added new motion estimation algorithms, log and phods (Juanjo) +- changed directories: libav for format handling, libavcodec for + codecs + + +version 0.3.4: + +- added stereo in MPEG audio encoder + + +version 0.3.3: + +- added 'high quality' mode which use motion vectors. It can be used in + real time at low resolution. +- fixed rounding problems which caused quality problems at high + bitrates and large GOP size + + +version 0.3.2: small fixes + +- ASF fixes +- put_seek bug fix + + +version 0.3.1: added avi/divx support + +- added AVI support +- added MPEG-4 codec compatible with OpenDivX. It is based on the H.263 codec +- added sound for flash format (not tested) + + +version 0.3: initial public release \ No newline at end of file diff --git a/libavfilter/Makefile b/libavfilter/Makefile new file mode 100644 index 0000000..e89b1b8 --- /dev/null +++ b/libavfilter/Makefile @@ -0,0 +1,375 @@ +include $(SUBDIR)../config.mak + +NAME = avfilter + +HEADERS = avfilter.h \ + avfiltergraph.h \ + buffersink.h \ + buffersrc.h \ + version.h \ + +OBJS = allfilters.o \ + audio.o \ + avfilter.o \ + avfiltergraph.o \ + buffersink.o \ + buffersrc.o \ + drawutils.o \ + fifo.o \ + formats.o \ + framepool.o \ + framequeue.o \ + graphdump.o \ + graphparser.o \ + opencl_allkernels.o \ + transform.o \ + video.o \ + +OBJS-$(HAVE_THREADS) += pthread.o + +# audio filters +OBJS-$(CONFIG_AMBISONIC_FILTER) += af_ambisonic.o +OBJS-$(CONFIG_ABENCH_FILTER) += f_bench.o +OBJS-$(CONFIG_ACOMPRESSOR_FILTER) += af_sidechaincompress.o +OBJS-$(CONFIG_ACROSSFADE_FILTER) += af_afade.o +OBJS-$(CONFIG_ACRUSHER_FILTER) += af_acrusher.o +OBJS-$(CONFIG_ADELAY_FILTER) += af_adelay.o +OBJS-$(CONFIG_AECHO_FILTER) += af_aecho.o +OBJS-$(CONFIG_AEMPHASIS_FILTER) += af_aemphasis.o +OBJS-$(CONFIG_AEVAL_FILTER) += aeval.o +OBJS-$(CONFIG_AFADE_FILTER) += af_afade.o +OBJS-$(CONFIG_AFFTFILT_FILTER) += af_afftfilt.o window_func.o +OBJS-$(CONFIG_AFORMAT_FILTER) += af_aformat.o +OBJS-$(CONFIG_AGATE_FILTER) += af_agate.o +OBJS-$(CONFIG_AINTERLEAVE_FILTER) += f_interleave.o +OBJS-$(CONFIG_ALIMITER_FILTER) += af_alimiter.o +OBJS-$(CONFIG_ALLPASS_FILTER) += af_biquads.o +OBJS-$(CONFIG_ALOOP_FILTER) += f_loop.o +OBJS-$(CONFIG_AMERGE_FILTER) += af_amerge.o +OBJS-$(CONFIG_AMETADATA_FILTER) += f_metadata.o +OBJS-$(CONFIG_AMIX_FILTER) += af_amix.o +OBJS-$(CONFIG_ANEQUALIZER_FILTER) += af_anequalizer.o +OBJS-$(CONFIG_ANULL_FILTER) += af_anull.o +OBJS-$(CONFIG_APAD_FILTER) += af_apad.o +OBJS-$(CONFIG_APERMS_FILTER) += f_perms.o +OBJS-$(CONFIG_APHASER_FILTER) += af_aphaser.o generate_wave_table.o +OBJS-$(CONFIG_APULSATOR_FILTER) += af_apulsator.o +OBJS-$(CONFIG_AREALTIME_FILTER) += f_realtime.o +OBJS-$(CONFIG_ARESAMPLE_FILTER) += af_aresample.o +OBJS-$(CONFIG_AREVERSE_FILTER) += f_reverse.o +OBJS-$(CONFIG_ASELECT_FILTER) += f_select.o +OBJS-$(CONFIG_ASENDCMD_FILTER) += f_sendcmd.o +OBJS-$(CONFIG_ASETNSAMPLES_FILTER) += af_asetnsamples.o +OBJS-$(CONFIG_ASETPTS_FILTER) += setpts.o +OBJS-$(CONFIG_ASETRATE_FILTER) += af_asetrate.o +OBJS-$(CONFIG_ASETTB_FILTER) += settb.o +OBJS-$(CONFIG_ASHOWINFO_FILTER) += af_ashowinfo.o +OBJS-$(CONFIG_ASIDEDATA_FILTER) += f_sidedata.o +OBJS-$(CONFIG_ASPLIT_FILTER) += split.o +OBJS-$(CONFIG_ASTATS_FILTER) += af_astats.o +OBJS-$(CONFIG_ASTREAMSELECT_FILTER) += f_streamselect.o +OBJS-$(CONFIG_ASYNCTS_FILTER) += af_asyncts.o +OBJS-$(CONFIG_ATEMPO_FILTER) += af_atempo.o +OBJS-$(CONFIG_ATRIM_FILTER) += trim.o +OBJS-$(CONFIG_AZMQ_FILTER) += f_zmq.o +OBJS-$(CONFIG_BANDPASS_FILTER) += af_biquads.o +OBJS-$(CONFIG_BANDREJECT_FILTER) += af_biquads.o +OBJS-$(CONFIG_BASS_FILTER) += af_biquads.o +OBJS-$(CONFIG_BIQUAD_FILTER) += af_biquads.o +OBJS-$(CONFIG_BS2B_FILTER) += af_bs2b.o +OBJS-$(CONFIG_CHANNELMAP_FILTER) += af_channelmap.o +OBJS-$(CONFIG_CHANNELSPLIT_FILTER) += af_channelsplit.o +OBJS-$(CONFIG_CHORUS_FILTER) += af_chorus.o generate_wave_table.o +OBJS-$(CONFIG_COMPAND_FILTER) += af_compand.o +OBJS-$(CONFIG_COMPENSATIONDELAY_FILTER) += af_compensationdelay.o +OBJS-$(CONFIG_CRYSTALIZER_FILTER) += af_crystalizer.o +OBJS-$(CONFIG_DCSHIFT_FILTER) += af_dcshift.o +OBJS-$(CONFIG_DYNAUDNORM_FILTER) += af_dynaudnorm.o +OBJS-$(CONFIG_EARWAX_FILTER) += af_earwax.o +OBJS-$(CONFIG_EBUR128_FILTER) += f_ebur128.o +OBJS-$(CONFIG_EQUALIZER_FILTER) += af_biquads.o +OBJS-$(CONFIG_EXTRASTEREO_FILTER) += af_extrastereo.o +OBJS-$(CONFIG_FIREQUALIZER_FILTER) += af_firequalizer.o +OBJS-$(CONFIG_FLANGER_FILTER) += af_flanger.o generate_wave_table.o +OBJS-$(CONFIG_HDCD_FILTER) += af_hdcd.o +OBJS-$(CONFIG_HIGHPASS_FILTER) += af_biquads.o +OBJS-$(CONFIG_JOIN_FILTER) += af_join.o +OBJS-$(CONFIG_LADSPA_FILTER) += af_ladspa.o +OBJS-$(CONFIG_LOUDNORM_FILTER) += af_loudnorm.o ebur128.o +OBJS-$(CONFIG_LOWPASS_FILTER) += af_biquads.o +OBJS-$(CONFIG_PAN_FILTER) += af_pan.o +OBJS-$(CONFIG_REPLAYGAIN_FILTER) += af_replaygain.o +OBJS-$(CONFIG_RESAMPLE_FILTER) += af_resample.o +OBJS-$(CONFIG_RUBBERBAND_FILTER) += af_rubberband.o +OBJS-$(CONFIG_SIDECHAINCOMPRESS_FILTER) += af_sidechaincompress.o +OBJS-$(CONFIG_SIDECHAINGATE_FILTER) += af_agate.o +OBJS-$(CONFIG_SILENCEDETECT_FILTER) += af_silencedetect.o +OBJS-$(CONFIG_SILENCEREMOVE_FILTER) += af_silenceremove.o +OBJS-$(CONFIG_SOFALIZER_FILTER) += af_sofalizer.o +OBJS-$(CONFIG_STEREOTOOLS_FILTER) += af_stereotools.o +OBJS-$(CONFIG_STEREOWIDEN_FILTER) += af_stereowiden.o +OBJS-$(CONFIG_TREBLE_FILTER) += af_biquads.o +OBJS-$(CONFIG_TREMOLO_FILTER) += af_tremolo.o +OBJS-$(CONFIG_VIBRATO_FILTER) += af_vibrato.o generate_wave_table.o +OBJS-$(CONFIG_VOLUME_FILTER) += af_volume.o +OBJS-$(CONFIG_VOLUMEDETECT_FILTER) += af_volumedetect.o + +OBJS-$(CONFIG_AEVALSRC_FILTER) += aeval.o +OBJS-$(CONFIG_ANOISESRC_FILTER) += asrc_anoisesrc.o +OBJS-$(CONFIG_ANULLSRC_FILTER) += asrc_anullsrc.o +OBJS-$(CONFIG_FLITE_FILTER) += asrc_flite.o +OBJS-$(CONFIG_SINE_FILTER) += asrc_sine.o + +OBJS-$(CONFIG_ANULLSINK_FILTER) += asink_anullsink.o + +# video filters +OBJS-$(CONFIG_FOOBAR_FILTER) += vf_foobar.o +#new filter^^ +OBJS-$(CONFIG_ALPHAEXTRACT_FILTER) += vf_extractplanes.o +OBJS-$(CONFIG_ALPHAMERGE_FILTER) += vf_alphamerge.o +OBJS-$(CONFIG_ASS_FILTER) += vf_subtitles.o +OBJS-$(CONFIG_ATADENOISE_FILTER) += vf_atadenoise.o +OBJS-$(CONFIG_AVGBLUR_FILTER) += vf_avgblur.o +OBJS-$(CONFIG_BBOX_FILTER) += bbox.o vf_bbox.o +OBJS-$(CONFIG_BENCH_FILTER) += f_bench.o +OBJS-$(CONFIG_BITPLANENOISE_FILTER) += vf_bitplanenoise.o +OBJS-$(CONFIG_BLACKDETECT_FILTER) += vf_blackdetect.o +OBJS-$(CONFIG_BLACKFRAME_FILTER) += vf_blackframe.o +OBJS-$(CONFIG_BLEND_FILTER) += vf_blend.o dualinput.o framesync.o +OBJS-$(CONFIG_BOXBLUR_FILTER) += vf_boxblur.o +OBJS-$(CONFIG_BWDIF_FILTER) += vf_bwdif.o +OBJS-$(CONFIG_CHROMAKEY_FILTER) += vf_chromakey.o +OBJS-$(CONFIG_CIESCOPE_FILTER) += vf_ciescope.o +OBJS-$(CONFIG_CODECVIEW_FILTER) += vf_codecview.o +OBJS-$(CONFIG_COLORBALANCE_FILTER) += vf_colorbalance.o +OBJS-$(CONFIG_COLORCHANNELMIXER_FILTER) += vf_colorchannelmixer.o +OBJS-$(CONFIG_COLORKEY_FILTER) += vf_colorkey.o +OBJS-$(CONFIG_COLORLEVELS_FILTER) += vf_colorlevels.o +OBJS-$(CONFIG_COLORMATRIX_FILTER) += vf_colormatrix.o +OBJS-$(CONFIG_COLORSPACE_FILTER) += vf_colorspace.o colorspacedsp.o +OBJS-$(CONFIG_CONVOLUTION_FILTER) += vf_convolution.o +OBJS-$(CONFIG_COPY_FILTER) += vf_copy.o +OBJS-$(CONFIG_COREIMAGE_FILTER) += vf_coreimage.o +OBJS-$(CONFIG_COVER_RECT_FILTER) += vf_cover_rect.o lavfutils.o +OBJS-$(CONFIG_CROP_FILTER) += vf_crop.o +OBJS-$(CONFIG_CROPDETECT_FILTER) += vf_cropdetect.o +OBJS-$(CONFIG_CURVES_FILTER) += vf_curves.o +OBJS-$(CONFIG_DATASCOPE_FILTER) += vf_datascope.o +OBJS-$(CONFIG_DCTDNOIZ_FILTER) += vf_dctdnoiz.o +OBJS-$(CONFIG_DEBAND_FILTER) += vf_deband.o +OBJS-$(CONFIG_DECIMATE_FILTER) += vf_decimate.o +OBJS-$(CONFIG_DEFLATE_FILTER) += vf_neighbor.o +OBJS-$(CONFIG_DEINTERLACE_VAAPI_FILTER) += vf_deinterlace_vaapi.o +OBJS-$(CONFIG_DEJUDDER_FILTER) += vf_dejudder.o +OBJS-$(CONFIG_DELOGO_FILTER) += vf_delogo.o +OBJS-$(CONFIG_DESHAKE_FILTER) += vf_deshake.o +OBJS-$(CONFIG_DETELECINE_FILTER) += vf_detelecine.o +OBJS-$(CONFIG_DILATION_FILTER) += vf_neighbor.o +OBJS-$(CONFIG_DISPLACE_FILTER) += vf_displace.o framesync.o +OBJS-$(CONFIG_DRAWBOX_FILTER) += vf_drawbox.o +OBJS-$(CONFIG_DRAWGRAPH_FILTER) += f_drawgraph.o +OBJS-$(CONFIG_DRAWGRID_FILTER) += vf_drawbox.o +OBJS-$(CONFIG_DRAWTEXT_FILTER) += vf_drawtext.o +OBJS-$(CONFIG_EDGEDETECT_FILTER) += vf_edgedetect.o +OBJS-$(CONFIG_ELBG_FILTER) += vf_elbg.o +OBJS-$(CONFIG_EQ_FILTER) += vf_eq.o +OBJS-$(CONFIG_EROSION_FILTER) += vf_neighbor.o +OBJS-$(CONFIG_EXTRACTPLANES_FILTER) += vf_extractplanes.o +OBJS-$(CONFIG_FADE_FILTER) += vf_fade.o +OBJS-$(CONFIG_FFTFILT_FILTER) += vf_fftfilt.o +OBJS-$(CONFIG_FIELD_FILTER) += vf_field.o +OBJS-$(CONFIG_FIELDHINT_FILTER) += vf_fieldhint.o +OBJS-$(CONFIG_FIELDMATCH_FILTER) += vf_fieldmatch.o +OBJS-$(CONFIG_FIELDORDER_FILTER) += vf_fieldorder.o +OBJS-$(CONFIG_FIND_RECT_FILTER) += vf_find_rect.o lavfutils.o +OBJS-$(CONFIG_FORMAT_FILTER) += vf_format.o +OBJS-$(CONFIG_FPS_FILTER) += vf_fps.o +OBJS-$(CONFIG_FRAMEPACK_FILTER) += vf_framepack.o +OBJS-$(CONFIG_FRAMERATE_FILTER) += vf_framerate.o +OBJS-$(CONFIG_FRAMESTEP_FILTER) += vf_framestep.o +OBJS-$(CONFIG_FREI0R_FILTER) += vf_frei0r.o +OBJS-$(CONFIG_FSPP_FILTER) += vf_fspp.o +OBJS-$(CONFIG_GBLUR_FILTER) += vf_gblur.o +OBJS-$(CONFIG_GEQ_FILTER) += vf_geq.o +OBJS-$(CONFIG_GRADFUN_FILTER) += vf_gradfun.o +OBJS-$(CONFIG_HALDCLUT_FILTER) += vf_lut3d.o dualinput.o framesync.o +OBJS-$(CONFIG_HFLIP_FILTER) += vf_hflip.o +OBJS-$(CONFIG_HISTEQ_FILTER) += vf_histeq.o +OBJS-$(CONFIG_HISTOGRAM_FILTER) += vf_histogram.o +OBJS-$(CONFIG_HQDN3D_FILTER) += vf_hqdn3d.o +OBJS-$(CONFIG_HQX_FILTER) += vf_hqx.o +OBJS-$(CONFIG_HSTACK_FILTER) += vf_stack.o framesync.o +OBJS-$(CONFIG_HUE_FILTER) += vf_hue.o +OBJS-$(CONFIG_HWDOWNLOAD_FILTER) += vf_hwdownload.o +OBJS-$(CONFIG_HWUPLOAD_CUDA_FILTER) += vf_hwupload_cuda.o +OBJS-$(CONFIG_HWUPLOAD_FILTER) += vf_hwupload.o +OBJS-$(CONFIG_HYSTERESIS_FILTER) += vf_hysteresis.o framesync.o +OBJS-$(CONFIG_IDET_FILTER) += vf_idet.o +OBJS-$(CONFIG_IL_FILTER) += vf_il.o +OBJS-$(CONFIG_INFLATE_FILTER) += vf_neighbor.o +OBJS-$(CONFIG_INTERLACE_FILTER) += vf_interlace.o +OBJS-$(CONFIG_INTERLEAVE_FILTER) += f_interleave.o +OBJS-$(CONFIG_KERNDEINT_FILTER) += vf_kerndeint.o +OBJS-$(CONFIG_LENSCORRECTION_FILTER) += vf_lenscorrection.o +OBJS-$(CONFIG_LOOP_FILTER) += f_loop.o +OBJS-$(CONFIG_LUT_FILTER) += vf_lut.o +OBJS-$(CONFIG_LUT2_FILTER) += vf_lut2.o framesync.o +OBJS-$(CONFIG_LUT3D_FILTER) += vf_lut3d.o +OBJS-$(CONFIG_LUTRGB_FILTER) += vf_lut.o +OBJS-$(CONFIG_LUTYUV_FILTER) += vf_lut.o +OBJS-$(CONFIG_MASKEDCLAMP_FILTER) += vf_maskedclamp.o framesync.o +OBJS-$(CONFIG_MASKEDMERGE_FILTER) += vf_maskedmerge.o framesync.o +OBJS-$(CONFIG_MCDEINT_FILTER) += vf_mcdeint.o +OBJS-$(CONFIG_MERGEPLANES_FILTER) += vf_mergeplanes.o framesync.o +OBJS-$(CONFIG_MESTIMATE_FILTER) += vf_mestimate.o motion_estimation.o +OBJS-$(CONFIG_METADATA_FILTER) += f_metadata.o +OBJS-$(CONFIG_MIDEQUALIZER_FILTER) += vf_midequalizer.o framesync.o +OBJS-$(CONFIG_MINTERPOLATE_FILTER) += vf_minterpolate.o motion_estimation.o +OBJS-$(CONFIG_MPDECIMATE_FILTER) += vf_mpdecimate.o +OBJS-$(CONFIG_NEGATE_FILTER) += vf_lut.o +OBJS-$(CONFIG_NLMEANS_FILTER) += vf_nlmeans.o +OBJS-$(CONFIG_NNEDI_FILTER) += vf_nnedi.o +OBJS-$(CONFIG_NOFORMAT_FILTER) += vf_format.o +OBJS-$(CONFIG_NOISE_FILTER) += vf_noise.o +OBJS-$(CONFIG_NULL_FILTER) += vf_null.o +OBJS-$(CONFIG_OCR_FILTER) += vf_ocr.o +OBJS-$(CONFIG_OCV_FILTER) += vf_libopencv.o +OBJS-$(CONFIG_OPENCL) += deshake_opencl.o unsharp_opencl.o +OBJS-$(CONFIG_OVERLAY_FILTER) += vf_overlay.o dualinput.o framesync.o +OBJS-$(CONFIG_OWDENOISE_FILTER) += vf_owdenoise.o +OBJS-$(CONFIG_PAD_FILTER) += vf_pad.o +OBJS-$(CONFIG_PALETTEGEN_FILTER) += vf_palettegen.o +OBJS-$(CONFIG_PALETTEUSE_FILTER) += vf_paletteuse.o dualinput.o framesync.o +OBJS-$(CONFIG_PERMS_FILTER) += f_perms.o +OBJS-$(CONFIG_PERSPECTIVE_FILTER) += vf_perspective.o +OBJS-$(CONFIG_PHASE_FILTER) += vf_phase.o +OBJS-$(CONFIG_PIXDESCTEST_FILTER) += vf_pixdesctest.o +OBJS-$(CONFIG_PP_FILTER) += vf_pp.o +OBJS-$(CONFIG_PP7_FILTER) += vf_pp7.o +OBJS-$(CONFIG_PREMULTIPLY_FILTER) += vf_premultiply.o framesync.o +OBJS-$(CONFIG_PREWITT_FILTER) += vf_convolution.o +OBJS-$(CONFIG_PSNR_FILTER) += vf_psnr.o dualinput.o framesync.o +OBJS-$(CONFIG_PULLUP_FILTER) += vf_pullup.o +OBJS-$(CONFIG_QP_FILTER) += vf_qp.o +OBJS-$(CONFIG_RANDOM_FILTER) += vf_random.o +OBJS-$(CONFIG_READEIA608_FILTER) += vf_readeia608.o +OBJS-$(CONFIG_READVITC_FILTER) += vf_readvitc.o +OBJS-$(CONFIG_REALTIME_FILTER) += f_realtime.o +OBJS-$(CONFIG_REMAP_FILTER) += vf_remap.o framesync.o +OBJS-$(CONFIG_REMOVEGRAIN_FILTER) += vf_removegrain.o +OBJS-$(CONFIG_REMOVELOGO_FILTER) += bbox.o lswsutils.o lavfutils.o vf_removelogo.o +OBJS-$(CONFIG_REPEATFIELDS_FILTER) += vf_repeatfields.o +OBJS-$(CONFIG_REVERSE_FILTER) += f_reverse.o +OBJS-$(CONFIG_ROTATE_FILTER) += vf_rotate.o +OBJS-$(CONFIG_SAB_FILTER) += vf_sab.o +OBJS-$(CONFIG_SCALE_FILTER) += vf_scale.o scale.o +OBJS-$(CONFIG_SCALE_NPP_FILTER) += vf_scale_npp.o scale.o +OBJS-$(CONFIG_SCALE_VAAPI_FILTER) += vf_scale_vaapi.o scale.o +OBJS-$(CONFIG_SCALE2REF_FILTER) += vf_scale.o scale.o +OBJS-$(CONFIG_SELECT_FILTER) += f_select.o +OBJS-$(CONFIG_SELECTIVECOLOR_FILTER) += vf_selectivecolor.o +OBJS-$(CONFIG_SENDCMD_FILTER) += f_sendcmd.o +OBJS-$(CONFIG_SEPARATEFIELDS_FILTER) += vf_separatefields.o +OBJS-$(CONFIG_SETDAR_FILTER) += vf_aspect.o +OBJS-$(CONFIG_SETFIELD_FILTER) += vf_setfield.o +OBJS-$(CONFIG_SETPTS_FILTER) += setpts.o +OBJS-$(CONFIG_SETSAR_FILTER) += vf_aspect.o +OBJS-$(CONFIG_SETTB_FILTER) += settb.o +OBJS-$(CONFIG_SHOWINFO_FILTER) += vf_showinfo.o +OBJS-$(CONFIG_SHOWPALETTE_FILTER) += vf_showpalette.o +OBJS-$(CONFIG_SHUFFLEFRAMES_FILTER) += vf_shuffleframes.o +OBJS-$(CONFIG_SHUFFLEPLANES_FILTER) += vf_shuffleplanes.o +OBJS-$(CONFIG_SIDEDATA_FILTER) += f_sidedata.o +OBJS-$(CONFIG_SIGNALSTATS_FILTER) += vf_signalstats.o +OBJS-$(CONFIG_SMARTBLUR_FILTER) += vf_smartblur.o +OBJS-$(CONFIG_SOBEL_FILTER) += vf_convolution.o +OBJS-$(CONFIG_SPLIT_FILTER) += split.o +OBJS-$(CONFIG_SPP_FILTER) += vf_spp.o +OBJS-$(CONFIG_SSIM_FILTER) += vf_ssim.o dualinput.o framesync.o +OBJS-$(CONFIG_STEREO3D_FILTER) += vf_stereo3d.o +OBJS-$(CONFIG_STREAMSELECT_FILTER) += f_streamselect.o +OBJS-$(CONFIG_SUBTITLES_FILTER) += vf_subtitles.o +OBJS-$(CONFIG_SUPER2XSAI_FILTER) += vf_super2xsai.o +OBJS-$(CONFIG_SWAPRECT_FILTER) += vf_swaprect.o +OBJS-$(CONFIG_SWAPUV_FILTER) += vf_swapuv.o +OBJS-$(CONFIG_TBLEND_FILTER) += vf_blend.o dualinput.o framesync.o +OBJS-$(CONFIG_TELECINE_FILTER) += vf_telecine.o +OBJS-$(CONFIG_THRESHOLD_FILTER) += vf_threshold.o +OBJS-$(CONFIG_THUMBNAIL_FILTER) += vf_thumbnail.o +OBJS-$(CONFIG_TILE_FILTER) += vf_tile.o +OBJS-$(CONFIG_TINTERLACE_FILTER) += vf_tinterlace.o +OBJS-$(CONFIG_TRANSPOSE_FILTER) += vf_transpose.o +OBJS-$(CONFIG_TRIM_FILTER) += trim.o +OBJS-$(CONFIG_UNSHARP_FILTER) += vf_unsharp.o +OBJS-$(CONFIG_USPP_FILTER) += vf_uspp.o +OBJS-$(CONFIG_VAGUEDENOISER_FILTER) += vf_vaguedenoiser.o +OBJS-$(CONFIG_VECTORSCOPE_FILTER) += vf_vectorscope.o +OBJS-$(CONFIG_VFLIP_FILTER) += vf_vflip.o +OBJS-$(CONFIG_VIDSTABDETECT_FILTER) += vidstabutils.o vf_vidstabdetect.o +OBJS-$(CONFIG_VIDSTABTRANSFORM_FILTER) += vidstabutils.o vf_vidstabtransform.o +OBJS-$(CONFIG_VIGNETTE_FILTER) += vf_vignette.o +OBJS-$(CONFIG_VSTACK_FILTER) += vf_stack.o framesync.o +OBJS-$(CONFIG_W3FDIF_FILTER) += vf_w3fdif.o +OBJS-$(CONFIG_WAVEFORM_FILTER) += vf_waveform.o +OBJS-$(CONFIG_WEAVE_FILTER) += vf_weave.o +OBJS-$(CONFIG_XBR_FILTER) += vf_xbr.o +OBJS-$(CONFIG_YADIF_FILTER) += vf_yadif.o +OBJS-$(CONFIG_ZMQ_FILTER) += f_zmq.o +OBJS-$(CONFIG_ZOOMPAN_FILTER) += vf_zoompan.o +OBJS-$(CONFIG_ZSCALE_FILTER) += vf_zscale.o + +OBJS-$(CONFIG_ALLRGB_FILTER) += vsrc_testsrc.o +OBJS-$(CONFIG_ALLYUV_FILTER) += vsrc_testsrc.o +OBJS-$(CONFIG_CELLAUTO_FILTER) += vsrc_cellauto.o +OBJS-$(CONFIG_COLOR_FILTER) += vsrc_testsrc.o +OBJS-$(CONFIG_COREIMAGESRC_FILTER) += vf_coreimage.o +OBJS-$(CONFIG_FREI0R_SRC_FILTER) += vf_frei0r.o +OBJS-$(CONFIG_HALDCLUTSRC_FILTER) += vsrc_testsrc.o +OBJS-$(CONFIG_LIFE_FILTER) += vsrc_life.o +OBJS-$(CONFIG_MANDELBROT_FILTER) += vsrc_mandelbrot.o +OBJS-$(CONFIG_MPTESTSRC_FILTER) += vsrc_mptestsrc.o +OBJS-$(CONFIG_NULLSRC_FILTER) += vsrc_testsrc.o +OBJS-$(CONFIG_RGBTESTSRC_FILTER) += vsrc_testsrc.o +OBJS-$(CONFIG_SMPTEBARS_FILTER) += vsrc_testsrc.o +OBJS-$(CONFIG_SMPTEHDBARS_FILTER) += vsrc_testsrc.o +OBJS-$(CONFIG_TESTSRC_FILTER) += vsrc_testsrc.o +OBJS-$(CONFIG_TESTSRC2_FILTER) += vsrc_testsrc.o +OBJS-$(CONFIG_YUVTESTSRC_FILTER) += vsrc_testsrc.o + +OBJS-$(CONFIG_NULLSINK_FILTER) += vsink_nullsink.o + +# multimedia filters +OBJS-$(CONFIG_ABITSCOPE_FILTER) += avf_abitscope.o +OBJS-$(CONFIG_ADRAWGRAPH_FILTER) += f_drawgraph.o +OBJS-$(CONFIG_AHISTOGRAM_FILTER) += avf_ahistogram.o +OBJS-$(CONFIG_APHASEMETER_FILTER) += avf_aphasemeter.o +OBJS-$(CONFIG_AVECTORSCOPE_FILTER) += avf_avectorscope.o +OBJS-$(CONFIG_CONCAT_FILTER) += avf_concat.o +OBJS-$(CONFIG_SHOWCQT_FILTER) += avf_showcqt.o lswsutils.o lavfutils.o +OBJS-$(CONFIG_SHOWFREQS_FILTER) += avf_showfreqs.o window_func.o +OBJS-$(CONFIG_SHOWSPECTRUM_FILTER) += avf_showspectrum.o window_func.o +OBJS-$(CONFIG_SHOWSPECTRUMPIC_FILTER) += avf_showspectrum.o window_func.o +OBJS-$(CONFIG_SHOWVOLUME_FILTER) += avf_showvolume.o +OBJS-$(CONFIG_SHOWWAVES_FILTER) += avf_showwaves.o +OBJS-$(CONFIG_SHOWWAVESPIC_FILTER) += avf_showwaves.o +OBJS-$(CONFIG_SPECTRUMSYNTH_FILTER) += vaf_spectrumsynth.o window_func.o + +# multimedia sources +OBJS-$(CONFIG_AMOVIE_FILTER) += src_movie.o +OBJS-$(CONFIG_MOVIE_FILTER) += src_movie.o + +# Windows resource file +SLIBOBJS-$(HAVE_GNU_WINDRES) += avfilterres.o + +SKIPHEADERS-$(CONFIG_LIBVIDSTAB) += vidstabutils.h +SKIPHEADERS-$(CONFIG_OPENCL) += opencl_internal.h deshake_opencl_kernel.h unsharp_opencl_kernel.h + +OBJS-$(CONFIG_SHARED) += log2_tab.o + +TOOLS = graph2dot +TESTPROGS = drawutils filtfmts formats integral + +TOOLS-$(CONFIG_LIBZMQ) += zmqsend + +clean:: + $(RM) $(CLEANSUFFIXES:%=libavfilter/libmpcodecs/%) diff --git a/libavfilter/af_ambisonic.c b/libavfilter/af_ambisonic.c new file mode 100644 index 0000000..296a471 --- /dev/null +++ b/libavfilter/af_ambisonic.c @@ -0,0 +1,137 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include "libavutil/avstring.h" +#include "libavutil/channel_layout.h" +#include "libavutil/opt.h" +#include "audio.h" +#include "avfilter.h" +#include "formats.h" +#include + +typedef struct AmbisonicContext { + const AVClass *class; + /*Not needed, if any new variables are to be used, this struct can be populated(f)*/ + +} AmbisonicContext; + +#define OFFSET(x) offsetof(AmbisonicContext, x) + +static const AVOption ambisonic_options[] = { //square will be an option +{NULL} +}; + +AVFILTER_DEFINE_CLASS(ambisonic); +static int query_formats(AVFilterContext *ctx) +{ + AVFilterFormats *formats = NULL; + AVFilterChannelLayouts *layout = NULL; + int ret; + if ((ret = ff_add_format (&formats, AV_SAMPLE_FMT_FLTP )) < 0 || + (ret = ff_set_common_formats (ctx , formats )) < 0 || + (ret = ff_add_channel_layout (&layout , AV_CH_LAYOUT_4POINT0)) < 0 || + (ret = ff_set_common_channel_layouts (ctx , layout )) < 0) + return ret; + formats = ff_all_samplerates(); + return ff_set_common_samplerates(ctx, formats); +} +static int filter_frame(AVFilterLink *inlink, AVFrame *in) +{ + AVFilterContext *ctx = inlink->dst; + AVFilterLink *outlink = ctx->outputs[0]; + /*If variables used, this has to be created*/ + // AmbisonicContext *s = ctx->priv; + // const float *src = (const float *)in->data[0]; + // float *dst; + AVFrame *out; + int itr; + float *w,*x,*y; + float root8= sqrt(8); + float lf=0,lb=0,rb=0,rf=0; + + if (av_frame_is_writable(in)) + { + out = in; + } + else + { + out = ff_get_audio_buffer(inlink, in->nb_samples); + if (!out) + { + av_frame_free(&in); + return AVERROR(ENOMEM); + } + av_frame_copy_props(out, in); + } + + /*If planar samples are used, output must be put in dst*/ + //dst = (float *)out->data[0]; + + w=(float *)in->extended_data[0]; + x=(float *)in->extended_data[1]; + y=(float *)in->extended_data[2]; + + for(itr=0;itrnb_samples;itr++) + { + /*Float pointers to the samples*/ + + lf = root8 * (2*(w[itr])+x[itr]+y[itr]); + lb = root8 * (2*(w[itr])-x[itr]+y[itr]); + rb = root8 * (2*(w[itr])-x[itr]-y[itr]); + rf = root8 * (2*(w[itr])+x[itr]-y[itr]); + + out->extended_data[0][itr]= lf; + out->extended_data[1][itr]= lb; + out->extended_data[2][itr]= rb; + out->extended_data[3][itr]= rf; + } + + if (out != in) + av_frame_free(&in); + return ff_filter_frame(outlink, out); +} + +static const AVFilterPad inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .filter_frame = filter_frame, + // .config_props = config_input, + }, + { NULL } +}; + +static const AVFilterPad outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + }, + { NULL } +}; + +AVFilter ff_af_ambisonic = { + .name = "ambisonic", + .description = NULL_IF_CONFIG_SMALL("An ambisonic filter"), + .query_formats = query_formats, + .priv_size = sizeof(AmbisonicContext), + .priv_class = &ambisonic_class, + // .uninit = uninit, + .inputs = inputs, + .outputs = outputs, +}; \ No newline at end of file diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c new file mode 100644 index 0000000..bbe03d1 --- /dev/null +++ b/libavfilter/allfilters.c @@ -0,0 +1,383 @@ +/* + * filter registration + * Copyright (c) 2008 Vitor Sessak + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "avfilter.h" +#include "config.h" +#include "opencl_allkernels.h" + + +#define REGISTER_FILTER(X, x, y) \ + { \ + extern AVFilter ff_##y##_##x; \ + if (CONFIG_##X##_FILTER) \ + avfilter_register(&ff_##y##_##x); \ + } + +#define REGISTER_FILTER_UNCONDITIONAL(x) \ + { \ + extern AVFilter ff_##x; \ + avfilter_register(&ff_##x); \ + } + +void avfilter_register_all(void) +{ + static int initialized; + + if (initialized) + return; + initialized = 1; + + REGISTER_FILTER(AMBISONIC, ambisonic, af); + REGISTER_FILTER(ABENCH, abench, af); + REGISTER_FILTER(ACOMPRESSOR, acompressor, af); + REGISTER_FILTER(ACROSSFADE, acrossfade, af); + REGISTER_FILTER(ACRUSHER, acrusher, af); + REGISTER_FILTER(ADELAY, adelay, af); + REGISTER_FILTER(AECHO, aecho, af); + REGISTER_FILTER(AEMPHASIS, aemphasis, af); + REGISTER_FILTER(AEVAL, aeval, af); + REGISTER_FILTER(AFADE, afade, af); + REGISTER_FILTER(AFFTFILT, afftfilt, af); + REGISTER_FILTER(AFORMAT, aformat, af); + REGISTER_FILTER(AGATE, agate, af); + REGISTER_FILTER(AINTERLEAVE, ainterleave, af); + REGISTER_FILTER(ALIMITER, alimiter, af); + REGISTER_FILTER(ALLPASS, allpass, af); + REGISTER_FILTER(ALOOP, aloop, af); + REGISTER_FILTER(AMERGE, amerge, af); + REGISTER_FILTER(AMETADATA, ametadata, af); + REGISTER_FILTER(AMIX, amix, af); + REGISTER_FILTER(ANEQUALIZER, anequalizer, af); + REGISTER_FILTER(ANULL, anull, af); + REGISTER_FILTER(APAD, apad, af); + REGISTER_FILTER(APERMS, aperms, af); + REGISTER_FILTER(APHASER, aphaser, af); + REGISTER_FILTER(APULSATOR, apulsator, af); + REGISTER_FILTER(AREALTIME, arealtime, af); + REGISTER_FILTER(ARESAMPLE, aresample, af); + REGISTER_FILTER(AREVERSE, areverse, af); + REGISTER_FILTER(ASELECT, aselect, af); + REGISTER_FILTER(ASENDCMD, asendcmd, af); + REGISTER_FILTER(ASETNSAMPLES, asetnsamples, af); + REGISTER_FILTER(ASETPTS, asetpts, af); + REGISTER_FILTER(ASETRATE, asetrate, af); + REGISTER_FILTER(ASETTB, asettb, af); + REGISTER_FILTER(ASHOWINFO, ashowinfo, af); + REGISTER_FILTER(ASIDEDATA, asidedata, af); + REGISTER_FILTER(ASPLIT, asplit, af); + REGISTER_FILTER(ASTATS, astats, af); + REGISTER_FILTER(ASTREAMSELECT, astreamselect, af); + REGISTER_FILTER(ASYNCTS, asyncts, af); + REGISTER_FILTER(ATEMPO, atempo, af); + REGISTER_FILTER(ATRIM, atrim, af); + REGISTER_FILTER(AZMQ, azmq, af); + REGISTER_FILTER(BANDPASS, bandpass, af); + REGISTER_FILTER(BANDREJECT, bandreject, af); + REGISTER_FILTER(BASS, bass, af); + REGISTER_FILTER(BIQUAD, biquad, af); + REGISTER_FILTER(BS2B, bs2b, af); + REGISTER_FILTER(CHANNELMAP, channelmap, af); + REGISTER_FILTER(CHANNELSPLIT, channelsplit, af); + REGISTER_FILTER(CHORUS, chorus, af); + REGISTER_FILTER(COMPAND, compand, af); + REGISTER_FILTER(COMPENSATIONDELAY, compensationdelay, af); + REGISTER_FILTER(CRYSTALIZER, crystalizer, af); + REGISTER_FILTER(DCSHIFT, dcshift, af); + REGISTER_FILTER(DYNAUDNORM, dynaudnorm, af); + REGISTER_FILTER(EARWAX, earwax, af); + REGISTER_FILTER(EBUR128, ebur128, af); + REGISTER_FILTER(EQUALIZER, equalizer, af); + REGISTER_FILTER(EXTRASTEREO, extrastereo, af); + REGISTER_FILTER(FIREQUALIZER, firequalizer, af); + REGISTER_FILTER(FLANGER, flanger, af); + REGISTER_FILTER(HDCD, hdcd, af); + REGISTER_FILTER(HIGHPASS, highpass, af); + REGISTER_FILTER(JOIN, join, af); + REGISTER_FILTER(LADSPA, ladspa, af); + REGISTER_FILTER(LOUDNORM, loudnorm, af); + REGISTER_FILTER(LOWPASS, lowpass, af); + REGISTER_FILTER(PAN, pan, af); + REGISTER_FILTER(REPLAYGAIN, replaygain, af); + REGISTER_FILTER(RESAMPLE, resample, af); + REGISTER_FILTER(RUBBERBAND, rubberband, af); + REGISTER_FILTER(SIDECHAINCOMPRESS, sidechaincompress, af); + REGISTER_FILTER(SIDECHAINGATE, sidechaingate, af); + REGISTER_FILTER(SILENCEDETECT, silencedetect, af); + REGISTER_FILTER(SILENCEREMOVE, silenceremove, af); + REGISTER_FILTER(SOFALIZER, sofalizer, af); + REGISTER_FILTER(STEREOTOOLS, stereotools, af); + REGISTER_FILTER(STEREOWIDEN, stereowiden, af); + REGISTER_FILTER(TREBLE, treble, af); + REGISTER_FILTER(TREMOLO, tremolo, af); + REGISTER_FILTER(VIBRATO, vibrato, af); + REGISTER_FILTER(VOLUME, volume, af); + REGISTER_FILTER(VOLUMEDETECT, volumedetect, af); + + REGISTER_FILTER(AEVALSRC, aevalsrc, asrc); + REGISTER_FILTER(ANOISESRC, anoisesrc, asrc); + REGISTER_FILTER(ANULLSRC, anullsrc, asrc); + REGISTER_FILTER(FLITE, flite, asrc); + REGISTER_FILTER(SINE, sine, asrc); + + REGISTER_FILTER(ANULLSINK, anullsink, asink); + + REGISTER_FILTER(ALPHAEXTRACT, alphaextract, vf); + REGISTER_FILTER(ALPHAMERGE, alphamerge, vf); + REGISTER_FILTER(ASS, ass, vf); + REGISTER_FILTER(ATADENOISE, atadenoise, vf); + REGISTER_FILTER(AVGBLUR, avgblur, vf); + REGISTER_FILTER(BBOX, bbox, vf); + REGISTER_FILTER(BENCH, bench, vf); + REGISTER_FILTER(BITPLANENOISE, bitplanenoise, vf); + REGISTER_FILTER(BLACKDETECT, blackdetect, vf); + REGISTER_FILTER(BLACKFRAME, blackframe, vf); + REGISTER_FILTER(BLEND, blend, vf); + REGISTER_FILTER(BOXBLUR, boxblur, vf); + REGISTER_FILTER(BWDIF, bwdif, vf); + REGISTER_FILTER(CHROMAKEY, chromakey, vf); + REGISTER_FILTER(CIESCOPE, ciescope, vf); + REGISTER_FILTER(CODECVIEW, codecview, vf); + REGISTER_FILTER(COLORBALANCE, colorbalance, vf); + REGISTER_FILTER(COLORCHANNELMIXER, colorchannelmixer, vf); + REGISTER_FILTER(COLORKEY, colorkey, vf); + REGISTER_FILTER(COLORLEVELS, colorlevels, vf); + REGISTER_FILTER(COLORMATRIX, colormatrix, vf); + REGISTER_FILTER(COLORSPACE, colorspace, vf); + REGISTER_FILTER(CONVOLUTION, convolution, vf); + REGISTER_FILTER(COPY, copy, vf); + REGISTER_FILTER(COREIMAGE, coreimage, vf); + REGISTER_FILTER(COVER_RECT, cover_rect, vf); + REGISTER_FILTER(CROP, crop, vf); + REGISTER_FILTER(CROPDETECT, cropdetect, vf); + REGISTER_FILTER(CURVES, curves, vf); + REGISTER_FILTER(DATASCOPE, datascope, vf); + REGISTER_FILTER(DCTDNOIZ, dctdnoiz, vf); + REGISTER_FILTER(DEBAND, deband, vf); + REGISTER_FILTER(DECIMATE, decimate, vf); + REGISTER_FILTER(DEFLATE, deflate, vf); + REGISTER_FILTER(DEINTERLACE_VAAPI, deinterlace_vaapi, vf); + REGISTER_FILTER(DEJUDDER, dejudder, vf); + REGISTER_FILTER(DELOGO, delogo, vf); + REGISTER_FILTER(DESHAKE, deshake, vf); + REGISTER_FILTER(DETELECINE, detelecine, vf); + REGISTER_FILTER(DILATION, dilation, vf); + REGISTER_FILTER(DISPLACE, displace, vf); + REGISTER_FILTER(DRAWBOX, drawbox, vf); + REGISTER_FILTER(DRAWGRAPH, drawgraph, vf); + REGISTER_FILTER(DRAWGRID, drawgrid, vf); + REGISTER_FILTER(DRAWTEXT, drawtext, vf); + REGISTER_FILTER(EDGEDETECT, edgedetect, vf); + REGISTER_FILTER(ELBG, elbg, vf); + REGISTER_FILTER(EQ, eq, vf); + REGISTER_FILTER(EROSION, erosion, vf); + REGISTER_FILTER(EXTRACTPLANES, extractplanes, vf); + REGISTER_FILTER(FADE, fade, vf); + REGISTER_FILTER(FFTFILT, fftfilt, vf); + REGISTER_FILTER(FIELD, field, vf); + REGISTER_FILTER(FIELDHINT, fieldhint, vf); + REGISTER_FILTER(FIELDMATCH, fieldmatch, vf); + REGISTER_FILTER(FIELDORDER, fieldorder, vf); + REGISTER_FILTER(FIND_RECT, find_rect, vf); + REGISTER_FILTER(FORMAT, format, vf); + REGISTER_FILTER(FPS, fps, vf); + REGISTER_FILTER(FRAMEPACK, framepack, vf); + REGISTER_FILTER(FRAMERATE, framerate, vf); + REGISTER_FILTER(FRAMESTEP, framestep, vf); + REGISTER_FILTER(FREI0R, frei0r, vf); + REGISTER_FILTER(FSPP, fspp, vf); + REGISTER_FILTER(GBLUR, gblur, vf); + REGISTER_FILTER(GEQ, geq, vf); + REGISTER_FILTER(GRADFUN, gradfun, vf); + REGISTER_FILTER(HALDCLUT, haldclut, vf); + REGISTER_FILTER(HFLIP, hflip, vf); + REGISTER_FILTER(HISTEQ, histeq, vf); + REGISTER_FILTER(HISTOGRAM, histogram, vf); + REGISTER_FILTER(HQDN3D, hqdn3d, vf); + REGISTER_FILTER(HQX, hqx, vf); + REGISTER_FILTER(HSTACK, hstack, vf); + REGISTER_FILTER(HUE, hue, vf); + REGISTER_FILTER(HWDOWNLOAD, hwdownload, vf); + REGISTER_FILTER(HWUPLOAD, hwupload, vf); + REGISTER_FILTER(HWUPLOAD_CUDA, hwupload_cuda, vf); + REGISTER_FILTER(HYSTERESIS, hysteresis, vf); + REGISTER_FILTER(IDET, idet, vf); + REGISTER_FILTER(IL, il, vf); + REGISTER_FILTER(INFLATE, inflate, vf); + REGISTER_FILTER(INTERLACE, interlace, vf); + REGISTER_FILTER(INTERLEAVE, interleave, vf); + REGISTER_FILTER(KERNDEINT, kerndeint, vf); + REGISTER_FILTER(LENSCORRECTION, lenscorrection, vf); + REGISTER_FILTER(LOOP, loop, vf); + REGISTER_FILTER(LUT, lut, vf); + REGISTER_FILTER(LUT2, lut2, vf); + REGISTER_FILTER(LUT3D, lut3d, vf); + REGISTER_FILTER(LUTRGB, lutrgb, vf); + REGISTER_FILTER(LUTYUV, lutyuv, vf); + REGISTER_FILTER(MASKEDCLAMP, maskedclamp, vf); + REGISTER_FILTER(MASKEDMERGE, maskedmerge, vf); + REGISTER_FILTER(MCDEINT, mcdeint, vf); + REGISTER_FILTER(MERGEPLANES, mergeplanes, vf); + REGISTER_FILTER(MESTIMATE, mestimate, vf); + REGISTER_FILTER(METADATA, metadata, vf); + REGISTER_FILTER(MIDEQUALIZER, midequalizer, vf); + REGISTER_FILTER(MINTERPOLATE, minterpolate, vf); + REGISTER_FILTER(MPDECIMATE, mpdecimate, vf); + REGISTER_FILTER(NEGATE, negate, vf); + REGISTER_FILTER(NLMEANS, nlmeans, vf); + REGISTER_FILTER(NNEDI, nnedi, vf); + REGISTER_FILTER(NOFORMAT, noformat, vf); + REGISTER_FILTER(NOISE, noise, vf); + REGISTER_FILTER(NULL, null, vf); + REGISTER_FILTER(OCR, ocr, vf); + REGISTER_FILTER(OCV, ocv, vf); + REGISTER_FILTER(OVERLAY, overlay, vf); + REGISTER_FILTER(OWDENOISE, owdenoise, vf); + REGISTER_FILTER(PAD, pad, vf); + REGISTER_FILTER(PALETTEGEN, palettegen, vf); + REGISTER_FILTER(PALETTEUSE, paletteuse, vf); + REGISTER_FILTER(PERMS, perms, vf); + REGISTER_FILTER(PERSPECTIVE, perspective, vf); + REGISTER_FILTER(PHASE, phase, vf); + REGISTER_FILTER(PIXDESCTEST, pixdesctest, vf); + REGISTER_FILTER(PP, pp, vf); + REGISTER_FILTER(PP7, pp7, vf); + REGISTER_FILTER(PREMULTIPLY, premultiply, vf); + REGISTER_FILTER(PREWITT, prewitt, vf); + REGISTER_FILTER(PSNR, psnr, vf); + REGISTER_FILTER(PULLUP, pullup, vf); + REGISTER_FILTER(QP, qp, vf); + REGISTER_FILTER(RANDOM, random, vf); + REGISTER_FILTER(READEIA608, readeia608, vf); + REGISTER_FILTER(READVITC, readvitc, vf); + REGISTER_FILTER(REALTIME, realtime, vf); + REGISTER_FILTER(REMAP, remap, vf); + REGISTER_FILTER(REMOVEGRAIN, removegrain, vf); + REGISTER_FILTER(REMOVELOGO, removelogo, vf); + REGISTER_FILTER(REPEATFIELDS, repeatfields, vf); + REGISTER_FILTER(REVERSE, reverse, vf); + REGISTER_FILTER(ROTATE, rotate, vf); + REGISTER_FILTER(SAB, sab, vf); + REGISTER_FILTER(SCALE, scale, vf); + REGISTER_FILTER(SCALE_NPP, scale_npp, vf); + REGISTER_FILTER(SCALE_VAAPI, scale_vaapi, vf); + REGISTER_FILTER(SCALE2REF, scale2ref, vf); + REGISTER_FILTER(SELECT, select, vf); + REGISTER_FILTER(SELECTIVECOLOR, selectivecolor, vf); + REGISTER_FILTER(SENDCMD, sendcmd, vf); + REGISTER_FILTER(SEPARATEFIELDS, separatefields, vf); + REGISTER_FILTER(SETDAR, setdar, vf); + REGISTER_FILTER(SETFIELD, setfield, vf); + REGISTER_FILTER(SETPTS, setpts, vf); + REGISTER_FILTER(SETSAR, setsar, vf); + REGISTER_FILTER(SETTB, settb, vf); + REGISTER_FILTER(SHOWINFO, showinfo, vf); + REGISTER_FILTER(SHOWPALETTE, showpalette, vf); + REGISTER_FILTER(SHUFFLEFRAMES, shuffleframes, vf); + REGISTER_FILTER(SHUFFLEPLANES, shuffleplanes, vf); + REGISTER_FILTER(SIDEDATA, sidedata, vf); + REGISTER_FILTER(SIGNALSTATS, signalstats, vf); + REGISTER_FILTER(SMARTBLUR, smartblur, vf); + REGISTER_FILTER(SOBEL, sobel, vf); + REGISTER_FILTER(SPLIT, split, vf); + REGISTER_FILTER(SPP, spp, vf); + REGISTER_FILTER(SSIM, ssim, vf); + REGISTER_FILTER(STEREO3D, stereo3d, vf); + REGISTER_FILTER(STREAMSELECT, streamselect, vf); + REGISTER_FILTER(SUBTITLES, subtitles, vf); + REGISTER_FILTER(SUPER2XSAI, super2xsai, vf); + REGISTER_FILTER(SWAPRECT, swaprect, vf); + REGISTER_FILTER(SWAPUV, swapuv, vf); + REGISTER_FILTER(TBLEND, tblend, vf); + REGISTER_FILTER(TELECINE, telecine, vf); + REGISTER_FILTER(THRESHOLD, threshold, vf); + REGISTER_FILTER(THUMBNAIL, thumbnail, vf); + REGISTER_FILTER(TILE, tile, vf); + REGISTER_FILTER(TINTERLACE, tinterlace, vf); + REGISTER_FILTER(TRANSPOSE, transpose, vf); + REGISTER_FILTER(TRIM, trim, vf); + REGISTER_FILTER(UNSHARP, unsharp, vf); + REGISTER_FILTER(USPP, uspp, vf); + REGISTER_FILTER(VAGUEDENOISER, vaguedenoiser, vf); + REGISTER_FILTER(VECTORSCOPE, vectorscope, vf); + REGISTER_FILTER(VFLIP, vflip, vf); + REGISTER_FILTER(VIDSTABDETECT, vidstabdetect, vf); + REGISTER_FILTER(VIDSTABTRANSFORM, vidstabtransform, vf); + REGISTER_FILTER(VIGNETTE, vignette, vf); + REGISTER_FILTER(VSTACK, vstack, vf); + REGISTER_FILTER(W3FDIF, w3fdif, vf); + REGISTER_FILTER(WAVEFORM, waveform, vf); + REGISTER_FILTER(WEAVE, weave, vf); + REGISTER_FILTER(XBR, xbr, vf); + REGISTER_FILTER(YADIF, yadif, vf); + REGISTER_FILTER(ZMQ, zmq, vf); + REGISTER_FILTER(ZOOMPAN, zoompan, vf); + REGISTER_FILTER(ZSCALE, zscale, vf); + + REGISTER_FILTER(ALLRGB, allrgb, vsrc); + REGISTER_FILTER(ALLYUV, allyuv, vsrc); + REGISTER_FILTER(CELLAUTO, cellauto, vsrc); + REGISTER_FILTER(COLOR, color, vsrc); + REGISTER_FILTER(COREIMAGESRC, coreimagesrc, vsrc); + REGISTER_FILTER(FREI0R, frei0r_src, vsrc); + REGISTER_FILTER(HALDCLUTSRC, haldclutsrc, vsrc); + REGISTER_FILTER(LIFE, life, vsrc); + REGISTER_FILTER(MANDELBROT, mandelbrot, vsrc); + REGISTER_FILTER(MPTESTSRC, mptestsrc, vsrc); + REGISTER_FILTER(NULLSRC, nullsrc, vsrc); + REGISTER_FILTER(RGBTESTSRC, rgbtestsrc, vsrc); + REGISTER_FILTER(SMPTEBARS, smptebars, vsrc); + REGISTER_FILTER(SMPTEHDBARS, smptehdbars, vsrc); + REGISTER_FILTER(TESTSRC, testsrc, vsrc); + REGISTER_FILTER(TESTSRC2, testsrc2, vsrc); + REGISTER_FILTER(YUVTESTSRC, yuvtestsrc, vsrc); + + REGISTER_FILTER(NULLSINK, nullsink, vsink); + + /* multimedia filters */ + REGISTER_FILTER(ABITSCOPE, abitscope, avf); + REGISTER_FILTER(ADRAWGRAPH, adrawgraph, avf); + REGISTER_FILTER(AHISTOGRAM, ahistogram, avf); + REGISTER_FILTER(APHASEMETER, aphasemeter, avf); + REGISTER_FILTER(AVECTORSCOPE, avectorscope, avf); + REGISTER_FILTER(CONCAT, concat, avf); + REGISTER_FILTER(SHOWCQT, showcqt, avf); + REGISTER_FILTER(SHOWFREQS, showfreqs, avf); + REGISTER_FILTER(SHOWSPECTRUM, showspectrum, avf); + REGISTER_FILTER(SHOWSPECTRUMPIC, showspectrumpic, avf); + REGISTER_FILTER(SHOWVOLUME, showvolume, avf); + REGISTER_FILTER(SHOWWAVES, showwaves, avf); + REGISTER_FILTER(SHOWWAVESPIC, showwavespic, avf); + REGISTER_FILTER(SPECTRUMSYNTH, spectrumsynth, vaf); + + /* multimedia sources */ + REGISTER_FILTER(AMOVIE, amovie, avsrc); + REGISTER_FILTER(MOVIE, movie, avsrc); + + /* those filters are part of public or internal API => registered + * unconditionally */ + REGISTER_FILTER_UNCONDITIONAL(asrc_abuffer); + REGISTER_FILTER_UNCONDITIONAL(vsrc_buffer); + REGISTER_FILTER_UNCONDITIONAL(asink_abuffer); + REGISTER_FILTER_UNCONDITIONAL(vsink_buffer); + REGISTER_FILTER_UNCONDITIONAL(af_afifo); + REGISTER_FILTER_UNCONDITIONAL(vf_fifo); + ff_opencl_register_filter_kernel_code_all();