aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* | avcodec/avuienc: Use ff_alloc_packet()Michael Niedermayer2015-07-051-1/+1
| | | | | | | | | | | | | | This should be faster in theory for AVUI, no speed difference meassurable though Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | avcodec/avuienc: Initialize output dataMichael Niedermayer2015-07-051-0/+2
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | avcodec/rawenc: Use ff_alloc_packet() instead of ff_alloc_packet2()Michael Niedermayer2015-07-051-1/+1
| | | | | | | | | | | | | | | | | | the later is not optimal when the buffer size is well known at allocation time This avoids a memcpy() Overall 2.5% speedup with a random 1920x1080 video Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | aacenc: implement Intensity Stereo encoding supportRostislav Pehlivanov2015-07-053-3/+117
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit implements intensity stereo coding support to the native aac encoder. This is a way to increase the efficiency of the encoder by zeroing the right channel's spectral coefficients (in a channel pair) and rederiving them in the decoder using information from the scalefactor indices of special band types. This commit confomrs to the official ISO 13818-7 specifications, although due to their ambiguity certain deviations have been taken to ensure maximum sound quality. This commit has been extensively tested and has shown to not result in audiable audio artifacts unless in extreme cases. This commit also adds an option, aac_is, which has the value of 0 by default. Intensity Stereo is part of the scalable aac profile and is thus non-default. The way IS coding works is that it rederives the right channel's spectral coefficients from the left channel via the scalefactor index values left in the right channel. Since an entire band's spectral coefficients do not need to be coded, the encoder's efficiency jumps up and it unzeroes some high frequency values which it previously did not have enough bits to encode. That way less information is lost than the information lost by rederiving the spectral coefficients with some error. This is why the filesize of files encoded with IS do not decrease significantly. Users wishing that IS coding should reduce filesize are expected to reduce their encoding bitrates appropriately. This is V2 of the commit. The old version did not mark ms_mask as 0 since M/S and IS coding are incompactible, which resulted in distortions with M/S coding enabled. This version also improves phase detection by measuring it for every spectral coefficient in the band and using a simple majority rule to determine whether the coefficients are in or out of phase. Also, the energy values per spectral coefficient were changed as to reflect the official specifications. Reviewed-by: Claudio Freire <klaussfreire@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | aacenc: add support for coding of IS spectral coefficientsRostislav Pehlivanov2015-07-051-10/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | This commit adds support for the coding of intensity stereo spectral coefficients. It also fixes the Mid/Side coding of band_types higher than RESERVED_BT (M/S must not be applied to their spectral coefficients, but marking M/S as present in encode_ms_info() is okay). Much of the changes here were taken from the decoder and inverted. This commit does not change the functionality of the decoder as the previous patch in this series zeroes ms_mask and is_mask. Reviewed-by: Claudio Freire <klaussfreire@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | aaccoder: add a new perceptual noise substitution implementationRostislav Pehlivanov2015-07-053-1/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit finalizes the PNS implementation previously added to the encoder by moving it to a seperate function search_for_pns() and thus making it coder-generic. This new implementation makes use of the spread field of the psy bands and the lambda quality feedback paremeter. The spread of the spectrum in a band prevents PNS from being used excessively and thus preserve more phase information in high frequencies. The lambda parameter allows the number of PNS-marked bands to vary based on the lambda parameter and the amount of bits available, making better choices on which bands are to be marked as noise. Comparisons with the previous PNS implementation can be found here: https://trac.ffmpeg.org/attachment/wiki/Encode/AAC/ This is V2 of the patch, the changes from the previous version being that this version uses the new band->spread metric from aacpsy and normalizes the energy using the group size. These changes were suggested by Claudio Freire on the mailing list. Another change is the use of lambda to alter the frequency threshold. This change makes the actual threshold frequencies vary between +-2Khz of what's specified, depending on frame encoding performance. Reviewed-by: Claudio Freire <klaussfreire@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | aaccoder: remove previous PNS implementation from twoloopRostislav Pehlivanov2015-07-051-26/+3
| | | | | | | | | | | | | | | | | | This commit undoes commit c5d4f87e81111427c0952278ec247fa8ab1e6e52 and removes PNS band marking from the twoloop coder, which has been reimplemented in a better way in this series of patches. Reviewed-by: Claudio Freire <klaussfreire@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | aacenc: use the new function for setting special band scalefactor indicesRostislav Pehlivanov2015-07-053-0/+8
| | | | | | | | | | | | | | | | | | | | | | This commit enables the function added with commit 7c10b87 and uses that new function for setting any special scalefactor indices. This commit does not change the behaviour of the encoder since no bands are being marked as either NOISE_BT(due to the previous PNS implementation removed in the previous commit) or INTENSITY_BT2/INTENSITY_BT. Reviewed-by: Claudio Freire <klaussfreire@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | avcodec/nvenc: Add support for H.264 High 444 Predictive encodingPhilip Langdale2015-07-051-3/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Newer versions of the nvenc hardware support The High 444 Predictive profile of H.264, and can also do lossless encoding under this profile if desired. This change introduces support for the profile, and exposes the appropriate presets for requesting lossless encoding. I tested lossless by generating a baseline sample with testsrc converted to raw yuv444p, then encoded the sample with nvenc, then did a framemd5 comparision of both the raw video and the nvenc encode. The framemd5 reports were identical. Signed-off-by: Philip Langdale <philipl@overt.org> Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
* | avformat/yuv4mpegenc: use avio_printf()Paul B Mahol2015-07-031-3/+1
| | | | | | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* | avfilter/avf_showvolume: make it possible to use current channel number in ↵Paul B Mahol2015-07-032-2/+6
| | | | | | | | | | | | color expression Signed-off-by: Paul B Mahol <onemda@gmail.com>
* | lavfi: add (a)drawgraph filterPaul B Mahol2015-07-036-1/+453
| | | | | | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* | fate/api-tests: Tests that need samples should only run if SAMPLES is setGeorge Boyle2015-07-041-5/+13
| | | | | | | | | | | | | | | | This change fixes a bug where a test that required a sample was being included in the suite when SAMPLES was not set. It also improves the consistency of variable names relating to the API tests. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | YUV->BGR32 MMX supportKevin Coyle2015-07-041-0/+30
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | swscale/output: fix input indexing in yuv2ya8_2_c()Michael Niedermayer2015-07-041-2/+2
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | swscale/output: fix null pointer dereference in yuv2ya8_2_c()Michael Niedermayer2015-07-031-1/+1
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge commit 'f046c3b5ac36848cce824b008e0347c621523041'Michael Niedermayer2015-07-032-0/+6
|\| | | | | | | | | | | | | | | * commit 'f046c3b5ac36848cce824b008e0347c621523041': lavc: Move deprecation warning disabling to files including the table lavc: Disable deprectation warnings coming from options table Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavc: Move deprecation warning disabling to files including the tableVittorio Giovara2015-07-033-2/+6
| | | | | | | | | | | | Unbreak build from 7a5902c556d84a367dd64a003a4e7244fc3a73d1. Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
| * lavc: Disable deprectation warnings coming from options tableVittorio Giovara2015-07-031-0/+2
| |
* | Merge commit '832129431fd5c693b12c32a1563944c631feaf36'Michael Niedermayer2015-07-032-2/+2
|\| | | | | | | | | | | | | | | | | | | | | * commit '832129431fd5c693b12c32a1563944c631feaf36': lavu: Add version information for av_version_info() Conflicts: doc/APIchanges libavutil/version.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavu: Add version information for av_version_info()Vittorio Giovara2015-07-032-4/+4
| | | | | | | | Move the APIchange entry at the top.
* | avfilter/vf_lut: fix oversightPaul B Mahol2015-07-031-1/+1
| | | | | | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* | avcodec/shorten: use init_get_bits8()Paul B Mahol2015-07-031-1/+2
| | | | | | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* | avfilter/af_astats: implement recalculation of stats after each X framesPaul B Mahol2015-07-031-7/+26
| | | | | | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* | avfilter/af_astats: export metadataPaul B Mahol2015-07-032-2/+113
| | | | | | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* | avcodec/j2kenc: Support user specified tile dimensionsMichael Niedermayer2015-07-031-2/+7
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | avcodec/jpeg2000dec: Fix decoding of subsampled multi tile imagesMichael Niedermayer2015-07-031-8/+8
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | aacenc: reset marked IS and M/S bands upon frame encodingRostislav Pehlivanov2015-07-031-0/+2
| | | | | | | | | | | | | | | | | | | | This commit resets any bands marked as M/S or IS upon encoding a frame. This is needed because the arrays may contain some residual information upon allocation on startup and because there isn't any mechanism to reset the arrays once the frame has been encoded. Reviewed-by: Claudio Freire <klaussfreire@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | aaccoder: fix M/S codingRostislav Pehlivanov2015-07-031-7/+8
| | | | | | | | | | | | | | | | | | | | There were some mistakes in the code for M/S stereo, this commit fixes them. The start variable was not being reset for every window and every access to the coefficients was incorrect as well. This fixes that by properly addressing the coefficients using both windows and setting the start on every window to zero. Reviewed-by: Claudio Freire <klaussfreire@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | aacpsy: use a different metric for the spread of a bandRostislav Pehlivanov2015-07-031-1/+1
| | | | | | | | | | | | | | This commit modifies 02dbed6 to use band->active_lines to better gauge how much information is contained within a single band and thus allow the perceptual noise subsitution to more accurately determine which bands to code as noise. The spread[w+g] used before this patch behaved more like a low-pass filter for PNS band_types, which could mistakingly mark some low frequency bands as noise. Reviewed-by: Claudio Freire <klaussfreire@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | avutil: add missing bswap includeMichael Niedermayer2015-07-031-0/+1
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | avfilter/vf_lut: >8 bit depth planar yuv supportPaul B Mahol2015-07-032-11/+99
| | | | | | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* | Merge commit '80f955c90867561dcce769216bc497e13281eb38'Michael Niedermayer2015-07-031-1/+1
|\| | | | | | | | | | | | | * commit '80f955c90867561dcce769216bc497e13281eb38': vda: Check the correct pointer for buffer allocation Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * vda: Check the correct pointer for buffer allocationLuca Barbato2015-07-031-1/+1
| | | | | | | | | | CC: libav-stable@libav.org Found-By: kropping
* | Merge commit '76d4c62734fbb8a9f497712812f30ff5c27e787f'Michael Niedermayer2015-07-030-0/+0
|\| | | | | | | | | | | | | | | | | | | | | * commit '76d4c62734fbb8a9f497712812f30ff5c27e787f': webp: Make sure enough bytes are available Conflicts: libavcodec/webp.c See: 0762152f7af6cd93bc8f504d5503723500c3f369 Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * webp: Make sure enough bytes are availableAndreas Cadhalpun2015-07-031-1/+1
| | | | | | | | | | | | | | | | Every chunk needs at least 8 bytes for chunk_type and chunk_size. Prevent a possible infinite loop. CC: libav-stable@libav.org Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* | webp: fix infinite loop in webp_decode_frameAndreas Cadhalpun2015-07-031-1/+1
| | | | | | | | | | | | | | | | | | The loop always needs at least 8 bytes for chunk_type and chunk_size. If fewer are left, bytestream2_get_le32 just returns 0 without reading any bytes, leading to an infinite loop. Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge commit '016cac75c6061a1c03f812ddf258b8baefe70b00'Michael Niedermayer2015-07-031-0/+2
|\| | | | | | | | | | | | | * commit '016cac75c6061a1c03f812ddf258b8baefe70b00': asfdec: prevent the infinite loop in detect unknown_subobject Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * asfdec: prevent the infinite loop in detect unknown_subobjectAlexandra Hájková2015-07-031-0/+2
| | | | | | | | Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* | Merge commit '9752d2e6cc9b9e8070ec515db8ed8374683d0856'Michael Niedermayer2015-07-031-1/+2
|\| | | | | | | | | | | | | * commit '9752d2e6cc9b9e8070ec515db8ed8374683d0856': asfdec: prevent possible memory leak in the asf_read_metadata_obj Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * asfdec: prevent possible memory leak in the asf_read_metadata_objAlexandra Hájková2015-07-031-1/+2
| | | | | | | | Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* | Merge commit '910247f1720c6aae422723c05dac6d0b19f20bec'Michael Niedermayer2015-07-038-16/+40
|\| | | | | | | | | | | | | | | | | | | | | * commit '910247f1720c6aae422723c05dac6d0b19f20bec': lavc: Deprecate avctx.{inter,intra}_quant_bias Conflicts: libavcodec/mpegvideo_enc.c libavcodec/version.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavc: Deprecate avctx.{inter,intra}_quant_biasVittorio Giovara2015-07-028-16/+40
| | | | | | | | | | | | | | They are used by dnxhd and mpegvideo_enc exclusively, move them to codec private options instead. Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
* | Merge commit '1316df7aa98c4784f190d107206d0bb12c590b89'Michael Niedermayer2015-07-035-8/+9
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '1316df7aa98c4784f190d107206d0bb12c590b89': lavu: add an API function to return the Libav version string Conflicts: .gitignore Makefile cmdutils.c doc/APIchanges libavutil/avutil.h libavutil/utils.c See: f91126643a91c2d3f8d8e210c8facaf259951b03 Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavu: add an API function to return the Libav version stringwm42015-07-026-5/+22
| | | | | | | | | | | | | | | | This returns something like "v12_dev0-1332-g333a27c". This is much more useful than the individual library versions, of which there are too many, and which are very hard to map back to releases or git commits. Signed-off-by: Janne Grunau <janne-libav@jannau.net>
* | swscale: implement YA8 outputPaul B Mahol2015-07-0213-1/+108
| | | | | | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* | wavpack: limit extra_bits to 32 and use get_bits_longAndreas Cadhalpun2015-07-021-2/+6
| | | | | | | | | | | | | | | | More than 32 bits can't be stored in an integer and get_bits should not be used with more than 25 bits. Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
* | avfilter/vf_mpdecimate: remove packed formatsPaul B Mahol2015-07-021-3/+0
| | | | | | | | | | | | Packed formats are not supported. Signed-off-by: Paul B Mahol <onemda@gmail.com>
* | avfilter: use AVFILTER_DEFINE_CLASS()Paul B Mahol2015-07-025-36/+9
| | | | | | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* | avcodec/qsvenc_h264: Change the set of performance presets to match with the ↵Ivan Uskov2015-07-021-4/+8
| | | | | | | | | | | | MFX library constants. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>