Commit Graph

73878 Commits

Author SHA1 Message Date
Marton Balint
9476c4c67e lavc/utils: call add_metadata_from_side_data in ff_init_buffer_info
This should ensure that each frame get its metadata from its proper packet
regardless of frame delays caused by reordering or threading.

Signed-off-by: Marton Balint <cus@passwd.hu>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-07-06 00:39:29 +02:00
Marton Balint
10b6a83fb3 lavc/utils: change add_metadata_from_side_data to accept avpacket
Signed-off-by: Marton Balint <cus@passwd.hu>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-07-06 00:08:48 +02:00
Marton Balint
3a19fe0048 lavc/utils: remove redundant call to ff_init_buffer_info
It does the same as calling ff_decode_frame_props.

Signed-off-by: Marton Balint <cus@passwd.hu>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-07-06 00:07:55 +02:00
Carl Eugen Hoyos
97fa0f37fe lavc/j2kenc: Enable yuv42x and yuv41x encoding.
Fixes ticket #535.
Fixes ticket #4524.
2015-07-06 00:06:54 +02:00
James Almer
e43ea1cbb2 doc/texi2pod: fix an unescaped left brace
This silences some deprecation warnings

Reviewed-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: James Almer <jamrial@gmail.com>
2015-07-05 19:02:48 -03:00
Michael Niedermayer
c0db6320a6 avcodec/avuienc: Use ff_alloc_packet()
This should be faster in theory for AVUI, no speed difference
meassurable though

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-07-05 23:05:25 +02:00
Michael Niedermayer
0e7bbdbeaf avcodec/avuienc: Initialize output data
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-07-05 23:05:25 +02:00
Michael Niedermayer
47496eb97c avcodec/rawenc: Use ff_alloc_packet() instead of ff_alloc_packet2()
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>
2015-07-05 20:00:15 +02:00
Rostislav Pehlivanov
e8576dc8df aacenc: implement Intensity Stereo encoding support
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>
2015-07-05 16:59:26 +02:00
Rostislav Pehlivanov
0b233900fa aacenc: add support for coding of IS spectral coefficients
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>
2015-07-05 16:58:37 +02:00
Rostislav Pehlivanov
38fd4c2e66 aaccoder: add a new perceptual noise substitution implementation
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>
2015-07-05 16:39:06 +02:00
Rostislav Pehlivanov
117b15f4a8 aaccoder: remove previous PNS implementation from twoloop
This commit undoes commit c5d4f87e81
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>
2015-07-05 16:38:32 +02:00
Rostislav Pehlivanov
e06578e392 aacenc: use the new function for setting special band scalefactor indices
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>
2015-07-05 16:36:38 +02:00
Philip Langdale
671bdd4b09 avcodec/nvenc: Add support for H.264 High 444 Predictive encoding
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>
2015-07-05 13:51:56 +02:00
Frank Heckenbach
161a301d44 mpjpeg: Write the Content-length 2015-07-04 00:51:03 +02:00
Luca Barbato
d09b4cce21 mpjpeg: Simplify using avio_printf 2015-07-04 00:46:44 +02:00
Vittorio Giovara
f046c3b5ac lavc: Move deprecation warning disabling to files including the table
Unbreak build from 7a5902c556.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-07-03 21:02:50 +02:00
Paul B Mahol
5233f2534c avformat/yuv4mpegenc: use avio_printf()
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2015-07-03 18:43:21 +00:00
Paul B Mahol
e658b1036c avfilter/avf_showvolume: make it possible to use current channel number in color expression
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2015-07-03 18:43:21 +00:00
Paul B Mahol
c3a5702ebf lavfi: add (a)drawgraph filter
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2015-07-03 18:43:21 +00:00
George Boyle
4385a1ce8f fate/api-tests: Tests that need samples should only run if SAMPLES is set
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>
2015-07-04 02:15:16 +02:00
Kevin Coyle
1262711388 YUV->BGR32 MMX support
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-07-04 00:03:45 +02:00
Michael Niedermayer
8255b14c68 swscale/output: fix input indexing in yuv2ya8_2_c()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-07-04 00:03:45 +02:00
Michael Niedermayer
ab80d3fb3a swscale/output: fix null pointer dereference in yuv2ya8_2_c()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-07-03 23:03:25 +02:00
Michael Niedermayer
3b03186d56 Merge commit 'f046c3b5ac36848cce824b008e0347c621523041'
* 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>
2015-07-03 21:40:47 +02:00
Michael Niedermayer
d563e13a7c Merge commit '832129431fd5c693b12c32a1563944c631feaf36'
* commit '832129431fd5c693b12c32a1563944c631feaf36':
  lavu: Add version information for av_version_info()

