In order for rate control to correctly allocate bitrate to each temporal
layer, correct temporal layer id has to be set to each frame. This
commit provides the ability to set correct temporal layer id for each
frame.
---
libavcodec/libvpxenc.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c
index 94af783c4d..3dcf9258cd 100644
--- a/libavcodec/libvpxenc.c
+++ b/libavcodec/libvpxenc.c
@@ -1527,11 +1527,20 @@ 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(vpx_svc_layer_id_t));
+
+ en = av_dict_get(frame->metadata, "temporal_id", NULL, 0);
+ if (en) {
+ layer_id.temporal_layer_id = strtoul(en->value, NULL, 10);
+ layer_id.temporal_layer_id_per_spatial[0] =
layer_id.temporal_layer_id;
+ layer_id_valid = 1;
+ }
}
if (sd) {
--
2.24.1.735.g03f4e72817-goog
_______________________________________________
ffmpeg-devel mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".