Commit Graph

33285 Commits

Author SHA1 Message Date
Timothy Gu
5cbcf2b24d aacenctab: Use FF_ARRAY_ELEMS
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Reviewed-by: Ganesh Ajjanagadde <gajjanag@mit.edu>
2015-08-22 04:07:09 +01:00
Rostislav Pehlivanov
670dfda143 aacenc_tns: remove unused header
Thanks to @nevcairiel for pointing this one out.
Another thing which stopped msvc from compiling.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2015-08-21 23:36:09 +01:00
Clément Bœsch
cafba99b51 avcodec/version: fix 2 recently introduced typo 2015-08-21 19:33:28 -03:00
Rostislav Pehlivanov
5df166e430 aacenc_tns: re-enable coefficient compression
This time in a platform/compiler-generic way.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2015-08-21 21:36:06 +01:00
Rostislav Pehlivanov
88a5f93f62 aacenc: treat unknown profile as AAC-LC
When the encoder is ran without specifying -profile:a
the default avctx->profile value is -99 (FF_PROFILE_UKNOWN),
which used to be treated as AAC-LC.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2015-08-21 21:28:20 +01:00
Rostislav Pehlivanov
fb0c295cc3 aacenc_tns: temporarily disable coefficient compression
Hotfix to deal with msvc. Sane compilers lack POSIX ffs().
It only saves a single bit or so and isn't worth it that much.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2015-08-21 20:55:46 +01:00
Rostislav Pehlivanov
76b81b10d9 aacenc: implement the complete AAC-Main profile
This commit finalizes AAC-Main profile encoding support
by implementing all mandatory and optional tools available
in the specifications and current decoders.

