summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/encoders.texi12
-rw-r--r--libavcodec/libvpxenc.c13
-rw-r--r--libavcodec/version.h2
3 files changed, 24 insertions, 3 deletions
diff --git a/doc/encoders.texi b/doc/encoders.texi
index 7bae39435e..e23b6b32fe 100644
--- a/doc/encoders.texi
+++ b/doc/encoders.texi
@@ -1918,7 +1918,17 @@ Currently supports the following options.
@table @option
@item 0
No temporal layering flags are provided internally,
-relies on flags being passed in using metadata in AVFrame.
+relies on flags being passed in using @code{metadata} field in @code{AVFrame}
+with following keys.
+@table @option
+@item vp8-flags
+Sets the flags passed into the encoder to indicate the referencing scheme for
+the current frame.
+Refer to function @code{vpx_codec_encode} in @code{vpx/vpx_encoder.h} for more
+details.
+@item temporal_id
+Explicitly sets the temporal id of the current frame to encode.
+@end table
@item 2
Two temporal layers. 0-1...
@item 3
diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c
index d522c43928..60a858853d 100644
--- a/libavcodec/libvpxenc.c
+++ b/libavcodec/libvpxenc.c
@@ -1519,11 +1519,22 @@ static int vpx_encode(AVCodecContext *avctx, AVPacket *pkt,
#endif
if (frame->pict_type == AV_PICTURE_TYPE_I)
flags |= VPX_EFLAG_FORCE_KF;
- if (CONFIG_LIBVPX_VP8_ENCODER && avctx->codec_id == AV_CODEC_ID_VP8 && frame->metadata) {
+ if (frame->metadata) {
AVDictionaryEntry* en = av_dict_get(frame->metadata, "vp8-flags", NULL, 0);
if (en) {
flags |= strtoul(en->value, NULL, 10);
}
+
+ memset(&layer_id, 0, sizeof(layer_id));
+
+ en = av_dict_get(frame->metadata, "temporal_id", NULL, 0);
+ if (en) {
+ layer_id.temporal_layer_id = strtoul(en->value, NULL, 10);
+#ifdef VPX_CTRL_VP9E_SET_MAX_INTER_BITRATE_PCT
+ layer_id.temporal_layer_id_per_spatial[0] = layer_id.temporal_layer_id;
+#endif
+ layer_id_valid = 1;
+ }
}
if (sd) {
diff --git a/libavcodec/version.h b/libavcodec/version.h
index bc6630ea42..6bf2a05145 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -29,7 +29,7 @@
#define LIBAVCODEC_VERSION_MAJOR 58
#define LIBAVCODEC_VERSION_MINOR 68
-#define LIBAVCODEC_VERSION_MICRO 101
+#define LIBAVCODEC_VERSION_MICRO 102
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
LIBAVCODEC_VERSION_MINOR, \