Commit Graph

825 Commits

Author SHA1 Message Date
Rostislav Pehlivanov 5f47c85e5c opus: add a native Opus encoder
This marks the first time anyone has written an Opus encoder without
using any libopus code. The aim of the encoder is to prove how far
the format can go by writing the craziest encoder for it.

Right now the encoder's basic, it only supports CBR encoding, however
internally every single feature the CELT layer has is implemented
(except the pitch pre-filter which needs to work well with the rest of
whatever gets implemented). Psychoacoustic and rate control systems are
under development.

The encoder takes in frames of 120 samples and depending on the value of
opus_delay the plan is to use the extra buffered frames as lookahead.
Right now the encoder will pick the nearest largest legal frame size and
won't use the lookahead, but that'll change once there's a
psychoacoustic system.

Even though its a pretty basic encoder its already outperforming
any other native encoder FFmpeg has by a huge amount.

The PVQ search algorithm is faster and more accurate than libopus's
algorithm so the encoder's performance is close to that of libopus
at zero complexity (libopus has more SIMD).
The algorithm might be ported to libopus or other codecs using PVQ in
the future.

The encoder still has a few minor bugs, like desyncs at ultra low
bitrates (below 9kbps with 20ms frames).

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2017-02-14 06:15:36 +00:00
Paul B Mahol 8259f8a720 avcodec: add FM Screen Capture Codec decoder
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2017-02-12 10:43:45 +01:00
Paul B Mahol 280a40dd27 avcodec: add ATRAC Advanced Lossless decoders
Only lossy part is decoded for now.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2017-02-11 12:00:38 +01:00
Mark Thompson d1acab8293 vaapi_encode: Add VP8 support
Fixes ticket #6116.

(cherry picked from commit ca62236a89)
2017-02-08 19:14:05 +00:00
Mark Thompson 3b95c7c17d vaapi_encode: Add MPEG-2 support
(cherry picked from commit ca6ae3b77a)
2017-02-08 19:14:05 +00:00
Paul B Mahol 5d2609929d avcodec: add XMA2 parser
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2017-01-20 13:58:41 +01:00
Paul B Mahol 40cf943714 avcodec: add SIPR parser
Fixes #2056.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2017-01-16 10:24:01 +01:00
Steinar H. Gunderson 2a293ec7ac avcodec: add Newtek SpeedHQ decoder
This decoder can decode all existing SpeedHQ formats (SHQ0–5, 7, and 9),
including correct decoding of the alpha channel.

1080p is decoded in 142 fps on one core of my i7-4600U (2.1 GHz Haswell),
about evenly split between bitstream reader and IDCT. There is currently
no attempt at slice or frame threading, even though the format trivially
supports both.

NewTek very helpfully provided a full set of SHQ samples, as well as
source code for an SHQ2 encoder (not included) and assistance with
understanding some details of the format.
2017-01-11 16:02:10 +01:00
Paul B Mahol 90ac9f4094 avcodec: add QDMC decoder
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2017-01-06 22:05:45 +01:00
Paul B Mahol 73651090ca avcodec: add Apple Pixlet decoder
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-12-22 22:47:06 +01:00
Paul B Mahol 95fb9e0205 avcodec: add pcm_f16le and pcm_f24le decoder
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-12-22 10:30:21 +01:00
Martin Vignali 90af962911 libavcodec : add decoder for Photoshop PSD image files
Decode the Image Data Section (which contains merged pictures).
Support RGB/A and Grayscale/A in 8bits and 16 bits per channel.
Support uncompress and rle decompression in Image Data Section.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-12-14 03:21:27 +01:00
Philip Langdale 21b68cdbae avcodec/cuvid: Don't claim to decode h.263 (it doesn't)
Turns out cuvid doesn't support h.263.
2016-10-30 15:47:37 -07:00
Philip Langdale 7c27da686c crystalhd: Reorder mspeg4 decoder after software decoders
This avoids it getting picked by default, which is generally
undesirable and can break test runs.
2016-10-28 19:57:36 -07:00
Matthieu Bouron f62c54456d lavc: add mpeg4 mediacodec decoder 2016-10-19 10:50:52 +02:00
Matthieu Bouron 0f7fce87ea lavc: add vp8/vp9 mediacodec decoders 2016-10-19 10:50:12 +02:00
Josh de Kock dc0f711459 lavc: remove libfaac wrapper
There is really no need for two aac wrappers, we already have
libfdk-aac which is better. Not to mention that faac doesn't
even support HEv1, or HEv2. It's also under a license which is
unusable for distribution, so it would only be useful to people
who will compile their own ffmpeg, only use it themselves (which
at that point should just use fdk-aac).

