Commit Graph

33979 Commits

Author SHA1 Message Date
Hendrik Leppkes
b54d645116 qsvdec: fix get_format and hwaccel_context handling
This enables the qsv transcoder to actually get activated
2015-10-22 17:01:13 +02:00
Hendrik Leppkes
866a4174db Merge commit 'dc923bc23b3efd949d0bf67ff1abdb95059e5843'
* commit 'dc923bc23b3efd949d0bf67ff1abdb95059e5843':
  qsvenc: add an API for allocating opaque surfaces

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-10-22 15:55:43 +02:00
Hendrik Leppkes
a440886a35 Merge commit '2ec96b6bd5bf7b22978711bcf2cee702bee89c6f'
* commit '2ec96b6bd5bf7b22978711bcf2cee702bee89c6f':
  qsvenc: cosmetics, reindent

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-10-22 15:49:26 +02:00
Hendrik Leppkes
2fece1e4d5 Merge commit 'f6f32fc93d39caf329869c1bff8ad024ccab1d42'
* commit 'f6f32fc93d39caf329869c1bff8ad024ccab1d42':
  qsvenc: set the timestamp for PIX_FMT_QSV frames as well

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-10-22 15:48:11 +02:00
Hendrik Leppkes
760dbdd3c5 Merge commit '772c87c5a658f36d7c0612f5da583fc2bfa54f79'
* commit '772c87c5a658f36d7c0612f5da583fc2bfa54f79':
  qsvenc: support passing arbitrary external buffers to the encoder

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-10-22 15:46:52 +02:00
Carl Eugen Hoyos
775b84e30e lavc/x86/vc1dsp_init: Fix compilation with --disable-yasm. 2015-10-22 11:37:42 +02:00
Julian Scheel
7ebe12fc55 mmaldec: Add mpeg2 decoding support
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>
2015-10-22 10:46:03 +02:00
James Almer
73353af6e5 x86/Makefile: move decoder/encoder objects out of the subsystems section
Signed-off-by: James Almer <jamrial@gmail.com>
2015-10-22 03:55:18 -03:00
Timothy Gu
ab5f43e634 vc1dsp: Port ff_vc1_put_ver_16b_shift2_mmx to yasm
This function is only used within other inline asm functions, hence the
HAVE_MMX_INLINE guard. Per recent discussions, we should not worry about
the performance of inline asm-only builds.
2015-10-21 20:01:52 -07:00
Andreas Cadhalpun
a4680e7170 avcodec: rename avpriv_color_frame to ff_color_frame
It is only used inside libavcodec.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
2015-10-22 00:38:50 +02:00
Andreas Cadhalpun
957f92729a avcodec: drop 2 suffix from avpriv_ac3_parse_header2
avpriv_ac3_parse_header was removed in commit 3dfb643.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
2015-10-22 00:34:54 +02:00
Timothy Gu
98da061461 huffyuvencdsp: Cherry pick changes left out in the last commit
Oops.
2015-10-21 12:42:33 -07:00
Timothy Gu
5e586e1bef huffyuvencdsp: Add ff_diff_bytes_{sse2,avx2}
SSE2 version 4%-35% faster than MMX depending on the width.
AVX2 version 1%-13% faster than SSE2 depending on the width.
2015-10-21 12:25:32 -07:00
Julian Scheel
da43e9e157 mmaldec: Fix avpriv_atomic_get usage
There is no avpriv_atomic_get, instead avpriv_atomic_int_get is to be used for
integers. This fixes building mmaldec.

Signed-off-by: Julian Scheel <julian@jusst.de>
Reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-21 15:01:36 +02:00
Hendrik Leppkes
4da52e3630 aacdec: fix strict prototype warning
Function protoypes without arguments require a void argument in C,
instead of an empty list.
2015-10-21 14:28:08 +02:00
Rostislav Pehlivanov
b7c9873bed lavc: add AV_CODEC_ID_DAALA to the list of codec IDs and bump minor
This commit shall introduce the first step of adding support for the
Daala next generation video codec to FFmpeg. Although still in
development, the codec is showing good progress and exchanging work
through IETF drafts. The companies behind Daala are also participating
in the Alliance for Open Media, so it's likely that whatever the result
any of these collaborations produce it's probable that elements from
Daala could be used in them, or perhaps this codec itself could be the
result.
2015-10-21 06:02:47 +01:00
James Zern
6540fe04a3 libvpxenc: remove some unused ctrl id mappings
VP8E_UPD_ENTROPY, VP8E_UPD_REFERENCE, VP8E_USE_REFERENCE were removed
from libvpx and the remaining values were never used here

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: James Zern <jzern@google.com>
2015-10-20 20:25:53 -07:00
Timothy Gu
6b41b44149 huffyuvencdsp: Convert ff_diff_bytes_mmx to yasm
Heavily based upon ff_add_bytes by Christophe Gisquet.

