summaryrefslogtreecommitdiff
path: root/libavcodec/h264_picture.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2020-03-10 18:26:00 +0100
committerAnton Khirnov <anton@khirnov.net>2020-05-25 11:59:42 +0200
commit064b875e894f45ea9e0426696559645d87af0bc3 (patch)
tree05d5fbe353f5f60f46f6d4eefb242dacb5acbc17 /libavcodec/h264_picture.c
parent37140ebd87f549eae86a5b548d717a1e97203dd6 (diff)
h264dec: support exporting QP tables through the AVVideoEncParams API
Diffstat (limited to 'libavcodec/h264_picture.c')
-rw-r--r--libavcodec/h264_picture.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/libavcodec/h264_picture.c b/libavcodec/h264_picture.c
index 2113947d1d..eec5e9fb9a 100644
--- a/libavcodec/h264_picture.c
+++ b/libavcodec/h264_picture.c
@@ -54,6 +54,7 @@ void ff_h264_unref_picture(H264Context *h, H264Picture *pic)
av_buffer_unref(&pic->qscale_table_buf);
av_buffer_unref(&pic->mb_type_buf);
+ av_buffer_unref(&pic->pps_buf);
for (i = 0; i < 2; i++) {
av_buffer_unref(&pic->motion_val_buf[i]);
av_buffer_unref(&pic->ref_index_buf[i]);
@@ -77,12 +78,14 @@ int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src)
dst->qscale_table_buf = av_buffer_ref(src->qscale_table_buf);
dst->mb_type_buf = av_buffer_ref(src->mb_type_buf);
- if (!dst->qscale_table_buf || !dst->mb_type_buf) {
+ dst->pps_buf = av_buffer_ref(src->pps_buf);
+ if (!dst->qscale_table_buf || !dst->mb_type_buf || !dst->pps_buf) {
ret = AVERROR(ENOMEM);
goto fail;
}
dst->qscale_table = src->qscale_table;
dst->mb_type = src->mb_type;
+ dst->pps = src->pps;
for (i = 0; i < 2; i++) {
dst->motion_val_buf[i] = av_buffer_ref(src->motion_val_buf[i]);
@@ -120,6 +123,9 @@ int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src)
dst->recovered = src->recovered;
dst->invalid_gap = src->invalid_gap;
dst->sei_recovery_frame_cnt = src->sei_recovery_frame_cnt;
+ dst->mb_width = src->mb_width;
+ dst->mb_height = src->mb_height;
+ dst->mb_stride = src->mb_stride;
return 0;
fail: