Commit Graph

44 Commits

Author SHA1 Message Date
Carl Eugen Hoyos 288ca1c667 lavc/aomenc: Force default qmax of 0 if crf was set to 0.
Fixes lossless encoding without setting qmax to 0.
2021-03-21 09:46:23 +01:00
Anton Khirnov 7d09579190 lavc: rename AV_CODEC_CAP_AUTO_THREADS->AV_CODEC_CAP_OTHER_THREADS
This cap is currently used to mark multithreading-capable codecs that
wrap external libraries with their own multithreading code. The name is
highly confusing for our API users, since libavcodec ALWAYS handles
thread_count=0 (see commit message in previous commit). Therefore rename
the cap and update its documentation to make its meaning clear.

The old name is kept deprecated until next+1 major bump.
2021-03-16 10:38:41 +01:00
Anton Khirnov 8a129077cc lavc: replace internal use of AV_CODEC_CAP_AUTO_THREADS with an internal cap
AV_CODEC_CAP_AUTO_THREADS was originally added in b4d44a45f9 to mark
codecs that spawn threads internally and are able to select an optimal
threads count by themselves (all such codecs are wrappers around
external libraries). It is used by lavc generic code to check whether it
should handle thread_count=0 itself or pass the zero directly to the
codec implementation. Within this meaning, it is clearly supposed to be
an internal cap rather than a public one, since from the viewpoint of a
libavcodec user, lavc ALWAYS handles thread_count=0. Whether it happens
in the generic code or within the codec internals is not a meaningful
difference for the caller.

External aspects of this flag will be dealt with in the following
commit.
2021-03-16 10:34:29 +01:00
Bohan Li 82aab8a4ee avcodec/libaomenc: add support for setting arbitrary libaom options
A new key & value API lets us gain access to newly added parameters
without adding explicit support for them in our wrapper. Add an
option utilizing this functionality in a similar manner to other
encoder libraries' wrappers.

Signed-off-by: Bohan Li <bohanli@google.com>
2021-02-10 11:52:46 +02:00
Philip Langdale 40135829b6 avcodec/libaom: Support monochrome encoding with libaom >= 2.0.1
Monochrome encoding with libaom was buggy for a long time, but this was
finally sorted out in libaom 2.0.1 (2.0.0 is almost there but was still
buggy in realtime mode).

We'll keep support for libaom 1.x around until the LTS distros that
include it are EOL (which is still a long time from now).

Fixes: https://trac.ffmpeg.org/ticket/7599
2020-12-08 15:31:39 -08:00
Wang Cao 017bf9643f libavcodec/libaomenc.c: Add command-line options for inter-coding tools
Signed-off-by: Wang Cao <wangcao@google.com>
Signed-off-by: James Zern <jzern@google.com>
2020-07-24 19:10:10 -07:00
Wang Cao 498ad7b37c libavcodec/libaomenc.c: Add command-line options for tx tools.
Signed-off-by: Wang Cao <wangcao@google.com>
Signed-off-by: James Zern <jzern@google.com>
2020-07-24 19:10:10 -07:00
James Almer 36e51c190b avcodec/libaomenc: use pix_fmt descriptors where useful
Reviewed-by: Lynne <dev@lynne.ee>
Signed-off-by: James Almer <jamrial@gmail.com>
2020-07-17 18:23:45 -03:00
Lynne 6a2f3f60ae libaomenc: enable 8, 10 and 12 bit RGB encoding
RGB pixel formats are one occasion where by pixel format we mean
pixel format, primaries, transfer characteristic, and matrix coeffs,
so we have to manually set them as they're set to unspecified by
default, despite there only being a single possible combination.
2020-07-17 21:13:10 +01:00
James Zern d294716c22 avcodec/libaomenc: fix build w/libaom v1.0.0
broken since:
aa5c6f382b avcodec/libaomenc: Add command-line options to control the use of partition tools

Reviewed-by: James Almer <jamrial@gmail.com>
Signed-off-by: James Zern <jzern@google.com>
2020-07-08 10:12:27 -07:00
Wang Cao 297d5a110b avcodec/libaomenc: Add command-line options for intra-coding tools
Signed-off-by: Wang Cao <wangcao@google.com>
Signed-off-by: James Zern <jzern@google.com>
2020-07-01 11:55:04 -07:00
Wang Cao aa5c6f382b avcodec/libaomenc: Add command-line options to control the use of partition tools
This patch adds the control for enabling rectangular partitions, 1:4/4:1
partitions and AB shape partitions.