Signed-off-by: Josh de Kock <josh@itanimul.li>
2016-10-01 19:58:04 +01:00
Jai Luthra 15b86f480a mlpenc: Working MLP/TrueHD encoder
* Multichannel support for TrueHD is experimental

    There should be downmix substreams present for 2+ channel bitstreams,
    but ffmpeg decoder doesn't need it. Will add support for this soon.

* There might be lossless check failures on LFE channels

* 32-bit sample support has been removed for now, will add it later

    While testing, some samples gave lossless check failures when enforcing
    s32. Probably this will also get solved with the LFE issues.

Signed-off-by: Jai Luthra <me@jailuthra.in>
2016-09-17 13:23:56 +01:00
Matthieu Bouron 140da8e810 lavc: add hevc mediacodec decoder 2016-09-15 21:48:28 +02:00
Philip Langdale 1891dfe013 cuvid: Add hwaccels and decoders for remaining supported formats
cuvid/nvdecode also supports mpeg1, mpeg2, h.263/mpeg4-asp and mjpeg.

It should, in theory, also support wmv3 via the vc1 support, given
that vdpau supports this. However, it failed to play wmv3 samples
which vdpau played correctly, so I'm not sure what to make of it.

Signed-off-by: Philip Langdale <philipl@overt.org>
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-09-06 21:35:42 +02:00
Paul B Mahol fc600eff63 avcodec: add 64-bit signed pcm codec 2016-08-18 15:30:05 +02:00
Martin Storsjö c5d326f551 Add an OpenH264 decoder wrapper
This is cherrypicked from libav, from commits
82b7525173 and
d0b1e6049b.