Reviewed-by: James Almer <jamrial@gmail.com>
Signed-off-by: Timothy Gu <timothygu99@gmail.com>
2015-10-20 18:24:54 -07:00
Andreas Cadhalpun
3dfb643cd4 avcodec: remove unused avpriv_ac3_parse_header
It was replaced by avpriv_ac3_parse_header2.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
2015-10-21 00:23:31 +02:00
Timothy Gu
bc22cd244e dnxhdenc: Optimize get_pixels_8x4_sym for 10-bit
This reverts commit 628e6d0164 and uses
a better fix.

Before:
4483 decicycles in get_pixels_8x4_sym,  131032 runs,     40 skips

After:
2569 decicycles in get_pixels_8x4_sym,  131054 runs,     18 skips
2015-10-20 12:36:29 -07:00
Hendrik Leppkes
00ae5b401b dca_parser: don't overwrite the sample rate, it may not be correct
The parser only reads the dca core sample rate, which is limited to a
maximum of 48000 Hz, while X96 and HD extensions can increase the sample
rate up to 192000 Hz.

This change prevents the parser and decoder fighting over the sample rate,
potentially confusing user applications. This also fixes sample rate
display of >48000Hz files with ffmpeg/ffprobe when using libdcadec.

Fixes ticket #4397
2015-10-20 13:02:18 +02:00
Timothy Gu
068e6cb732 huffyuvencdsp: Use intptr_t for width
It is done this way in huffyuvdsp as well.
2015-10-19 16:57:33 -07:00
Timothy Gu
a079cbf458 x86: vc1dsp_mmx: Move yasm initiation steps to vc1dsp_init
That's where all yasm initiation steps are. Also removes the overlap
between the two files.
2015-10-19 16:52:52 -07:00
Timothy Gu
607f820ec7 x86: fpel: Remove erroneous ff_put_pixels8_mmxext prototype
This function does not exist.
2015-10-19 16:52:37 -07:00
Timothy Gu
cb6f1f8bf9 x86: fpel: Move prototypes for 4-px block functions 2015-10-19 16:52:33 -07:00
Michael Niedermayer
fb4d350ff3 avcodec/mpegaudio_parser: Update comment to match code
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-19 22:16:20 +02:00
James Zern
7b4367d93e vp9_parser: fix endless loop w/0-sized frame
treat this the same as an over-sized superframe packet to break out of
the parser loop and allow the decoder to fail.

Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com>
Signed-off-by: James Zern <jzern@google.com>
2015-10-19 12:10:52 -07:00
Ganesh Ajjanagadde
e11e32686f avcodec/bitstream: replace qsort with AV_QSORT
Commit 3a0a2f33a6 claims large performance
advantages for AV_QSORT over libc's qsort. The reason is that I suspect
that libc's qsort (at least on non LTO builds, like the typical FFmpeg config)
can't inline the comparison callback:
https://stackoverflow.com/questions/5290695/is-there-any-way-a-c-c-compiler-can-inline-a-c-callback-function.
AV_QSORT has two things going for it:
1. The guaranteed inlining of qsort itself. This yields a negligible
boost that may be ignored.
2. The more serious possibility of potentially allowing the comparison
function to be inlined - this is likely responsible for the large boosts
reported.

There is a comment explaining that this is a place that could use some
performance improvement. Thus AV_QSORT is used to achieve that.

Benchmarks deemed unnecessary due to existing claims about AV_QSORT.
Tested with FATE.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
2015-10-18 09:22:49 -04:00
Paul B Mahol
7bbd060324 avcodec/adpcm: increase max channels for ADPCM PSX to 8
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2015-10-18 14:17:15 +02:00
Alexis Ballier
6e8d856ad6 libavcodec/mpegvideo_enc.c: Fix encoding videos with less frames than the delay of the encoder.
When the encoder is fed with less frames than its delay, the picture list looks like { NULL, NULL, ..., frame, frame, frame }. When flushing the encoder (input frame == NULL), we need to ensure the picture list is shifted enough so that we do not return an empty packet, which would mean the encoder has finished, while it has not encoded any frame.

Before the patch, the command:
'./ffmpeg_g -loglevel debug -f lavfi -i "testsrc=d=0.01" -bf 2 -vcodec mpeg2video out.mxf' prints:

Output stream #0:0 (video): 1 frames encoded; 0 packets muxed (0 bytes);

After:

Output stream #0:0 (video): 1 frames encoded; 1 packets muxed (8058 bytes);