Signed-off-by: Wang Cao <wangcao@google.com>
Signed-off-by: James Zern <jzern@google.com>
2020-07-01 11:54:56 -07:00
James Almer 82b64e9bf6 avcodec: add AV1 profiles to profile.h
Signed-off-by: James Almer <jamrial@gmail.com>
2020-06-25 23:36:29 -03:00
James Almer 49d37b4b61 avcodec/libaomenc: remove the experimental flag when using libaom 2.0.0 or newer
Reviewed-by: James Zern <jzern@google.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2020-06-06 01:04:39 -03:00
James Almer 6e1903938b avcodec/internal: move packet related functions to their own header
Signed-off-by: James Almer <jamrial@gmail.com>
2020-06-02 19:02:12 -03:00
James Zern 0ece80559a avcodec/libaomenc,cosmetics: fix a typo
tradeof -> trade-off

Signed-off-by: James Zern <jzern@google.com>
2020-04-11 15:22:35 -07:00
Wang Cao bd3389e9f4 avcodec/libaomenc.c: Add a libaom command-line option 'tune'
Signed-off-by: Wang Cao <wangcao@google.com>
Signed-off-by: James Zern <jzern@google.com>
2020-04-11 15:12:34 -07:00
James Almer c461500c5e avcodec/libaomenc: add an option to set the encoder "usage"
This allows the user enable the realtime encoding speed mode

Reviewed-by: James Zern <jzern@google.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2020-01-24 20:03:46 -03:00
Wang Cao 8c9d82af6b Add a commandline option to control loop restoration for libaom
Signed-off-by: Wang Cao <wangcao@google.com>
Signed-off-by: James Zern <jzern@google.com>
2020-01-17 14:46:50 -08:00
elliottk ea673a0edb Delete unused branch in libaomenc
this branch is leftover from libvpxenc+vp8

Signed-off-by: James Zern <jzern@google.com>
2019-09-19 23:56:03 -07:00
elliottk 711c59bc57 Change libaom default to crf=32.
Current default is 256kbps, which produces inconsistent
results (too high for low-res, too low for hi-res).
Use CRF instead, which will adapt.

Signed-off-by: James Zern <jzern@google.com>
2019-08-23 10:56:34 -07:00
Carl Eugen Hoyos 1e8475b507 lavc/libaomenc: Mark a potentially unused variable as av_unused.
Fixes a warning:
libavcodec/libaomenc.c:816:9: warning: unused variable ‘pict_type’
2019-04-16 14:20:43 +02:00
James Almer 0e1ea034d8 avcodec/libaomenc: fix range of values for enable-intrabc option
Signed-off-by: James Almer <jamrial@gmail.com>
2019-04-02 19:54:34 -03:00
James Almer 0856c5da07 avcodec/libaomenc: fix default value for row-mt option
Signed-off-by: James Almer <jamrial@gmail.com>
2019-03-29 14:55:00 -03:00
Sam John via ffmpeg-devel 995889abbf avcodec/libaomenc: Added more commandline options
The following are the newly added options:
arnr_max_frames, arnr_strength, aq_mode, denoise_noise_level, denoise_block_size,
rc_undershoot_pct, rc_overshoot_pct, minsection_pct, maxsection_pct, frame_parallel,
enable_cdef, enable_global_motion, and intrabc.

Also added macros for compiling for aom 1.0.0 and fixed the default values.

Signed-off-by: James Almer <jamrial@gmail.com>
2019-03-29 14:53:55 -03:00
Helmut K. C. Tessarek aaf9171574 libavcodec/libaomenc: fix breakage from upstream
commit https://aomedia.googlesource.com/aom/+/4667aa1a373566e9c124afcd58c71731ab0d7377
changed parts of the code that broke compilation of libavcodec/libaomenc.c

Signed-off-by: James Almer <jamrial@gmail.com>
2018-12-19 15:31:28 -03:00
James Almer d12d4d4515 avcodec/libaomenc: add row-mt option
Default to disable, same as aomenc.

Fixes ticket #7598

Signed-off-by: James Almer <jamrial@gmail.com>
2018-12-09 15:23:00 -03:00
Jun Zhao b87063c06d lavc/libaomenc: Add a maximum constraint of 64 encoder threads.
fixed the error in Intel(R) Xeon(R) Gold 6152 CPU like:
[libaom-av1 @ 0x469f340] Failed to initialize encoder: Invalid parameter
[libaom-av1 @ 0x469f340]   Additional information: g_threads out of range [..MAX_NUM_THREADS]