Signed-off-by: Martin Storsjö <martin@martin.st>
2016-07-27 10:19:40 +03:00
Matthieu Bouron 0f2654c9a3 lavc: add mediacodec hwaccel support 2016-07-08 17:02:37 +02:00
Paul B Mahol 8fb92ea7e2 avcodec: add YUY2 Lossless Codec decoder
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-06-26 10:18:10 +02:00
Timo Rothenpieler 888a5c7947 avcodec/nvenc: Bring encoder names in line with other encoders 2016-06-25 23:05:17 +02:00
Derek Buitenhuis a02766fb4d avcodec: remove libutvideo wrapper support
The 10-bit decoding support is available now in native decoder.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-06-23 13:04:11 +02:00
Timo Rothenpieler 88e8aef9e9 avcodec/cuvid: add cuvid decoder 2016-06-10 16:31:23 +02:00
Paul B Mahol fdf832a986 avcodec: add BitJazz SheerVideo decoder
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-06-07 21:38:49 +02:00
Paul B Mahol 77f9c4b7aa avocdec: add MagicYUV decoder
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-05-31 22:37:09 +02:00
Paul B Mahol 8c17eea46f avcodec: add adpcm MTAF decoder
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-05-21 18:49:45 +02:00
Peter Ross 86e493a6ff avcodec: add Direct Stream Transfer (DST) decoder
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-05-15 01:01:45 +02:00
Derek Buitenhuis ed8bacfb5c Merge commit '5e1a3ea3ba7bb0c71d931e93e60fb75f51b0cc1a'
* commit '5e1a3ea3ba7bb0c71d931e93e60fb75f51b0cc1a':
  lavc: move the vaapi encoders further down in the list of codecs

Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-05-11 19:45:20 +01:00
Derek Buitenhuis 0e38723220 Merge commit 'e8919ec486a5559fdcf366e347be0656d904a87f'
* commit 'e8919ec486a5559fdcf366e347be0656d904a87f':
  libavcodec: Add H264/MPEG4 encoders based on OpenMAX IL

Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-05-11 19:19:28 +01:00
Derek Buitenhuis 939345854a Merge commit '83f230c2445a94fdd94c66504482217fcece5909'
* commit '83f230c2445a94fdd94c66504482217fcece5909':
  lavc: VAAPI MJPEG encoder

Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-05-08 22:46:52 +01:00
Derek Buitenhuis a82d1a8c7a Merge commit '31fe1f2577f8208f79a4b3ab59465e78dd497555'
* commit '31fe1f2577f8208f79a4b3ab59465e78dd497555':
  lavc: VAAPI H.265 encoder

Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-05-08 22:45:39 +01:00
Derek Buitenhuis b975aeec02 Merge commit '2c62fcdf5d617791a653d7957d449f75569eede0'
* commit '2c62fcdf5d617791a653d7957d449f75569eede0':
  lavc: VAAPI H.264 encoder

Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-05-08 22:43:52 +01:00
Michael Niedermayer 4155d5e06f avcodec: add M101 decoder
Fixes Ticket 2611

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-05-06 15:36:24 +02:00
Paul B Mahol c85d04251d avcodec: add TrueMotion 2.0 Real Time decoder
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-04-21 20:15:17 +02:00
Derek Buitenhuis af9cac1be1 Merge commit '33d18982fa03feb061c8f744a4f0a9175c1f63ab'
* commit '33d18982fa03feb061c8f744a4f0a9175c1f63ab':
  lavc: add a new bitstream filtering API

Conversions-by: Hendrik Leppkes <h.leppkes@gmail.com>
Conversions-by: Derek Buitenguis <derek.buitenhuis@gmail.com>
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-04-17 18:47:40 +01:00
Anton Khirnov 5e1a3ea3ba lavc: move the vaapi encoders further down in the list of codecs
Right now they are the first encoders for those codecs in the list, so
they are selected when the caller requests a codec by id.
Since they require special treatment, they should not be selected by
default if there are other encoders (e.g. libx264/5) available.
2016-04-15 10:10:57 +02:00
Martin Storsjö e8919ec486 libavcodec: Add H264/MPEG4 encoders based on OpenMAX IL
Signed-off-by: Martin Storsjö <martin@martin.st>
2016-04-12 13:50:57 +03:00
Paul B Mahol 8a4c3f5258 avcodec: add adpcm dat4 decoder
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-04-05 10:48:59 +02:00
Rodger Combs b4daa2c40f lavc/audiotoolboxdec: add eac3 decoder
This is added in 10.11, so we add a #define when building against older SDKs.

The decoder actually supports 7.1-channel eac3, but since the parser only
reports 6 channels, we end up decoding the 5.1 downmix (same as the internal
decoder) for now.
2016-04-02 03:03:13 -05:00
Mark Thompson 83f230c244 lavc: VAAPI MJPEG encoder
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2016-03-30 09:11:44 +02:00
Mark Thompson 31fe1f2577 lavc: VAAPI H.265 encoder
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2016-03-30 09:11:25 +02:00
Mark Thompson 2c62fcdf5d lavc: VAAPI H.264 encoder
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2016-03-30 09:10:26 +02:00
Paul B Mahol ff982e02b5 avcodec: add dca core extraction bsf
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-03-28 10:50:41 +02:00
Kieran Kunhya e259dc86a8 avcodec: Remove libdcadec, we already have it merged internally 2016-03-27 04:21:38 +01:00
Rodger Combs 65cff81453 lavc: add AudioToolbox encoders
Fixes trac #4828
2016-03-22 12:43:14 -05:00
Rodger Combs d5d328059e lavc: add AudioToolbox decoders
Part of trac #4828
2016-03-22 12:43:14 -05:00