The AAC-Main profile reqires that prediction support be
present (although decoders don't require it to be enabled)
for an encoder to be deemed capable of AAC-Main encoding,
as well as TNS, PNS and IS, all of which were implemented
with previous commits or earlier of this year.

Users are encouraged to test the new functionality using either
-profile:a aac_main or -aac_pred 1, the former of which will enable
the prediction option by default and the latter will change the
profile to AAC-Main. No other options shall be changed by enabling
either, it's currently up to the users to decide what's best.

The current implementation works best using M/S and/or IS,
so users are also welcome to enable both options and any
other options (TNS, PNS) for maximum quality.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2015-08-21 19:38:05 +01:00
Rostislav Pehlivanov
a1c487e921 aacenc_tns: implement temporal noise shaping
This commit implements temporal noise shaping support in the
encoder, along with an -aac_tns option to toggle it on or off
(off by default for now). TNS will increase audio quality
and reduce quantization noise by applying a multitap FIR filter
across allowed coefficients and transmit side information to the
decoder so it could create an inverse filter.

Users are encouraged to test the new functionality by enabling
-aac_tns 1 during encoding.

No major bugs are observable at this time so after a while if no
new problems appear and if the current implementation is deemed
of high enough quality and stability it will be enabled by default,
possibly at the same time the encoder has its experimental flag
removed and becomes the standard aac encoder in ffmpeg.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2015-08-21 19:27:38 +01:00
Rostislav Pehlivanov
eab12d072e aacenc: do not reject AAC-Main profile
This commit permits for the use of the Main profile
in encoding. The functionality of that profile will
be added in the commits following. By itself, this
commit does not alter anything.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2015-08-21 19:20:22 +01:00
Rostislav Pehlivanov
d1ca7142ac aaccoder: move the Intensity Stereo implementation out
This commit moves the intensity stereo implementation
out from aaccoder and into a separate file. This was
possible using the previous commits.

This commit also drastically improves the IS implementation
by making it phase invariant e.g. it will always choose the
best possible phase regardless of whether M/S coding is on
or most of the coefficients have identical phases.
This also increases the quality and reduces any distortions
introduced by enablind intensity stereo.

Users are encouraged to test it out using the -aac_is 1
parameter as it has always been.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2015-08-21 19:13:26 +01:00
Rostislav Pehlivanov
860dbe0275 aaccoder_mips: update function definitions
This commit updates the function definitions in the aaccoder_mips.c
file. This was broken around a month or so ago with the addition
of the rounding argument.
The previous commit in this series also introduced a separate array
to put the quantization error in, this also needed to be updated,
albeit non-functional, in the MIPS optimized aaccoder file.

Credits for the rounding goes to Claudio Freire.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2015-08-21 19:00:15 +01:00
Rostislav Pehlivanov
43b378a0d3 aaccoder: move the quantization functions to a separate file
This commit moves the quantizer to a separate header file.
This allows the quantizer to be used from a separate files outside
of aaccoder without having to put another function pointer and will
result in a slight speedup as the compiler can do more optimizations.

This is required for commits following.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2015-08-21 18:53:14 +01:00
Rostislav Pehlivanov
b47a1e5c5f aacenc: create and initialize an LTP context
This commit only creates and initializes an LTP
context which is needed for upcoming commits (TNS).

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2015-08-21 18:43:09 +01:00
Rostislav Pehlivanov
23e786be61 aacenc: populate the sce->ics.swb_offset table pointer
This commit simply populates the table pointer which is needed
for upcoming commits (TNS, prediction, etc.). Copied from
the decoder.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2015-08-21 18:40:44 +01:00
Rostislav Pehlivanov
e6c9f3a166 aacenc: reset special bands in the main frame encoding function
This commit moves the resetting of special bands (above RESERVED_BT)
to the main frame encoding function rather than the way it was done
previously in their corresponding search_for_... functions.

The reason why special bands need to be reset is that while normal
bands get chosen for every frame by the coder (twoloop by default)
the coders do not touch any special sfbs and will therefore
make them persist throughout the file.

If we zero them out any bands left unmarked will be chosen by
the second part of the coder (the trellis function in aaccoder.c).

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2015-08-21 18:36:09 +01:00
Rostislav Pehlivanov
32be264cea aacenc: coding style changes
This commit only changes the coding style to a saner way
of accessing coefficients (makes more sense to get the
memory address of a coefficients and start from there
rather than adding arbitrary numbers to offset a pointer).
Some compilers might detect an out of bounds access easier.

Also the way M/S and IS coefficients are calculated has been
changed, but should still have the same result (with the exception
that IS now applies from the normal coefficients rather than the
pristine ones, this is needed for upcoming commits).

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2015-08-21 18:30:51 +01:00
Ganesh Ajjanagadde
907373ea9d avcodec/x86/v210-init: fix unused variable warning
Fixes a -Wunused-variable while compiling with --disable-yasm on x86

Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-08-21 17:06:27 +02:00
Ganesh Ajjanagadde
36f7a37895 avcodec/jpeg2000: comment out unused variable
Fixes -Wunused-const-variable from
http://fate.ffmpeg.org/report.cgi?time=20150820031140&slot=arm64-darwin-clang-apple-5.1

Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-08-21 13:01:44 +02:00
James Almer
7a806c68a6 avcodec/hevcdsp: rename sao_band_filter c functions
Signed-off-by: James Almer <jamrial@gmail.com>
2015-08-21 02:24:30 -03:00
Michael Niedermayer
2bb54b82b5 avcodec/h264_mp4toannexb_bsf: Reorder operations in nal_size check
Fixes Ticket4778

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-08-21 03:37:32 +02:00
Ganesh Ajjanagadde
e8319f602e avcodec/metasound_data: comment out unused variable
Fixes -Wunused-const-variable from
http://fate.ffmpeg.org/report.cgi?time=20150820031140&slot=arm64-darwin-clang-apple-5.1

Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-08-20 23:39:04 +02:00
Ganesh Ajjanagadde
c3052c9e8a avcodec/aacsbr_fixed: remove unused variable
Fixes -Wunused-const-variable from
http://fate.ffmpeg.org/report.cgi?time=20150820031140&slot=arm64-darwin-clang-apple-5.1

Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Reviewed-by: "Ronald S. Bultje" <rsbultje@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-08-20 21:23:51 +02:00
Michael Niedermayer
0b7829901b */version.h: Add note/recommandition about bumping major
Reviewed-by: Andreas Cadhalpun <andreas.cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-08-19 21:37:32 +02:00
Ivan Uskov
fffae8e605 libavcodec/qsvdec.c: the ff_get_format() missed at refactoring has been restored
Reviewed-by: Hendrik Leppkes <h.leppkes@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-08-19 14:20:24 +02:00
Gwenole Beauchesne
9d1d7b367e vaapi: drop unused include.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2015-08-19 14:15:43 +02:00
Gwenole Beauchesne
8813d55fa5 vaapi: fix usage of invalid buffer ids.
Invalid buffer ids are defined by VA_INVALID_ID. Use that through out
vaapi_*.c support files now that we have private data initialized and
managed by libavcodec. Previously, the only requirement for the public
vaapi_context struct was to be zero-initialized.

This fixes support for 3rdparty VA drivers that strictly conform to
the API whereby an invalid buffer id is VA_INVALID_ID and the first
valid buffer id can actually be zero.

Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2015-08-19 14:05:32 +02:00
Gwenole Beauchesne
babd340f58 vaapi: streamline public context structure.
Move libavcodec managed objects from the public struct vaapi_context
to a new privately owned FFVAContext. This is done so that to clean up
and streamline the public structure, but also to prepare for new codec
support, thus requiring new internal data to be added in there.

The AVCodecContext.hwaccel_context, that holds the public vaapi_context,
shall no longer be accessed from within vaapi_*.c codec support files.

Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2015-08-19 14:03:24 +02:00
Gwenole Beauchesne
9f8e57efe4 vaapi: define a unique pixel format for VA-API (AV_PIX_FMT_VAAPI).
Deprecate older VA pixel formats (MOCO, IDCT) as it is now very unlikely
to ever be useful in the future. Only keep plain AV_PIX_FMT_VAAPI format
that is aliased to the older VLD variant.

This is an API change.

Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2015-08-19 14:03:24 +02:00
Sven Dueking
6eecb91fbc avcodec/qsvenc: Added PicTiming SEI
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-08-19 13:49:37 +02:00
Derek Buitenhuis
c981b1145a libx264: Add option to force IDR frames
Currently, when forcing an I frame, via API, or via the ffmpeg cli,
using -force_key_frames, we still let x264 decide what sort of
keyframe to user. In some cases, it is useful to be able to force
an IDR frame, e.g. for cutting streams.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2015-08-18 17:40:36 -03:00
wm4
a383f226f0 lavc: move vdpau decoders under FF_API_VDPAU.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2015-08-18 15:57:20 -04:00
Ronald S. Bultje
030b5a4f77 lavc: put remaining bits of vdpau-in-decoder under FF_API_CAP_VDPAU. 2015-08-18 15:57:19 -04:00
Ronald S. Bultje
7a629186ba Prepare for removal of obsolete FF_IDCT_* members. 2015-08-18 15:41:06 -04:00
Ronald S. Bultje
9468207e1c mpeg4video: use ff_dlog instead of av_log under debug&FF_DEBUG_PTS.
This fixes compilation with FF_API_UNUSED_MEMBERS=0.
2015-08-18 15:39:41 -04:00
Ronald S. Bultje
e3b7298aed lavc: fix compilation with FF_API_XVMC. 2015-08-18 12:05:57 -04:00
Ronald S. Bultje
b07d2a2509 libvpxenc: make flags i64 instead of dbl. 2015-08-18 12:04:57 -04:00
Ronald S. Bultje
6471040f56 FF_OPT_TYPE_* -> AV_OPT_TYPE_*. 2015-08-18 11:48:49 -04:00
Ronald S. Bultje
229843aa35 Replace av_dlog with ff_dlog.
ff_dlog checks compilability, and is non-public. av_dlog is deprecated
and no longer exists if FF_API_DLOG=0.
2015-08-18 10:24:01 -04:00
Ronald S. Bultje
70a19c482a Move ff_dlog from lavc to lavu. 2015-08-18 09:46:49 -04:00
Hendrik Leppkes
983fa5a1a9 Merge commit '7bf9647264308d2df74b2b50669f2d02a7ecc90b'
* commit '7bf9647264308d2df74b2b50669f2d02a7ecc90b':
  vp7: bound checking in vp7_decode_frame_header

Only partially merged, see 46f72ea507

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-08-18 09:14:08 +02:00
Hendrik Leppkes
e721cb8d8b Merge commit 'f34b152eb7b7e8d2aee57c710a072cf74173fbe1'
* commit 'f34b152eb7b7e8d2aee57c710a072cf74173fbe1':
  libfdk-aacdec: Clean up properly if the init fails

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-08-18 09:09:55 +02:00
Hendrik Leppkes
4cf4831ae7 Merge commit '1b90433f79de857550d4d8c35c89fbe954920594'
* commit '1b90433f79de857550d4d8c35c89fbe954920594':
  libfdk-aacdec: Always decode into an intermediate buffer

Conflicts:
	libavcodec/libfdk-aacdec.c

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-08-18 09:05:54 +02:00
Hendrik Leppkes
9dc30d0811 Merge commit '87de6ddb7b7674e329d5c96677bd8685bc7f7855'
* commit '87de6ddb7b7674e329d5c96677bd8685bc7f7855':
  libfdk-aacdec: Bump the max number of channels to 8

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-08-18 09:02:15 +02:00
Carl Eugen Hoyos
84170d4be0 lavc/mjpegdec: Detect more CMYK images.
Fixes ticket #4772.
2015-08-17 15:53:41 +02:00
Michael Niedermayer
7f769ae41e avcodec/rv30: fix switching back to the original resolution
Fixes part of Ticket1388

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-08-17 02:07:34 +02:00
Philip Langdale
d3eb317b86 ffmpeg_vdpau: Ignore decoder's max supported level
The h264 decoder reports 4.1 as its maximum level, but it will decode
5.1 4K video just fine. In practice, the published level limits in
vdpau do not communicate anything that's actually useful.
2015-08-16 15:02:33 -07:00
Federico Tomassetti
7bf9647264 vp7: bound checking in vp7_decode_frame_header
CC: libav-stable@libav.org
2015-08-16 19:02:16 +02:00
Martin Storsjö
f34b152eb7 libfdk-aacdec: Clean up properly if the init fails
Previously most of the error paths leaked.

Also add FF_CODEC_CAP_INIT_THREADSAFE while adding caps_internal;
this decoder wrapper doesn't have any static data that is initialized.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-08-16 00:18:00 +03:00
Martin Storsjö
1b90433f79 libfdk-aacdec: Always decode into an intermediate buffer
For ADTS streams, the output format (number of channels, frame size)
can change at any point (with the latest version of fdk-aac, the decoder
seems to change format after a handful of frames, not outputting the
right format immediately, for cases that worked fine with the earlier
version of the lib).

Previously, the decoder decoded straight into the output frame once the
number of channels and frame size was known. This obviously does not
work if the number of channels or frame size changes.

The alternative would be to allocate the AVFrame with the maximum number
of channels and frame size, and change them afterward decoding into it,
but that may cause confusion to users e.g. of the get_buffer callback.
This solution should be more robust.

CC: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
2015-08-16 00:17:49 +03:00
Martin Storsjö
87de6ddb7b libfdk-aacdec: Bump the max number of channels to 8
In the latest version of fdk-aac, the decoder can output up to 8
channels; take this into account when preallocating buffers that
need to fit the output from any packet.

CC: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
2015-08-16 00:17:46 +03:00