diff options
author | Deb Mukherjee <debargha@google.com> | 2014-08-25 17:17:39 -0700 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2014-08-27 23:12:47 -0300 |
commit | b6a0b8bcf497c073f36d2cb01a88a35445b471a6 (patch) | |
tree | 2788064f038a3b9471131ac5ee2ad254151aacb6 | |
parent | 8c1b942ad7b66034b030f2ab3cc5e81eccfa2b68 (diff) | |
download | ffmpeg-b6a0b8bcf497c073f36d2cb01a88a35445b471a6.tar.gz |
Adds support for setting aq_mode in libvpx encoder
Reviewed-by: James Zern <jzern@google.com>
Signed-off-by: James Almer <jamrial@gmail.com>
-rw-r--r-- | doc/encoders.texi | 5 | ||||
-rw-r--r-- | libavcodec/libvpxenc.c | 9 |
2 files changed, 13 insertions, 1 deletions
diff --git a/doc/encoders.texi b/doc/encoders.texi index 8df80c4861..44b49ce4b5 100644 --- a/doc/encoders.texi +++ b/doc/encoders.texi @@ -1330,7 +1330,7 @@ ffmpeg -i INPUT -codec:v libtheora -b:v 1000k OUTPUT.ogg @section libvpx -VP8 format supported through libvpx. +VP8/VP9 format supported through libvpx. Requires the presence of the libvpx headers and library during configuration. You need to explicitly configure the build with @code{--enable-libvpx}. @@ -1442,6 +1442,9 @@ g_lag_in_frames @item vp8flags error_resilient g_error_resilient +@item aq_mode +@code{VP9E_SET_AQ_MODE} + @end table For more information about libvpx see: diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c index 830a793f1e..8b40bade1b 100644 --- a/libavcodec/libvpxenc.c +++ b/libavcodec/libvpxenc.c @@ -96,6 +96,7 @@ typedef struct VP8EncoderContext { int tile_columns; int tile_rows; int frame_parallel; + int aq_mode; } VP8Context; /** String mappings for enum vp8e_enc_control_id */ @@ -123,6 +124,7 @@ static const char *const ctlidstr[] = { [VP9E_SET_TILE_COLUMNS] = "VP9E_SET_TILE_COLUMNS", [VP9E_SET_TILE_ROWS] = "VP9E_SET_TILE_ROWS", [VP9E_SET_FRAME_PARALLEL_DECODING] = "VP9E_SET_FRAME_PARALLEL_DECODING", + [VP9E_SET_AQ_MODE] = "VP9E_SET_AQ_MODE", #endif }; @@ -444,6 +446,8 @@ static av_cold int vpx_init(AVCodecContext *avctx, codecctl_int(avctx, VP9E_SET_TILE_ROWS, ctx->tile_rows); if (ctx->frame_parallel >= 0) codecctl_int(avctx, VP9E_SET_FRAME_PARALLEL_DECODING, ctx->frame_parallel); + if (ctx->aq_mode >= 0) + codecctl_int(avctx, VP9E_SET_AQ_MODE, ctx->aq_mode); } #endif @@ -803,6 +807,11 @@ static const AVOption vp9_options[] = { { "tile-columns", "Number of tile columns to use, log2", OFFSET(tile_columns), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 6, VE}, { "tile-rows", "Number of tile rows to use, log2", OFFSET(tile_rows), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 2, VE}, { "frame-parallel", "Enable frame parallel decodability features", OFFSET(frame_parallel), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 1, VE}, + { "aq-mode", "adaptive quantization mode", OFFSET(aq_mode), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 3, VE, "aq_mode"}, + { "none", "Aq not used", 0, AV_OPT_TYPE_CONST, {.i64 = 0}, 0, 0, VE, "aq_mode" }, \ + { "variance", "Variance based Aq", 0, AV_OPT_TYPE_CONST, {.i64 = 1}, 0, 0, VE, "aq_mode" }, \ + { "complexity", "Complexity based Aq", 0, AV_OPT_TYPE_CONST, {.i64 = 2}, 0, 0, VE, "aq_mode" }, \ + { "cyclic", "Cyclic Refresh Aq", 0, AV_OPT_TYPE_CONST, {.i64 = 3}, 0, 0, VE, "aq_mode" }, \ LEGACY_OPTIONS { NULL } }; |