Relates to ticket #4817.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-18 11:55:40 +02:00
Michael Niedermayer
fd46d6deac avcodec/mpegvideo_enc: Merge ifs with identical conditions
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-18 11:44:42 +02:00
Michael Niedermayer
b379e1d6df avcodec/mpegvideo_enc: Factor new_picture unref out
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-18 11:42:32 +02:00
Rostislav Pehlivanov
7303962f14 aacenc_ltp: adjust and speed up autocorrelation calculations
There were some errors in the calculation as well as an entire
unnecessary loop to find the gain coefficient. Merge the
two loops.
Thanks to @ubitux for the suggestions and testing.
2015-10-17 22:53:11 +01:00
Michael Niedermayer
c38a6077ee avcodec/aacenc: Fix "libavcodec/aacenc.c:540:13: warning: ISO C90 forbids mixed declarations and code"
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-17 18:58:11 +02:00
Rostislav Pehlivanov
4c9805538d aacenc_ltp: correct header description comment 2015-10-17 13:28:55 +01:00
Rostislav Pehlivanov
b0a3c614b4 aacenc_ltp: replace av_clip() with av_clip_uintp2()
Suggested by ubitux.
Convenient.
2015-10-17 12:24:16 +01:00
Rostislav Pehlivanov
780dba01f9 aacenc_ltp: fix assertion
A value of 2048 will overflow 11 bits.
2015-10-17 12:00:30 +01:00
Rostislav Pehlivanov
dfba1be963 aacenc_tns: enable Temporal Noise Shaping by default
In light of the recent changes to the TNS system, it has been
deemed worthy and robust enough to be turned on by default.
2015-10-17 11:10:26 +01:00
Rostislav Pehlivanov
fa4d900c27 aacenc_tns: rework TNS descision logic
Changes:
 - strongly prefer dual filters to a single filter
 - less strict about using 2 filters w.r.t. energy
 - scrap the usage of threshold and spread, useless
 - use odd-shaped windows to set the filter direction
 - use 4 bits instead of 3 bits for short windows
 - simplify and reduce the main loop to a single level
 - add stricter regulations for short windows

All of this now makes the TNS implementation operate
as good as it can and it definitely shows. The frequency
thresholds are now even better defined by looking at
the spectrals and the overall sound has been improved at
the price of just a few bits that are well worth it.
2015-10-17 11:10:26 +01:00
Rostislav Pehlivanov
bf39beca87 aacenc_tns: simplify encoding function
It's simpler and has 2 less levels than the previous which
was practically lifted from the decoder with put_bits() instead
of get_bits().
2015-10-17 11:10:26 +01:00
Rostislav Pehlivanov
f3ad901a32 aacenc_tns: disable coefficient compression by default
Too much effort and work has been spent on such a simple function.
It simply refuses to work as the specifications say, the
transformation is NOT lossless and creates some crackling and
distortions.
Therefore disable it by default and add a couple of warnings to
scare people away from touching it or wasting their time the
way I did.
2015-10-17 11:10:26 +01:00
Rostislav Pehlivanov
8d18d28918 aacenc_tns: add moving average filter for LTP
The decoder does this so I guess we better do that as well.
There's barely any difference between the autoregressive and
the moving average filters looking at spectrals though.
2015-10-17 11:10:26 +01:00
Rostislav Pehlivanov
e9299df7a6 aacenc: partially revert previous commits to set options via a profile
It didn't work out because of the exceptions that needed to be made
for the "-1" cases and was overall more confusing that just manually
checking and setting options for each profile.
2015-10-17 03:17:27 +01:00
Rostislav Pehlivanov
27d23ae074 aacenc: add support for encoding files using Long Term Prediction
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.
2015-10-17 02:31:20 +01:00
Rostislav Pehlivanov
83900c0ed3 aacenc: (re)enable Mid/Side coding by default
Apparently it was set to be enabled by default but after the
profile commits it was reverted to be off by default because
I didn't notice.
Works well so (re)enable it.
2015-10-17 02:31:20 +01:00
Rostislav Pehlivanov
148cf4690c aacenc_pred: only print predictor information if profile is aac_main
Needed because LTP uses predictor_present as well.
2015-10-17 02:31:20 +01:00
Rostislav Pehlivanov
3f3be1c07a aacenc: correctly zero prediction_used array
An oversight, probably because of copy-pasting the TNS line.
2015-10-17 02:31:20 +01:00
Rostislav Pehlivanov
2d9b5ae071 aacenc: slightly simplify and remove a redundant variable
Functionally identical, doesn't change anything.
2015-10-17 02:31:20 +01:00
Rostislav Pehlivanov
564db3e55d aacenc_pred: correct header information 2015-10-17 02:31:20 +01:00
Rostislav Pehlivanov
8dd2d5e70a aacenc: indicate that TNS is off by default
Doesn't change anything, just a slight clarification that
under all profiles TNS is currently off. That'll be soon to change
hopefully.
2015-10-17 02:31:20 +01:00