Conflicts:
	doc/APIchanges
	libavutil/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-07-03 21:06:46 +02:00
Paul B Mahol
866404df2d avfilter/vf_lut: fix oversight
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2015-07-03 16:58:56 +00:00
Paul B Mahol
94cfb6db7d avcodec/shorten: use init_get_bits8()
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2015-07-03 16:57:11 +00:00
Paul B Mahol
c0d676f977 avfilter/af_astats: implement recalculation of stats after each X frames
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2015-07-03 16:34:28 +00:00
Paul B Mahol
d3836b603e avfilter/af_astats: export metadata
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2015-07-03 16:34:28 +00:00
Michael Niedermayer
9f653e6d36 avcodec/j2kenc: Support user specified tile dimensions
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-07-03 18:23:08 +02:00
Michael Niedermayer
d554715f67 avcodec/jpeg2000dec: Fix decoding of subsampled multi tile images
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-07-03 18:08:01 +02:00
Rostislav Pehlivanov
9f4f578704 aacenc: reset marked IS and M/S bands upon frame encoding
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>
2015-07-03 16:17:16 +02:00
Vittorio Giovara
7a5902c556 lavc: Disable deprectation warnings coming from options table 2015-07-03 14:30:17 +01:00
Vittorio Giovara
832129431f lavu: Add version information for av_version_info()
Move the APIchange entry at the top.
2015-07-03 14:30:11 +01:00
Rostislav Pehlivanov
57848ef3c6 aaccoder: fix M/S coding
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>
2015-07-03 13:27:25 +02:00
Rostislav Pehlivanov
8e607c747e aacpsy: use a different metric for the spread of a band
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>
2015-07-03 13:17:57 +02:00
Michael Niedermayer
8f4cfda972 avutil: add missing bswap include
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-07-03 13:17:57 +02:00
Paul B Mahol
b74ebd09c7 avfilter/vf_lut: >8 bit depth planar yuv support
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2015-07-03 09:29:06 +00:00
Michael Niedermayer
daff49ccf3 Merge commit '80f955c90867561dcce769216bc497e13281eb38'
* commit '80f955c90867561dcce769216bc497e13281eb38':
  vda: Check the correct pointer for buffer allocation

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-07-03 04:36:31 +02:00
Michael Niedermayer
3ffa385801 Merge commit '76d4c62734fbb8a9f497712812f30ff5c27e787f'
* commit '76d4c62734fbb8a9f497712812f30ff5c27e787f':
  webp: Make sure enough bytes are available

Conflicts:
	libavcodec/webp.c

See: 0762152f7a
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-07-03 04:07:16 +02:00
Andreas Cadhalpun
0762152f7a webp: fix infinite loop in webp_decode_frame
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>
2015-07-03 04:06:19 +02:00
Michael Niedermayer
30ffbeb04a Merge commit '016cac75c6061a1c03f812ddf258b8baefe70b00'
* commit '016cac75c6061a1c03f812ddf258b8baefe70b00':
  asfdec: prevent the infinite loop in detect unknown_subobject

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-07-03 03:58:33 +02:00
Michael Niedermayer
7755a57440 Merge commit '9752d2e6cc9b9e8070ec515db8ed8374683d0856'
* commit '9752d2e6cc9b9e8070ec515db8ed8374683d0856':
  asfdec: prevent possible memory leak in the asf_read_metadata_obj

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-07-03 03:51:00 +02:00
Michael Niedermayer
a8ab64d2f7 Merge commit '910247f1720c6aae422723c05dac6d0b19f20bec'
* commit '910247f1720c6aae422723c05dac6d0b19f20bec':
  lavc: Deprecate avctx.{inter,intra}_quant_bias

Conflicts:
	libavcodec/mpegvideo_enc.c
	libavcodec/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-07-03 03:40:22 +02:00
Michael Niedermayer
e15e78f391 Merge commit '1316df7aa98c4784f190d107206d0bb12c590b89'
* 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: f91126643a
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-07-03 03:22:48 +02:00
Luca Barbato
80f955c908 vda: Check the correct pointer for buffer allocation
CC: libav-stable@libav.org
Found-By: kropping
2015-07-03 01:58:32 +02:00
Andreas Cadhalpun
76d4c62734 webp: Make sure enough bytes are available
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>
2015-07-03 01:50:09 +02:00
Alexandra Hájková
016cac75c6 asfdec: prevent the infinite loop in detect unknown_subobject
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-07-03 01:50:09 +02:00
Alexandra Hájková
9752d2e6cc asfdec: prevent possible memory leak in the asf_read_metadata_obj
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-07-03 01:50:09 +02:00