Signed-off-by: Jun Zhao <mypopydev@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2018-11-29 21:37:49 -03:00
James Almer 2ddaaaf595 avcodec/libaomenc: increase the default bitrate
aom_codec_enc_config_default() sets it to 256kbps, so don't replace
it with 200kbps.

See https://bugs.chromium.org/p/aomedia/issues/detail?id=2219

Signed-off-by: James Almer <jamrial@gmail.com>
2018-11-26 19:08:45 -03:00
Mark Thompson e3991a5a45 libaomenc: Drop unused noise-sensitivity option 2018-11-18 22:07:42 +00:00
Mark Thompson 7070955d43 libaomenc: Add support for tiles
Adds an option to specify the number of tile rows and columns, then uses
a uniform tiling if possible and otherwise a fixed tiling with equal-sized
tiles to fill the frame.

Also adds -tile-columns and -tile-rows options to make tilings with
power-of-two numbers of tiles, matching the behaviour of the libvpx/VP9
encoder.
2018-10-28 16:42:41 +00:00
Sam John e265832c37 libavcodec/libaomenc.c: Added code for computing PSNR/SSIM
Signed-off-by: James Almer <jamrial@gmail.com>
2018-10-11 22:06:40 -03:00
James Almer 309c3a0e81 avcodec/libaom: fix setting amount of threads
The libaom doxy says that a value of 0 for the threads fields is
equivalent to a value of 1, whereas for avctx->thread_count it means
the maximum amount of threads possible for the host system.

Use av_cpu_count() to get the correct thread count when auto threads
is requested.

Reviewed-by: Jan Ekström <jeebjp@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2018-09-13 13:44:45 -03:00
James Almer b69ea742ab avcodec/libaomenc: remove AVOption related to frame partitions
Support for it was apparently never in the codebase, and the enum
value was recently removed from the public headers [1]

[1] https://aomedia.googlesource.com/aom/+/df4ffb73140fe31bebdabd17c1a7b53721e74838

Signed-off-by: James Almer <jamrial@gmail.com>
2018-09-12 11:44:56 -03:00
Gyan Doshi 076b19660e avcodec/libaomenc: correct range for cpu-used
Valid range is [0,8] as stated in aom.git:aom/aomcx.h

Fixes #7343
2018-08-06 10:19:27 +05:30
James Almer a754af942a avcodec/libaomenc: export Sequence Header and Metadata OBUs as extradata
aom_codec_get_global_headers() is not implemented as of libaom 1.0.0 for AV1, so
we're forced to extract the relevant header OBUs from the first packet and propagate
them as packet side data.

Signed-off-by: James Almer <jamrial@gmail.com>
2018-07-20 11:43:25 -03:00
James Almer 877aff2bea avcodec/libaomenc: remove references to gbrp pixfmt
Support for this needs testing, so remove for now.

Signed-off-by: James Almer <jamrial@gmail.com>
2018-04-02 17:54:36 -03:00
James Almer c42c99c3e5 avcodec/libaomenc: use av_assert0()
Signed-off-by: James Almer <jamrial@gmail.com>
2018-03-29 22:35:33 -03:00
James Almer 25abaf3545 avcodec/libaomenc: minor cosmetics
Signed-off-by: James Almer <jamrial@gmail.com>
2018-03-29 16:18:27 -03:00
James Almer e5819fa629 libavcodec/libaomenc: add support for transfer characteristics and color primaries
Signed-off-by: James Almer <jamrial@gmail.com>
2018-03-29 01:03:24 -03:00
James Almer 416d354a57 libavcodec/libaomenc: fix size specifier in an av_log call
Signed-off-by: James Almer <jamrial@gmail.com>
2018-03-29 00:51:48 -03:00
James Almer c0f0c9f531 avcode/profiles: add AV1 profiles
Signed-off-by: James Almer <jamrial@gmail.com>
2018-03-29 00:05:52 -03:00
James Almer 99cc3cf7a2 Merge commit '43778a501f1bfbceeddc8eaeea2ea2b3506beeda'
* commit '43778a501f1bfbceeddc8eaeea2ea2b3506beeda':
  Support AV1 encoding using libaom

This contains some extra changes taken from the libvpx encoder
wrapper, most of them contained in the set_pix_fmt() function.

Merged-by: James Almer <jamrial@gmail.com>
2018-03-29 00:05:45 -03:00
Luca Barbato 43778a501f Support AV1 encoding using libaom 2018-03-12 12:10:33 +01:00