From eaf566ce0b9fd33120cc564bc7cd6986de3ca724 Mon Sep 17 00:00:00 2001 From: Thierry Foucu Date: Wed, 27 Nov 2019 16:25:33 -0800 Subject: [PATCH] Add options for spatial layers. Disable by default to output all the layers, to match libaomdec wrapper. Add option to select the operating point for the spatial layers. Update the documentation with the new options. Signed-off-by: James Almer --- doc/decoders.texi | 7 +++++++ libavcodec/libdav1d.c | 8 ++++++++ libavcodec/version.h | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/doc/decoders.texi b/doc/decoders.texi index 676e062e72..f18226b350 100644 --- a/doc/decoders.texi +++ b/doc/decoders.texi @@ -71,6 +71,13 @@ Set amount of tile threads to use during decoding. The default value is 0 (autod Apply film grain to the decoded video if present in the bitstream. Defaults to the internal default of the library. +@item oppoint +Select an operating point of a scalable AV1 bitstream (0 - 31). Defaults to the +internal default of the library. + +@item alllayers +Output all spatial layers of a scalable AV1 bitstream. The default value is false. + @end table @section libdavs2 diff --git a/libavcodec/libdav1d.c b/libavcodec/libdav1d.c index cf4b178f1d..5248e3f9f5 100644 --- a/libavcodec/libdav1d.c +++ b/libavcodec/libdav1d.c @@ -40,6 +40,8 @@ typedef struct Libdav1dContext { int tile_threads; int frame_threads; int apply_grain; + int operating_point; + int all_layers; } Libdav1dContext; static const enum AVPixelFormat pix_fmt[][3] = { @@ -134,6 +136,10 @@ static av_cold int libdav1d_init(AVCodecContext *c) if (dav1d->apply_grain >= 0) s.apply_grain = dav1d->apply_grain; + s.all_layers = dav1d->all_layers; + if (dav1d->operating_point >= 0) + s.operating_point = dav1d->operating_point; + s.n_tile_threads = dav1d->tile_threads ? dav1d->tile_threads : FFMIN(floor(sqrt(threads)), DAV1D_MAX_TILE_THREADS); @@ -378,6 +384,8 @@ static const AVOption libdav1d_options[] = { { "tilethreads", "Tile threads", OFFSET(tile_threads), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, DAV1D_MAX_TILE_THREADS, VD }, { "framethreads", "Frame threads", OFFSET(frame_threads), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, DAV1D_MAX_FRAME_THREADS, VD }, { "filmgrain", "Apply Film Grain", OFFSET(apply_grain), AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, VD }, + { "oppoint", "Select an operating point of the scalable bitstream", OFFSET(operating_point), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 31, VD }, + { "alllayers", "Output all spatial layers", OFFSET(all_layers), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VD }, { NULL } }; diff --git a/libavcodec/version.h b/libavcodec/version.h index efa9d743f7..8b9c27378c 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -29,7 +29,7 @@ #define LIBAVCODEC_VERSION_MAJOR 58 #define LIBAVCODEC_VERSION_MINOR 64 -#define LIBAVCODEC_VERSION_MICRO 100 +#define LIBAVCODEC_VERSION_MICRO 101 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LIBAVCODEC_VERSION_MINOR, \