aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDeb Mukherjee <debargha@google.com>2014-08-25 17:17:39 -0700
committerJames Almer <jamrial@gmail.com>2014-08-27 23:12:47 -0300
commitb6a0b8bcf497c073f36d2cb01a88a35445b471a6 (patch)
tree2788064f038a3b9471131ac5ee2ad254151aacb6
parent8c1b942ad7b66034b030f2ab3cc5e81eccfa2b68 (diff)
downloadffmpeg-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.texi5
-rw-r--r--libavcodec/libvpxenc.c9
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 }
};