Message ID | 20191216222326.71646-1-wonkap@google.com |
---|---|
State | New |
Headers | show |
On Mon, Dec 16, 2019 at 02:23:26PM -0800, Wonkap Jang wrote: > 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(-) breaks build CC libavcodec/libvpxenc.o libavcodec/libvpxenc.c: In function ‘vpx_encode’: libavcodec/libvpxenc.c:1368:21: error: ‘layer_id’ undeclared (first use in this function) memset(&layer_id, 0, sizeof(vpx_svc_layer_id_t)); ^ libavcodec/libvpxenc.c:1368:21: note: each undeclared identifier is reported only once for each function it appears in libavcodec/libvpxenc.c:1374:17: error: ‘layer_id_valid’ undeclared (first use in this function) layer_id_valid = 1; ^ make: *** [libavcodec/libvpxenc.o] Error 1 [...]
Thank you Michael, There is a dependency between this patch and the one before it. I will send out a new patch with both on the same branch as PATCH 1/2 and 2/2. Thank you~ Wonkap On Tue, Dec 17, 2019 at 12:08 PM Michael Niedermayer <michael@niedermayer.cc> wrote: > On Mon, Dec 16, 2019 at 02:23:26PM -0800, Wonkap Jang wrote: > > 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(-) > > breaks build > CC libavcodec/libvpxenc.o > libavcodec/libvpxenc.c: In function ‘vpx_encode’: > libavcodec/libvpxenc.c:1368:21: error: ‘layer_id’ undeclared (first use in > this function) > memset(&layer_id, 0, sizeof(vpx_svc_layer_id_t)); > ^ > libavcodec/libvpxenc.c:1368:21: note: each undeclared identifier is > reported only once for each function it appears in > libavcodec/libvpxenc.c:1374:17: error: ‘layer_id_valid’ undeclared (first > use in this function) > layer_id_valid = 1; > ^ > make: *** [libavcodec/libvpxenc.o] Error 1 > > [...] > > -- > Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB > > It is what and why we do it that matters, not just one of them. > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
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) {