summaryrefslogtreecommitdiffstats
path: root/libavcodec/Makefile
Commit message (Collapse)AuthorAgeFilesLines
* avcodec: add a native SMPTE VC-2 HQ encoderRostislav Pehlivanov2016-02-101-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit adds a new encoder capable of creating BBC/SMPTE Dirac/VC-2 HQ profile files. Dirac is a wavelet based codec created by the BBC a little more than 10 years ago. Since then, wavelets have mostly gone out of style as they did not provide adequate encoding gains at lower bitrates. Dirac was a fully featured video codec equipped with perceptual masking, support for most popular pixel formats, interlacing, overlapped-block motion compensation, and other features. It found new life after being stripped of various features and standardized as the VC-2 codec by the SMPTE with an extra profile, the HQ profile that this encoder supports, added. The HQ profile was based off of the Low-Delay profile previously existing in Dirac. The profile forbids DC prediction and arithmetic coding to focus on high performance and low delay at higher bitrates. The standard bitrates for this profile vary but generally 1:4 compression is expected (~525 Mbps vs the 2200 Mbps for uncompressed 1080p50). The codec only supports I-frames, hence the high bitrates. The structure of this encoder is simple: do a DWT transform on the entire image, split it into multiple slices (specified by the user) and encode them in parallel. All of the slices are of the same size, making rate control and threading very trivial. Although only in C, this encoder is capable of 30 frames per second on an 4 core 8 threads Ivy Bridge. A lookup table is used to encode most of the coefficients. No code was used from the GSoC encoder from 2007 except for the 2 transform functions in diracenc_transforms.c. All other code was written from scratch. This encoder outperforms any other encoders in quality, usability and in features. Other existing implementations do not support 4 level transforms or 64x64 blocks (slices), which greatly increase compression. As previously said, the codec is meant for broadcasting, hence support for non-broadcasting image widths, heights, bit depths, aspect ratios, etc. are limited by the "level". Although this codec supports a few chroma subsamplings (420, 422, 444), signalling those is generally outside the specifications of the level used (3) and the reference decoder will outright refuse to read any image with such a flag signalled (it only supports 1920x1080 yuv422p10). However, most implementations will happily read files with alternate dimensions, framerates and formats signalled. Therefore, in order to encode files other than 1080p50 yuv422p10le, you need to provide an "-strict -2" argument to the command line. The FFmpeg decoder will happily read any files made with non-standard parameters, dimensions and subsamplings, and so will other implementations. IMO this should be "-strict -1", but I'll leave that up for discussion. There are still plenty of stuff to implement, for instance 5 more wavelet transforms are still in the specs and supported by the decoder. The encoder can be lossless, given a high enough bitrate. Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
* diradec: split tables away to a separate diractab fileRostislav Pehlivanov2016-02-031-1/+1
| | | | Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
* avcodec/dca: add new decoder based on libdcadecfoo862016-01-311-0/+3
|
* avcodec/dca: remove old decoderfoo862016-01-311-3/+0
| | | | | Remove all files and functions which are not going to be reused, and disable all functions and FATE tests temporarily which will be.
* avcodec: Cineform HD DecoderKieran Kunhya2016-01-301-0/+1
| | | | | | Decodes YUV 4:2:2 10-bit and RGB 12-bit files. Older files with more subbands, skips, Bayer, alpha not supported. Alpha requires addition of GBRAP12 pixel format.
* avcodec: Remove libvo-aacenc support.Kieran Kunhya2016-01-291-1/+0
| | | | | | The internal encoder is superior to libvo-aacenc. Signed-off-by: Timothy Gu <timothygu99@gmail.com>
* avcodec: Remove libaacplusTimothy Gu2016-01-291-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | TODO: bump minor It's inferior in quality to fdk-aac and has an arguably more problematic license. As early as 2012, a HydrogenAudio user reported: > It has however one huge advantage: much better quality at low bitrates than > faac and libaacplus. (https://hydrogenaud.io/index.php?PHPSESSID=ckiq394pdglka0kj2fin6ij8t7&topic=95989.msg804633#msg804633) I myself have made a few spectrograms for a comparison of the two encoders as well. The FDK output is consistently better than the libaacplus one, in all bitrates I tested. libaacplus license is 3GPP + LGPLv2. 3GPP copyright notice is completely proprietory, as follows: > No part may be reproduced except as authorized by written permission. > > The copyright and the foregoing restriction extend to reproduction in > all media. > > © 2008, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC). > > All rights reserved. (The latest 26410-d00 zip from 3GPP has the same notice, but the copyright year is changed to 2015) The copyright part of the FDK AAC license (section 2) is a copyleft license that permits redistribution under certain conditions (and therefore the LGPL + libfdk-aac combination is not prohibited by configure): > Redistribution and use in source and binary forms, with or without > modification, are permitted without payment of copyright license fees > provided that you satisfy the following conditions: > > You must retain the complete text of this software license in > redistributions of the FDK AAC Codec or your modifications thereto in > source code form. > > You must retain the complete text of this software license in the > documentation and/or other materials provided with redistributions of > the FDK AAC Codec or your modifications thereto in binary form. > > You must make available free of charge copies of the complete source > code of the FDK AAC Codec and your modifications thereto to recipients > of copies in binary form. > > The name of Fraunhofer may not be used to endorse or promote products > derived from this library without prior written permission. > > You may not charge copyright license fees for anyone to use, copy or > distribute the FDK AAC Codec software or your modifications thereto. > > Your modified versions of the FDK AAC Codec must carry prominent > notices stating that you changed the software and the date of any > change. For modified versions of the FDK AAC Codec, the term > "Fraunhofer FDK AAC Codec Library for Android" must be replaced by the > term "Third-Party Modified Version of the Fraunhofer FDK AAC Codec > Library for Android."
* avcodec: add dvaudio parserPaul B Mahol2016-01-281-0/+1
| | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* avcodec: add Ulead DV audio decoderPaul B Mahol2016-01-261-0/+1
| | | | | | Fixes #1564. Signed-off-by: Paul B Mahol <onemda@gmail.com>
* avcodec/webp: fix decoder dependenciesJames Almer2016-01-241-2/+1
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* avcodec: Remove libstagefrightDerek Buitenhuis2016-01-061-1/+0
| | | | | | | | | | | | | | | | | | It serves absolutely no purpose other than to confuse potentional Android developers about how to use hardware acceleration properly on the the platform. The stagefright "API" is not public, and the MediaCodec API is the proper way to do this. Furthermore, stagefright support in avcodec needs a series of magic incantations and version-specific stuff, such that using it actually provides downsides compared just using the actual Android frameworks properly, in that it is a lot more work and confusion to get it even running. It also leads to a lot of misinformation, like these sorts of comments (in [1]) that are absolutely incorrect. [1] http://stackoverflow.com/a/29362353/3115956 Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* Merge commit '2c6811397bdf13d43ca206e48d6d6da9c2cd47c6'Hendrik Leppkes2016-01-011-0/+1
|\ | | | | | | | | | | | | * commit '2c6811397bdf13d43ca206e48d6d6da9c2cd47c6': lavc: add profiles to AVCodecDescriptor Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * lavc: add profiles to AVCodecDescriptorAnton Khirnov2015-12-121-0/+1
| | | | | | | | | | The profiles are a property of the codec, so it makes sense to export them through AVCodecDescriptors, not just the codec implementations.
* | lavc/dsd_tablegen: always generate tables at runtimeGanesh Ajjanagadde2015-12-301-3/+1
| | | | | | | | | | | | | | | | | | Commit b272c3a5aa has sped up dsd_tablegen, and now table generation takes ~ 40k cycles. Thus, these tables can always be generated at runtime. Tested with/without --enable-hardcoded-tables. Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
* | vaapi: Add VP9 hwaccell supportTimo Rothenpieler2015-12-221-0/+1
| | | | | | | | Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
* | lavc: add text encoderClément Bœsch2015-12-211-0/+1
| |
* | avcodec/Makefile: add missing dep for g723_1 encoderJames Almer2015-12-191-1/+1
| | | | | | | | Signed-off-by: James Almer <jamrial@gmail.com>
* | Merge commit 'e02de9df4b218bd6e1e927b67fd4075741545688'Hendrik Leppkes2015-12-171-0/+2
|\ \ | |/ | | | | | | | | | | * commit 'e02de9df4b218bd6e1e927b67fd4075741545688': lavc: export Dirac parsing API used by the ogg demuxer as public Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * lavc: export Dirac parsing API used by the ogg demuxer as publicAnton Khirnov2015-12-061-0/+2
| | | | | | | | Also, stop using AVCodecContext for storing the stream parameters.
* | avcodec/aacsbr_tablegen: always initialize tables at runtimeGanesh Ajjanagadde2015-12-091-6/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This gets rid of virtually useless hardcoded tables hackery. The reason it is useless is that a 320 element lut is anyway placed regardless of --enable-hardcoded-tables, from which all necessary tables are trivially derived at runtime at very low cost: sample benchmark (x86-64, Haswell, GNU/Linux, single run is really what is relevant here since looping drastically changes the bench). Fluctuations are on the order of 10% for the single run test: 39400 decicycles in aacsbr_tableinit, 1 runs, 0 skips 25325 decicycles in aacsbr_tableinit, 2 runs, 0 skips 18475 decicycles in aacsbr_tableinit, 4 runs, 0 skips 15008 decicycles in aacsbr_tableinit, 8 runs, 0 skips 13016 decicycles in aacsbr_tableinit, 16 runs, 0 skips 12005 decicycles in aacsbr_tableinit, 32 runs, 0 skips 11546 decicycles in aacsbr_tableinit, 64 runs, 0 skips 11506 decicycles in aacsbr_tableinit, 128 runs, 0 skips 11500 decicycles in aacsbr_tableinit, 256 runs, 0 skips 11183 decicycles in aacsbr_tableinit, 509 runs, 3 skips Tested with FATE with/without --enable-hardcoded-tables. Reviewed-by: Rostislav Pehlivanov <atomnuker@gmail.com> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
* | Merge commit 'f023d57d355ff3b917f1aad9b03db5c293ec4244'Hendrik Leppkes2015-12-071-3/+4
|\ \ | |/ | | | | | | | | | | | | | | * commit 'f023d57d355ff3b917f1aad9b03db5c293ec4244': lavc: G.723.1 encoder Split existing FFmpeg G.723.1 encoder into a new file. Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * lavc: G.723.1 encoderMohamed Naufal2015-11-301-0/+2
| | | | | | | | | | | | Additional improvements by Michael Niedermayer <michaelni@gmx.at>. Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
* | Merge commit '165cc6fb9defcd79fd71c08167f3e8df26b058ff'Hendrik Leppkes2015-12-071-2/+2
|\ \ | |/ | | | | | | | | | | * commit '165cc6fb9defcd79fd71c08167f3e8df26b058ff': g723_1: Move sharable functions to a separate file Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * g723_1: Move sharable functions to a separate fileVittorio Giovara2015-11-301-2/+2
| | | | | | | | Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
* | Merge commit 'aac996cc01042194bf621d845bbe684549b5882e'Hendrik Leppkes2015-12-071-2/+2
|\ \ | |/ | | | | | | | | | | * commit 'aac996cc01042194bf621d845bbe684549b5882e': g723_1: Rename files to better reflect their purpose Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * g723_1: Rename files to better reflect their purposeVittorio Giovara2015-11-301-1/+1
| | | | | | | | Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
* | avcodec: implement vp9 dxva2 hwaccelHendrik Leppkes2015-12-071-0/+2
| |
* | avcodec/aac_tablegen: get rid of hardcoded tables entirelyGanesh Ajjanagadde2015-11-281-5/+2
| | | | | | | | | | | | | | | | | | | | Commit 96786a12f6df26990bbe7c0ca4592b3731724469 makes runtime initialization cheap. Tested with FATE, with/without --enable-hardcoded-tables. Reviewed-by: Rostislav Pehlivanov <atomnuker@gmail.com> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
* | mmaldec: add vc1 decoding supportwm42015-11-071-0/+1
| |
* | XMA1 and XMA2 stereo decodersPaul B Mahol2015-11-061-0/+2
| | | | | | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* | avcodec: add Interplay ACM decoderPaul B Mahol2015-11-031-0/+1
| | | | | | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* | Merge commit 'd35d0c723e3c8fc8cde76bf677f67928f5e179a8'Hendrik Leppkes2015-11-021-1/+0
|\ \ | |/ | | | | | | | | | | * commit 'd35d0c723e3c8fc8cde76bf677f67928f5e179a8': vdpau: remove dysfunctional H.263 support Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * vdpau: remove dysfunctional H.263 supportRémi Denis-Courmont2015-10-301-1/+0
| | | | | | | | | | | | The VDPAU API never explicitly supported H.263 in the first place. Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
* | avcodec: add ADPCM AICA decoderPaul B Mahol2015-10-291-0/+1
| | | | | | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* | avcodec: install avdct.h as public headerAndreas Cadhalpun2015-10-271-0/+1
| | | | | | | | | | | | | | The commit 932ff70 introducing this header mentions it should be public. Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
* | Merge commit '533a6198505edd1379e1cd722852350ae4a85acc'Hendrik Leppkes2015-10-271-0/+1
|\ \ | |/ | | | | | | | | | | * commit '533a6198505edd1379e1cd722852350ae4a85acc': innoHeim/Rsupport Screen Capture Codec decoder Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * innoHeim/Rsupport Screen Capture Codec decoderVittorio Giovara2015-10-231-0/+1
| | | | | | | | Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
| * kvazaar: Add libkvazaar HEVC encoderArttu Ylä-Outinen2015-10-231-0/+1
| | | | | | | | | | Signed-off-by: Arttu Ylä-Outinen <arttu.yla-outinen@tut.fi> Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* | avcodec: add SDX2 DPCM decoderPaul B Mahol2015-10-261-0/+1
| | | | | | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* | mmaldec: Add mpeg2 decoding supportJulian Scheel2015-10-221-0/+1
| | | | | | | | | | | | | | | | | | | | Register mmaldec as mpeg2 decoder. Supporting mpeg2 in mmaldec is just a matter of setting the correct MMAL_ENCODING on the input port. To ease the addition of further supported mmal codecs a macro is introduced to generate the decoder and decoder class structs. Signed-off-by: Julian Scheel <julian@jusst.de> Signed-off-by: wm4 <nfxjfg@googlemail.com>
* | aacenc: add support for encoding files using Long Term PredictionRostislav Pehlivanov2015-10-171-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Long Term Prediction allows for prediction of spectral coefficients via the previously decoded time-dependent samples. This feature works well with harmonic content 2 or more frames long, like speech, human or non-human, piano music or any constant tones at very low bitrates. It should be noted that the current coder is highly efficient and the rate control system is unable to encode files at extremely low bitrates (less than 14kbps seems to be impossible) so this extension isn't capable of optimum operation. Dramatic difference is observable with some types of audio and speech but for the most part the audiable differences are subtle. The spectrum looks better however so the encoder is able to harvest the additional bits that this feature provies, should the user choose to enable it. So it's best to enable this feature only if encoding at the absolutely lowest bitrate that the encoder is capable of.
* | avcodec: add ADPCM PSX decoderPaul B Mahol2015-10-161-0/+1
| | | | | | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* | Merge commit '00332e0a064dad866812de9162b009cbaba6f5df'Hendrik Leppkes2015-10-141-0/+1
|\ \ | |/ | | | | | | | | | | * commit '00332e0a064dad866812de9162b009cbaba6f5df': wrapped_avframe: Initial implementation Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * wrapped_avframe: Initial implementationLuca Barbato2015-10-101-0/+1
| |
* | AAC encoder: memoize quantize_band_costClaudio Freire2015-10-121-0/+2
| | | | | | | | | | | | | | | | | | | | The bulk of calls to quantize_band_cost are replaced by a call to a version that memoizes, greatly improving performance, since during coefficient search there is a great deal of repeat work. Memoization cannot always be applied, so do this in a different function, and leave the original as-is.
* | avcodec: remove leftover iff_byterun1 decoderAndreas Cadhalpun2015-10-121-1/+0
| | | | | | | | | | | | | | | | | | | | | | It was merged with the iff_ilbm decoder in commit 929a24efff9a208a52748605eb412ffb915c1403. Define AV_CODEC_ID_IFF_BYTERUN1 as AV_CODEC_ID_IFF_ILBM for API compatibility. Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
* | Revert "cabac: Allow hardcoding CABAC table."Derek Buitenhuis2015-10-101-3/+1
| | | | | | | | | | | | | | | | This becomes unuseful in the following commit. This reverts commit 092d1977cc7146f20c8db2155e7d648afb300de7. Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* | avcodec/takdec: add x86 SIMD for rest of decorrelation modesPaul B Mahol2015-10-091-1/+1
| | | | | | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* | Merge commit 'bb198c4997d5036f3bf91de51e44f807115677d0'Hendrik Leppkes2015-10-051-1/+2
|\ \ | |/ | | | | | | | | | | * commit 'bb198c4997d5036f3bf91de51e44f807115677d0': d3d11va: make av_d3d11va_alloc_context() available at all times Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * d3d11va: make av_d3d11va_alloc_context() available at all timesAnton Khirnov2015-10-031-1/+2
| | | | | | | | The public API should not depend on the build configuration.
OpenPOWER on IntegriCloud